KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > nightlabs > editor2d > viewer > AbstractMouseManager


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

26
27 package org.nightlabs.editor2d.viewer;
28
29 import java.awt.Point JavaDoc;
30 import java.util.ArrayList JavaDoc;
31 import java.util.Collection JavaDoc;
32 import java.util.Iterator JavaDoc;
33
34 import org.apache.log4j.Logger;
35 import org.eclipse.swt.widgets.Display;
36 import org.nightlabs.editor2d.viewer.event.IMouseChangedListener;
37 import org.nightlabs.editor2d.viewer.event.MouseEvent;
38 import org.nightlabs.editor2d.viewer.event.MouseListener;
39 import org.nightlabs.editor2d.viewer.event.MouseMoveListener;
40
41 public abstract class AbstractMouseManager
42 implements IMouseManager
43 {
44     public static final Logger LOGGER = Logger.getLogger(AbstractMouseManager.class);
45     
46     public AbstractMouseManager(IViewer viewer)
47     {
48         super();
49         this.viewer = viewer;
50     }
51     
52     protected IViewer viewer;
53     public IViewer getViewer() {
54         return viewer;
55     }
56     
57 // protected double zoom = 1.0d;
58
// protected IZoomListener zoomListener = new IZoomListener()
59
// {
60
// public void zoomChanged(double zoom) {
61
// AbstractMouseManager.this.zoom = zoom;
62
// }
63
// };
64
// public IZoomListener getZoomListener() {
65
// return zoomListener;
66
// }
67
// public double getZoom() {
68
// return zoom;
69
// }
70

71     public double getZoom() {
72         return getViewer().getZoom();
73     }
74     
75     protected int getAbsoluteScrollOffsetX() {
76         return getViewer().getViewport().getOffsetX();
77     }
78     
79     protected int getAbsoluteScrollOffsetY() {
80         return getViewer().getViewport().getOffsetY();
81     }
82     
83     protected int getRelativeScrollOffsetX() {
84         return (int) Math.rint(getAbsoluteScrollOffsetX() / getZoom());
85     }
86
87     protected int getRelativeScrollOffsetY() {
88         return (int) Math.rint(getAbsoluteScrollOffsetY() / getZoom());
89     }
90         
91     protected int x = 0;
92     protected int y = 0;
93     
94     public int getRelativeX() {
95         return ((int) Math.rint(x / getZoom())) + getRelativeScrollOffsetX();
96     }
97     public int getRelativeY() {
98         return ((int) Math.rint(y / getZoom())) + getRelativeScrollOffsetY();
99     }
100     
101     public int getAbsoluteX() {
102         return x + getAbsoluteScrollOffsetX();
103     }
104     public int getAbsoluteY() {
105         return y + getAbsoluteScrollOffsetY();
106     }
107             
108     protected Point JavaDoc relativePoint = new Point JavaDoc(x,y);
109     public Point JavaDoc getRelativePoint()
110     {
111         relativePoint.x = getRelativeX();
112         relativePoint.y = getRelativeY();
113         return relativePoint;
114     }
115     
116     protected Point JavaDoc absolutePoint = new Point JavaDoc(x,y);
117     public Point JavaDoc getAbsolutePoint()
118     {
119         absolutePoint.x = getAbsoluteX();
120         absolutePoint.y = getAbsoluteY();
121         return absolutePoint;
122     }
123  
124     protected Collection JavaDoc mouseChangedListeners = null;
125     protected Collection JavaDoc getMouseChangedListeners()
126     {
127         if (mouseChangedListeners == null)
128             mouseChangedListeners = new ArrayList JavaDoc();
129         
130         return mouseChangedListeners;
131     }
132
133     protected void doFireMouseChanged()
134     {
135         for (Iterator JavaDoc it = getMouseChangedListeners().iterator(); it.hasNext(); ) {
136             IMouseChangedListener l = (IMouseChangedListener) it.next();
137             l.mouseChanged(getRelativePoint(), getAbsolutePoint());
138         }
139     }
140         
141     protected void fireMouseChanged()
142     {
143         Display.getDefault().asyncExec(new Runnable JavaDoc()
144         {
145             public void run() {
146                 doFireMouseChanged();
147             }
148         });
149     }
150     
151     public void addMouseChangedListener(IMouseChangedListener l) {
152         getMouseChangedListeners().add(l);
153     }
154     
155     public void removeMouseChangedListener(IMouseChangedListener l) {
156         getMouseChangedListeners().remove(l);
157     }
158         
159     protected Collection JavaDoc mouseMoveListenerer = null;
160     protected Collection JavaDoc getMouseMoveListeners()
161     {
162         if (mouseMoveListenerer == null)
163             mouseMoveListenerer = new ArrayList JavaDoc();
164         
165         return mouseMoveListenerer;
166     }
167
168     public void addMouseMoveListener(MouseMoveListener l) {
169         getMouseMoveListeners().add(l);
170     }
171     
172     public void removeMouseMoveListener(MouseMoveListener l) {
173         getMouseMoveListeners().remove(l);
174     }
175
176     protected MouseEvent mouseEvent = new MouseEvent();
177     protected void doFireMouseMoved(int x, int y, int mouseButton)
178     {
179         mouseEvent.setX(x);
180         mouseEvent.setY(y);
181         mouseEvent.setButton(mouseButton);
182         for (Iterator JavaDoc it = getMouseMoveListeners().iterator(); it.hasNext(); ) {
183             MouseMoveListener l = (MouseMoveListener) it.next();
184             l.mouseMoved(mouseEvent);
185         }
186     }
187     
188     protected void fireMouseMoved(final int x, final int y, final int mouseButton)
189     {
190         Display.getDefault().asyncExec(new Runnable JavaDoc()
191         {
192             public void run() {
193                 doFireMouseMoved(x, y, mouseButton);
194             }
195         });
196     }
197     
198     protected Collection JavaDoc mouseListeners = null;
199     protected Collection JavaDoc getMouseListeners()
200     {
201         if (mouseListeners == null)
202             mouseListeners = new ArrayList JavaDoc();
203         
204         return mouseListeners;
205     }
206
207     public void addMouseListener(MouseListener l) {
208         getMouseListeners().add(l);
209     }
210     
211     public void removeMouseListener(MouseListener l) {
212         getMouseListeners().remove(l);
213     }
214
215     protected void doFireMousePressed(int x, int y, int mouseButton)
216     {
217         mouseEvent.setX(x);
218         mouseEvent.setY(y);
219         mouseEvent.setButton(mouseButton);
220         for (Iterator JavaDoc it = getMouseListeners().iterator(); it.hasNext(); ) {
221             MouseListener l = (MouseListener) it.next();
222             l.mousePressed(mouseEvent);
223         }
224     }
225     
226     protected void fireMousePressed(final int x, final int y, final int mouseButton)
227     {
228         Display.getDefault().asyncExec(new Runnable JavaDoc()
229         {
230             public void run() {
231                 doFireMousePressed(x, y, mouseButton);
232             }
233         });
234     }
235     
236     protected void doFireMouseReleased(int x, int y, int mouseButton)
237     {
238         mouseEvent.setX(x);
239         mouseEvent.setY(y);
240         mouseEvent.setButton(mouseButton);
241         for (Iterator JavaDoc it = getMouseListeners().iterator(); it.hasNext(); ) {
242             MouseListener l = (MouseListener) it.next();
243             l.mouseReleased(mouseEvent);
244         }
245     }
246     
247     protected void fireMouseReleased(final int x, final int y, final int mouseButton)
248     {
249         Display.getDefault().asyncExec(new Runnable JavaDoc()
250         {
251             public void run() {
252                 doFireMouseReleased(x, y, mouseButton);
253             }
254         });
255     }
256     
257 // protected DrawComponent oldDC = null;
258
// protected int oldRenderMode = 0;
259
// protected void drawRollOver(DrawComponent dc)
260
// {
261
// if (!dc.equals(oldDC)) {
262
// if (oldDC != null) {
263
// oldDC.setRenderMode(oldRenderMode);
264
// getViewer().getBufferedCanvas().getTempContentManager().removeFromTempContent(oldDC);
265
// }
266
// oldDC = dc;
267
// oldRenderMode = dc.getRenderMode();
268
// dc.setRenderMode(RenderModeManager.ROLLOVER_MODE);
269
// getViewer().getBufferedCanvas().getTempContentManager().addToTempContent(dc);
270
// getViewer().getBufferedCanvas().repaint();
271
// }
272
// }
273
//
274
// protected void drawSelected(DrawComponent dc)
275
// {
276
//
277
// }
278
//
279
// protected boolean debug = false;
280
// protected boolean wasRepainted = false;
281
// protected void checkDrawComponents(int x, int y)
282
// {
283
// long startTime = 0;
284
// if (debug)
285
// startTime = System.currentTimeMillis();
286
//
287
// DrawComponent dc = getViewer().findObjectAt(x, y);
288
// if (dc != null) {
289
// drawRollOver(dc);
290
// }
291
// else {
292
// if (oldDC != null) {
293
//// if (!wasRepainted) {
294
//// oldDC.setRenderMode(oldRenderMode);
295
//// getViewer().getBufferedCanvas().repaint();
296
//// wasRepainted = true;
297
//// }
298
// }
299
// }
300
//
301
// if (debug) {
302
// long endTime = System.currentTimeMillis() - startTime;
303
// LOGGER.debug("findObject took "+endTime+" ms");
304
// }
305
// }
306

307     
308 }
309
Popular Tags