KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > editor2d > impl > MultiLayerDrawComponentImpl


1 /**
2  * <copyright>
3  * </copyright>
4  *
5  * $Id: MultiLayerDrawComponentImpl.java 1634 2005-08-26 19:26:15Z nozkiller $
6  */

7 package com.nightlabs.editor2d.impl;
8
9 import java.util.ArrayList JavaDoc;
10 import java.util.Collection JavaDoc;
11 import java.util.HashMap JavaDoc;
12 import java.util.Map JavaDoc;
13
14 import com.nightlabs.editor2d.DrawComponent;
15 import com.nightlabs.editor2d.EditorRuler;
16 import com.nightlabs.editor2d.Layer;
17 import com.nightlabs.editor2d.MultiLayerDrawComponent;
18 import com.nightlabs.editor2d.render.RenderModeManager;
19 import com.nightlabs.i18n.I18nText;
20
21 public class MultiLayerDrawComponentImpl
22 extends DrawComponentContainerImpl
23 implements MultiLayerDrawComponent
24 {
25     /**
26      * The cached value of the '{@link #getCurrentLayer() <em>Current Layer</em>}' reference.
27      * <!-- begin-user-doc -->
28    * <!-- end-user-doc -->
29      * @see #getCurrentLayer()
30      * @generated
31      * @ordered
32      */

33   protected Layer currentLayer = null;
34
35     /**
36      * The default value of the '{@link #isGridEnabled() <em>Grid Enabled</em>}' attribute.
37      * <!-- begin-user-doc -->
38    * <!-- end-user-doc -->
39      * @see #isGridEnabled()
40      * @generated
41      * @ordered
42      */

43   protected static final boolean GRID_ENABLED_EDEFAULT = false;
44
45     /**
46      * The cached value of the '{@link #isGridEnabled() <em>Grid Enabled</em>}' attribute.
47      * <!-- begin-user-doc -->
48    * <!-- end-user-doc -->
49      * @see #isGridEnabled()
50      * @generated
51      * @ordered
52      */

53   protected boolean gridEnabled = GRID_ENABLED_EDEFAULT;
54
55     /**
56      * The default value of the '{@link #isRulersEnabled() <em>Rulers Enabled</em>}' attribute.
57      * <!-- begin-user-doc -->
58    * <!-- end-user-doc -->
59      * @see #isRulersEnabled()
60      * @generated
61      * @ordered
62      */

63   protected static final boolean RULERS_ENABLED_EDEFAULT = false;
64
65     /**
66      * The cached value of the '{@link #isRulersEnabled() <em>Rulers Enabled</em>}' attribute.
67      * <!-- begin-user-doc -->
68    * <!-- end-user-doc -->
69      * @see #isRulersEnabled()
70      * @generated
71      * @ordered
72      */

73   protected boolean rulersEnabled = RULERS_ENABLED_EDEFAULT;
74
75     /**
76      * The default value of the '{@link #isSnapToGeometry() <em>Snap To Geometry</em>}' attribute.
77      * <!-- begin-user-doc -->
78    * <!-- end-user-doc -->
79      * @see #isSnapToGeometry()
80      * @generated
81      * @ordered
82      */

83   protected static final boolean SNAP_TO_GEOMETRY_EDEFAULT = false;
84
85     /**
86      * The cached value of the '{@link #isSnapToGeometry() <em>Snap To Geometry</em>}' attribute.
87      * <!-- begin-user-doc -->
88    * <!-- end-user-doc -->
89      * @see #isSnapToGeometry()
90      * @generated
91      * @ordered
92      */

93   protected boolean snapToGeometry = SNAP_TO_GEOMETRY_EDEFAULT;
94
95     /**
96      * The default value of the '{@link #getZoom() <em>Zoom</em>}' attribute.
97      * <!-- begin-user-doc -->
98    * <!-- end-user-doc -->
99      * @see #getZoom()
100      * @generated
101      * @ordered
102      */

103   protected static final double ZOOM_EDEFAULT = 0.0;
104
105     /**
106      * The cached value of the '{@link #getZoom() <em>Zoom</em>}' attribute.
107      * <!-- begin-user-doc -->
108    * <!-- end-user-doc -->
109      * @see #getZoom()
110      * @generated
111      * @ordered
112      */

113   protected double zoom = ZOOM_EDEFAULT;
114
115     /**
116      * The cached value of the '{@link #getLeftRuler() <em>Left Ruler</em>}' containment reference.
117      * <!-- begin-user-doc -->
118    * <!-- end-user-doc -->
119      * @see #getLeftRuler()
120      * @generated
121      * @ordered
122      */

123   protected EditorRuler leftRuler = null;
124
125     /**
126      * The cached value of the '{@link #getTopRuler() <em>Top Ruler</em>}' containment reference.
127      * <!-- begin-user-doc -->
128    * <!-- end-user-doc -->
129      * @see #getTopRuler()
130      * @generated
131      * @ordered
132      */

133   protected EditorRuler topRuler = null;
134
135     /**
136      * The default value of the '{@link #getLastID() <em>Last ID</em>}' attribute.
137      * <!-- begin-user-doc -->
138    * <!-- end-user-doc -->
139      * @see #getLastID()
140      * @generated
141      * @ordered
142      */

143   protected static final long LAST_ID_EDEFAULT = 0L;
144
145     /**
146      * The cached value of the '{@link #getLastID() <em>Last ID</em>}' attribute.
147      * <!-- begin-user-doc -->
148    * <!-- end-user-doc -->
149      * @see #getLastID()
150      * @generated
151      * @ordered
152      */

153   protected long lastID = LAST_ID_EDEFAULT;
154
155     /**
156      * The default value of the '{@link #getClass2DrawComponents() <em>Class2 Draw Components</em>}' attribute.
157      * <!-- begin-user-doc -->
158      * <!-- end-user-doc -->
159      * @see #getClass2DrawComponents()
160      *
161      * @ordered
162      */

163     protected static final Map JavaDoc CLASS2_DRAW_COMPONENTS_EDEFAULT = null;
164
165     /**
166      * The cached value of the '{@link #getClass2DrawComponents() <em>Class2 Draw Components</em>}' attribute.
167      * <!-- begin-user-doc -->
168      * <!-- end-user-doc -->
169      * @see #getClass2DrawComponents()
170      * @generated
171      * @ordered
172      */

173     protected transient Map JavaDoc class2DrawComponents = CLASS2_DRAW_COMPONENTS_EDEFAULT;
174
175   /**
176    * <!-- begin-user-doc -->
177    * <!-- end-user-doc -->
178    *
179    */

180   public MultiLayerDrawComponentImpl() {
181     super();
182     // TODO: check if this was unnecessary
183
setRenderModeManager(new RenderModeManager());
184   }
185
186     /**
187      * <!-- begin-user-doc -->
188    * <!-- end-user-doc -->
189      * @generated
190      */

191   public Layer getCurrentLayer() {
192         return currentLayer;
193     }
194
195     /**
196      * <!-- begin-user-doc -->
197    * <!-- end-user-doc -->
198      * @generated
199      */

200   public void setCurrentLayer(Layer newCurrentLayer)
201   {
202         Layer oldCurrentLayer = currentLayer;
203         currentLayer = newCurrentLayer;
204         firePropertyChange(PROP_CURRENT_LAYER, oldCurrentLayer, currentLayer);
205     }
206
207     /**
208      * <!-- begin-user-doc -->
209    * <!-- end-user-doc -->
210      * @generated
211      */

212   public boolean isGridEnabled() {
213         return gridEnabled;
214     }
215
216     /**
217      * <!-- begin-user-doc -->
218    * <!-- end-user-doc -->
219      * @generated
220      */

221   public void setGridEnabled(boolean newGridEnabled) {
222         gridEnabled = newGridEnabled;
223     }
224
225     /**
226      * <!-- begin-user-doc -->
227    * <!-- end-user-doc -->
228      * @generated
229      */

230   public boolean isRulersEnabled() {
231         return rulersEnabled;
232     }
233
234     /**
235      * <!-- begin-user-doc -->
236    * <!-- end-user-doc -->
237      * @generated
238      */

239   public void setRulersEnabled(boolean newRulersEnabled) {
240         rulersEnabled = newRulersEnabled;
241     }
242
243     /**
244      * <!-- begin-user-doc -->
245    * <!-- end-user-doc -->
246      * @generated
247      */

248   public boolean isSnapToGeometry() {
249         return snapToGeometry;
250     }
251
252     /**
253      * <!-- begin-user-doc -->
254    * <!-- end-user-doc -->
255      * @generated
256      */

257   public void setSnapToGeometry(boolean newSnapToGeometry) {
258         snapToGeometry = newSnapToGeometry;
259     }
260
261     /**
262      * <!-- begin-user-doc -->
263    * <!-- end-user-doc -->
264      * @generated
265      */

266   public double getZoom() {
267         return zoom;
268     }
269
270     /**
271      * <!-- begin-user-doc -->
272    * <!-- end-user-doc -->
273      * @generated
274      */

275   public void setZoom(double newZoom) {
276         zoom = newZoom;
277     }
278
279     /**
280      * <!-- begin-user-doc -->
281    * <!-- end-user-doc -->
282      * @generated
283      */

284   public EditorRuler getLeftRuler() {
285         return leftRuler;
286     }
287
288     /**
289      * <!-- begin-user-doc -->
290    * <!-- end-user-doc -->
291      * @generated
292      */

293   public void setLeftRuler(EditorRuler newLeftRuler) {
294     leftRuler = newLeftRuler;
295     }
296
297     /**
298      * <!-- begin-user-doc -->
299    * <!-- end-user-doc -->
300      * @generated
301      */

302   public EditorRuler getTopRuler() {
303         return topRuler;
304     }
305
306     /**
307      * <!-- begin-user-doc -->
308    * <!-- end-user-doc -->
309      * @generated
310      */

311   public void setTopRuler(EditorRuler newTopRuler) {
312     topRuler = newTopRuler;
313     }
314
315     /**
316      * <!-- begin-user-doc -->
317    * <!-- end-user-doc -->
318      * @generated
319      */

320   public long getLastID() {
321         return lastID;
322     }
323
324     /**
325      * <!-- begin-user-doc -->
326      * <!-- end-user-doc -->
327      * @generated
328      */

329     public void setLastID(long newLastID) {
330         lastID = newLastID;
331     }
332
333     /**
334      * <!-- begin-user-doc -->
335      * <!-- end-user-doc -->
336      *
337      */

338     public Map JavaDoc getClass2DrawComponents()
339     {
340         if (class2DrawComponents == null)
341             class2DrawComponents = new HashMap JavaDoc();
342                 
343         return class2DrawComponents;
344     }
345
346     /**
347      * <!-- begin-user-doc -->
348      * <!-- end-user-doc -->
349      * @generated
350      */

351     public void setClass2DrawComponents(Map JavaDoc newClass2DrawComponents) {
352         class2DrawComponents = newClass2DrawComponents;
353     }
354
355     /**
356      * <!-- begin-user-doc -->
357      * <!-- end-user-doc -->
358      *
359      */

360     public Map JavaDoc getId2DrawComponent()
361     {
362         if (id2DrawComponent == null)
363             id2DrawComponent = new HashMap JavaDoc();
364         
365         return id2DrawComponent;
366     }
367
368     /**
369      * <!-- begin-user-doc -->
370      * <!-- end-user-doc -->
371      * @generated
372      */

373     public void setId2DrawComponent(Map JavaDoc newId2DrawComponent) {
374         id2DrawComponent = newId2DrawComponent;
375     }
376
377   /**
378    * <!-- begin-user-doc -->
379    * <!-- end-user-doc -->
380    *
381    */

382   public long nextID() {
383     return ++lastID;
384   }
385
386   
387   /**
388    * <!-- begin-user-doc -->
389    * <!-- end-user-doc -->
390    *
391    */

392   public DrawComponent getDrawComponent(long id) {
393     return (DrawComponent) getId2DrawComponent().get(new Long JavaDoc(id));
394   }
395
396   public void registerDrawComponent(DrawComponent drawComponent)
397   {
398     lastID = nextID();
399     drawComponent.setId(lastID);
400     getId2DrawComponent().put(new Long JavaDoc(lastID), drawComponent);
401     
402     // TODO: check for Interfaces and put
403
// maps an id to the corresponding DrawComponent of this specific class (=type)
404
Class JavaDoc dcClass = drawComponent.getClass();
405     Collection JavaDoc typeCollection = null;
406     if (!getClass2DrawComponents().containsKey(dcClass))
407     {
408       typeCollection = new ArrayList JavaDoc();
409       typeCollection.add(drawComponent);
410       getClass2DrawComponents().put(dcClass, typeCollection);
411 // getPropertyChangeSupport().firePropertyChange(TYPE_ADDED, null, dcClass);
412
}
413     else if (getClass2DrawComponents().containsKey(dcClass))
414     {
415       typeCollection = (Collection JavaDoc) getClass2DrawComponents().get(dcClass);
416       typeCollection.add(drawComponent);
417     }
418
419     // TODO: very dirty way, because depends on implementation of I18nTextBuffer
420
if (drawComponent.getName() == I18nText.DEFAULT_LANGUAGEID && typeCollection != null) {
421       drawComponent.setName(drawComponent.getTypeName() + " " + typeCollection.size());
422     }
423   }
424     
425   public void unregisterDrawComponent(DrawComponent drawComponent)
426   {
427     getId2DrawComponent().remove(new Long JavaDoc(drawComponent.getId()));
428     
429     Class JavaDoc dcClass = drawComponent.getClass();
430     if (getClass2DrawComponents().containsKey(dcClass)) {
431       Collection JavaDoc typeCollection = (Collection JavaDoc) getClass2DrawComponents().get(dcClass);
432       typeCollection.remove(drawComponent);
433     }
434   }
435   
436   public void unregisterDrawComponent(long id)
437   {
438     DrawComponent dc = (DrawComponent) getId2DrawComponent().remove(new Long JavaDoc(id));
439     
440     Class JavaDoc dcClass = dc.getClass();
441     if (getClass2DrawComponents().containsKey(dcClass)) {
442       Collection JavaDoc typeCollection = (Collection JavaDoc) getClass2DrawComponents().get(dcClass);
443       typeCollection.remove(dc);
444     }
445   }
446
447     /**
448      * <!-- begin-user-doc -->
449    * <!-- end-user-doc -->
450      * @generated
451      */

452   public String JavaDoc toString()
453   {
454         StringBuffer JavaDoc result = new StringBuffer JavaDoc(super.toString());
455         result.append(" (gridEnabled: ");
456         result.append(gridEnabled);
457         result.append(", rulersEnabled: ");
458         result.append(rulersEnabled);
459         result.append(", snapToGeometry: ");
460         result.append(snapToGeometry);
461         result.append(", zoom: ");
462         result.append(zoom);
463         result.append(", lastID: ");
464         result.append(lastID);
465         result.append(", class2DrawComponents: ");
466         result.append(class2DrawComponents);
467         result.append(", id2DrawComponent: ");
468         result.append(id2DrawComponent);
469         result.append(')');
470         return result.toString();
471     }
472
473     protected transient Map JavaDoc id2DrawComponent = null;
474       
475   public Collection JavaDoc getDrawComponents(Class JavaDoc type)
476   {
477     if (getClass2DrawComponents().containsKey(type)) {
478       return (Collection JavaDoc) getClass2DrawComponents().get(type);
479     }
480     return null;
481   }
482   
483 } //MultiLayerDrawComponentImpl
484
Popular Tags