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