KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > editor2d > rulers > EditorRulerProvider


1 /**
2  * <p> Project: com.nightlabs.editor2d </p>
3  * <p> Copyright: Copyright (c) 2004 </p>
4  * <p> Company: NightLabs GmbH (Germany) </p>
5  * <p> Creation Date: 11.11.2004 </p>
6  * <p> Author: Daniel Mazurek </p>
7 **/

8 package com.nightlabs.editor2d.rulers;
9
10 import java.beans.PropertyChangeEvent JavaDoc;
11 import java.beans.PropertyChangeListener JavaDoc;
12 import java.util.ArrayList JavaDoc;
13 import java.util.List JavaDoc;
14
15 import org.eclipse.gef.commands.Command;
16 import org.eclipse.gef.rulers.RulerChangeListener;
17 import org.eclipse.gef.rulers.RulerProvider;
18
19 import com.nightlabs.editor2d.EditorGuide;
20 import com.nightlabs.editor2d.EditorRuler;
21 import com.nightlabs.editor2d.command.CreateGuideCommand;
22 import com.nightlabs.editor2d.command.DeleteGuideCommand;
23 import com.nightlabs.editor2d.command.MoveGuideCommand;
24
25
26 public class EditorRulerProvider
27 extends RulerProvider
28 {
29   private EditorRuler ruler;
30   private PropertyChangeListener JavaDoc rulerListener = new PropertyChangeListener JavaDoc() {
31     public void propertyChange(PropertyChangeEvent JavaDoc evt) {
32         if (evt.getPropertyName().equals(EditorRuler.PROPERTY_CHILDREN)) {
33             EditorGuide guide = (EditorGuide)evt.getNewValue();
34             if (getGuides().contains(guide)) {
35                 guide.addPropertyChangeListener(guideListener);
36             } else {
37                 guide.removePropertyChangeListener(guideListener);
38             }
39             for (int i = 0; i < listeners.size(); i++) {
40                 ((RulerChangeListener)listeners.get(i))
41                         .notifyGuideReparented(guide);
42             }
43         } else {
44             for (int i = 0; i < listeners.size(); i++) {
45                 ((RulerChangeListener)listeners.get(i))
46                         .notifyUnitsChanged(ruler.getUnit());
47             }
48         }
49     }
50   };
51   private PropertyChangeListener JavaDoc guideListener = new PropertyChangeListener JavaDoc() {
52     public void propertyChange(PropertyChangeEvent JavaDoc evt) {
53         if (evt.getPropertyName().equals(EditorGuide.PROPERTY_CHILDREN)) {
54             for (int i = 0; i < listeners.size(); i++) {
55                 ((RulerChangeListener)listeners.get(i))
56                         .notifyPartAttachmentChanged(evt.getNewValue(), evt.getSource());
57             }
58         } else {
59             for (int i = 0; i < listeners.size(); i++) {
60                 ((RulerChangeListener)listeners.get(i))
61                         .notifyGuideMoved(evt.getSource());
62             }
63         }
64     }
65   };
66
67   public EditorRulerProvider(EditorRuler ruler) {
68     this.ruler = ruler;
69     this.ruler.addPropertyChangeListener(rulerListener);
70     List JavaDoc guides = getGuides();
71     for (int i = 0; i < guides.size(); i++) {
72         ((EditorGuide)guides.get(i)).addPropertyChangeListener(guideListener);
73     }
74   }
75
76   public List JavaDoc getAttachedModelObjects(Object JavaDoc guide) {
77     return new ArrayList JavaDoc(((EditorGuide)guide).getParts());
78   }
79
80   public Command getCreateGuideCommand(int position) {
81     return new CreateGuideCommand(ruler, position);
82   }
83
84   public Command getDeleteGuideCommand(Object JavaDoc guide) {
85     return new DeleteGuideCommand((EditorGuide)guide, ruler);
86   }
87
88   public Command getMoveGuideCommand(Object JavaDoc guide, int pDelta) {
89     return new MoveGuideCommand((EditorGuide)guide, pDelta);
90   }
91
92   public int[] getGuidePositions() {
93     List JavaDoc guides = getGuides();
94     int[] result = new int[guides.size()];
95     for (int i = 0; i < guides.size(); i++) {
96         result[i] = ((EditorGuide)guides.get(i)).getPosition();
97     }
98     return result;
99   }
100
101   public Object JavaDoc getRuler() {
102     return ruler;
103   }
104
105   public int getUnit() {
106     return ruler.getUnit();
107   }
108
109   public void setUnit(int newUnit) {
110     ruler.setUnit(newUnit);
111   }
112
113   public int getGuidePosition(Object JavaDoc guide) {
114     return ((EditorGuide)guide).getPosition();
115   }
116
117   public List JavaDoc getGuides() {
118     return ruler.getGuides();
119   }
120   
121 }
122
Popular Tags