@@ DEV @@ : Try to use Java MVC for graphics component.
[scilab.git] / scilab / modules / graphic_objects / src / java / org / scilab / modules / graphic_objects / graphicModel / GraphicModel.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 package org.scilab.modules.graphic_objects.graphicModel;
14
15 import java.rmi.server.UID;
16 import java.util.HashMap;
17 import java.util.Map;
18
19 import org.scilab.modules.graphic_objects.arc.Arc;
20 import org.scilab.modules.graphic_objects.axes.*;
21 import org.scilab.modules.graphic_objects.axis.Axis;
22 import org.scilab.modules.graphic_objects.compound.Compound;
23 import org.scilab.modules.graphic_objects.fec.Fec;
24 import org.scilab.modules.graphic_objects.figure.Figure;
25 import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
26 import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
27 import org.scilab.modules.graphic_objects.imageplot.Grayplot;
28 import org.scilab.modules.graphic_objects.imageplot.Matplot;
29 import org.scilab.modules.graphic_objects.label.Label;
30 import org.scilab.modules.graphic_objects.legend.Legend;
31 import org.scilab.modules.graphic_objects.polyline.Polyline;
32 import org.scilab.modules.graphic_objects.rectangle.Rectangle;
33 import org.scilab.modules.graphic_objects.surface.*;
34 import org.scilab.modules.graphic_objects.textObject.Text;
35 import org.scilab.modules.graphic_objects.vectfield.Champ;
36 import org.scilab.modules.graphic_objects.vectfield.Segs;
37
38 //import demo.mvc.model.INetworkObject.Type;
39
40
41 /**
42  * GraphicModel class
43  * @author Bruno JOFRET
44  */
45 public class GraphicModel {
46
47     private Map<String, GraphicObject> allObjects = new HashMap<String, GraphicObject>();
48
49     private static GraphicModel me = null;
50
51     /**
52      * Default constructor
53      */
54     private GraphicModel() { }
55
56     /**
57      * Returns the model
58      * @return the model
59      */
60     public static GraphicModel getModel() {
61         if (me == null) {
62                 me = new GraphicModel();
63         }
64
65         return me;
66     }
67
68     /**
69      * @param id the id of the object to get
70      * @return the object
71      */
72     public Object getObjectFromId(String id) {
73         return allObjects.get(id);
74     }
75
76     /**
77      * Returns a null property
78      * @param id the id of the object
79      * @param property the property name
80      * @return the property
81      */
82     public Object getNullProperty(String id, String property){
83         GraphicObject object = allObjects.get(id);
84         return object.getNullProperty(property);
85     }
86
87     /**
88      * Returns a property
89      * @param id the id of the object
90      * @param property the property name 
91      * @return the property value
92      */
93     public Object getProperty(String id, String property) {
94         GraphicObject object = allObjects.get(id);
95         return object.getProperty(property);
96     }
97
98     /**
99      * Sets a property
100      * @param id object id
101      * @param property property name
102      * @param value property value
103      */
104     public void setProperty(String id, String property, Object value) {
105         GraphicObject object = allObjects.get(id);
106         object.setProperty(property, value);
107     }
108
109     /**
110      * Fast property get
111      * @param id object id
112      * @param property property name
113      * @return property value
114      */
115     public Object getPropertyFast(String id, String property) {
116         GraphicObject object = allObjects.get(id);
117         Object propertyType = object.getPropertyFromName(property);
118         return object.getPropertyFast(propertyType);
119     }
120
121     /**
122      * Fast property set
123      * @param id object id
124      * @param property name
125      * @param value property value
126      */
127     public void setPropertyFast(String id, String property, Object value) {
128         GraphicObject object = allObjects.get(id);
129         Object propertyType = object.getPropertyFromName(property);
130         object.setPropertyFast(propertyType, value);
131     }
132
133     /**
134      * Creates an object
135      * @param id object id
136      * @param type object type
137      * @return the created object's id
138      */
139     public String createObject(String id, GraphicObject.Type type) {
140         GraphicObject object = createTypedObject(type);
141
142         if (object != null) {
143                 allObjects.put(id, object);
144                 object.setIdentifier(id);
145                 
146                 return id;
147         } else {
148                 return null;
149         }
150     }
151
152     /**
153      * Creates a typed object
154      * @param type the object type
155      * @return the created typed object
156      */
157     private GraphicObject createTypedObject(Type type) {
158                 switch (type) {
159
160                 case ARC:
161                         return new Arc();
162                 case AXES:
163                         return new Axes();
164                 case AXIS:
165                         return new Axis();
166                 case CHAMP:
167                         return new Champ();
168                 case COMPOUND:
169                         return new Compound();
170                 case FAC3D:
171                         return new Fac3d();
172                 case FEC:
173                         return new Fec();
174                 case FIGURE:
175                         return new Figure();
176                 case GRAYPLOT:
177                         return new Grayplot();
178                 case LABEL:
179                         return new Label();
180                 case LEGEND:
181                         return new Legend();
182                 case MATPLOT:
183                         return new Matplot();
184                 case PLOT3D:
185                         return new Plot3d();
186                 case POLYLINE:
187                         return new Polyline();
188                 case RECTANGLE:
189                         return new Rectangle();
190                 case SEGS:
191                         return new Segs();
192                 case TEXT:
193                         return new Text();
194                 case UNKNOWNOBJECT:
195                         return null;
196                 default:
197                     return null;
198                 }
199     }
200
201     /**
202      * Deletes an object
203      * @param id object id
204      */
205     public void deleteObject(String id) {
206         allObjects.remove(id);
207     }
208
209 }