]> Creatis software - bbtkGEditor.git/blob - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/GObjectsMVCFactory.cxx
Bug #1760
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / GObjectsMVCFactory.cxx
1 /*=========================================================================                                                                               
2 Program:   bbtk
3 Module:    $RCSfile$
4 Language:  C++
5 Date:      $Date$
6 Version:   $Revision$
7 =========================================================================*/
8
9 /* ---------------------------------------------------------------------
10
11 * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
12 * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
13 *
14 *  This software is governed by the CeCILL-B license under French law and 
15 *  abiding by the rules of distribution of free software. You can  use, 
16 *  modify and/ or redistribute the software under the terms of the CeCILL-B 
17 *  license as circulated by CEA, CNRS and INRIA at the following URL 
18 *  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
19 *  or in the file LICENSE.txt.
20 *
21 *  As a counterpart to the access to the source code and  rights to copy,
22 *  modify and redistribute granted by the license, users are provided only
23 *  with a limited warranty  and the software's author,  the holder of the
24 *  economic rights,  and the successive licensors  have only  limited
25 *  liability. 
26 *
27 *  The fact that you are presently reading this means that you have had
28 *  knowledge of the CeCILL-B license and that you accept its terms.
29 * ------------------------------------------------------------------------ */                                                                         
30
31 /**
32 *  \file 
33 *  \brief Class bbtk::GObjectsMVCFactory 
34 */
35
36
37 #include "GObjectsMVCFactory.h"
38
39 namespace bbtk
40 {
41
42
43         //=========================================================================
44
45         GObjectsMVCFactory* GObjectsMVCFactory:: instance = NULL;
46         GObjectsMVCFactory::GObjectsMVCFactory()
47         {
48         }
49
50         //=========================================================================
51         GObjectsMVCFactory::~GObjectsMVCFactory()
52         {
53                 GObjectsMVCFactory::destroyInstance();
54         }
55         //=========================================================================
56
57                 
58         //=========================================================================
59         GObjectsMVCFactory* GObjectsMVCFactory :: getInstance()
60         {
61                 if(instance == NULL){
62                         instance = new GObjectsMVCFactory();
63                 }
64                 return instance;
65         }
66
67         //=========================================================================
68
69         void GObjectsMVCFactory :: destroyInstance()
70         {
71                 //FCY memory leaks
72                 delete instance;
73                 instance=NULL;
74         }
75
76         //=========================================================================
77
78         vtkGObjectView* GObjectsMVCFactory :: createGObjectView(int type)
79         {
80                 vtkGObjectView* view = NULL;
81                 if (type == GBLACKBOX)
82                 {
83                         view = new vtkGBlackBoxView();
84                 }
85                 else if(type == GPORT)
86                 {
87                         view = new vtkGPortView();
88                 }
89                 else if(type == GCOMPLEXINPUTPORT || type == GCOMPLEXOUTPUTPORT)
90                 {
91                         view = new vtkGComplexBoxPortView();
92                 }
93                 return view;
94         }
95
96         //=========================================================================
97
98         GObjectController* GObjectsMVCFactory :: createGObjectController(int type)
99         {
100                 GObjectController *controller = NULL;
101                 if (type == GBLACKBOX)
102                 {
103                         controller = new GBlackBoxController();
104                 }
105                 else if(type == GPORT)
106                 {
107                         controller = new GPortController();
108                 }
109                 else if(type == GCOMPLEXINPUTPORT || type == GCOMPLEXOUTPUTPORT)
110                 {
111                         controller = new GBoxController();
112                 }
113                 return controller;
114         }
115
116         //=========================================================================
117         
118         GObjectModel* GObjectsMVCFactory :: createGObjectModel(int type)
119         {
120                 GObjectModel *model = NULL;
121                 if (type == GBLACKBOX)
122                 {
123                         model = new GBlackBoxModel();
124                 }
125                 else if(type == GPORT)
126                 {
127                         model = new GPortModel();
128                 }
129                 else if(type == GCOMPLEXINPUTPORT || type == GCOMPLEXOUTPUTPORT)
130                 {
131                         model = new GComplexBoxPortModel();
132                 }
133
134                 model->setGObjectType(type);
135
136                 return model;
137         }
138
139         //=========================================================================
140
141
142 }  // EO namespace bbtk
143
144 // EOF
145