KickJava   Java API By Example, From Geeks To Geeks.

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


1 /* *****************************************************************************
2  * NightLabs Editor2D - Graphical editor framework *
3  * Copyright (C) 2004-2005 NightLabs - http://NightLabs.org *
4  * Project author: Daniel Mazurek <Daniel.Mazurek [at] nightlabs [dot] org> *
5  * *
6  * This library is free software; you can redistribute it and/or *
7  * modify it under the terms of the GNU Lesser General Public *
8  * License as published by the Free Software Foundation; either *
9  * version 2.1 of the License, or (at your option) any later version. *
10  * *
11  * This library is distributed in the hope that it will be useful, *
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
14  * Lesser General Public License for more details. *
15  * *
16  * You should have received a copy of the GNU Lesser General Public *
17  * License along with this library; if not, write to the *
18  * Free Software Foundation, Inc., *
19  * 51 Franklin St, Fifth Floor, *
20  * Boston, MA 02110-1301 USA *
21  * *
22  * Or get it online : *
23  * http://www.gnu.org/copyleft/lesser.html *
24  * *
25  * *
26  ******************************************************************************/

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