KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > editor2d > ViewerManager


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: 28.04.2005 </p>
6  * <p> Author: Daniel Mazurek </p>
7 **/

8 package com.nightlabs.editor2d;
9
10 import java.util.ArrayList JavaDoc;
11 import java.util.Iterator JavaDoc;
12 import java.util.List JavaDoc;
13
14 import org.apache.log4j.Logger;
15 import org.eclipse.draw2d.FigureCanvas;
16 import org.eclipse.draw2d.MouseMotionListener;
17 import org.eclipse.draw2d.Viewport;
18 import org.eclipse.draw2d.geometry.Point;
19 import org.eclipse.gef.EditPart;
20 import org.eclipse.gef.RootEditPart;
21 import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
22 import org.eclipse.jface.action.IStatusLineManager;
23
24 import com.nightlabs.editor2d.edit.AbstractDrawComponentEditPart;
25 import com.nightlabs.editor2d.util.EditorUtil;
26
27
28 public class ViewerManager
29 {
30   public static final Logger LOGGER = Logger.getLogger(ViewerManager.class);
31   
32   protected ScrollingGraphicalViewer viewer;
33   protected Viewport viewport;
34   protected Point mousePoint;
35   protected RootEditPart root;
36   protected IStatusLineManager statusLineMan;
37   public ViewerManager(ScrollingGraphicalViewer viewer, IStatusLineManager statusLineMan)
38   {
39     super();
40     this.viewer = viewer;
41     this.statusLineMan = statusLineMan;
42     root = viewer.getRootEditPart();
43     FigureCanvas canvas = (FigureCanvas) viewer.getControl();
44     viewport = canvas.getViewport();
45     viewport.addMouseMotionListener(mouseListener);
46     mousePoint = new Point();
47     initExcludeList();
48   }
49   
50   protected List JavaDoc excludeList;
51   protected void initExcludeList()
52   {
53     excludeList = new ArrayList JavaDoc();
54     LOGGER.debug("root = "+root);
55     excludeList.add(root);
56     for (Iterator JavaDoc it = root.getChildren().iterator(); it.hasNext(); ) {
57       EditPart layer = (EditPart) it.next();
58       excludeList.add(layer);
59       LOGGER.debug("root.child = "+layer);
60     }
61   }
62   
63   protected AbstractDrawComponentEditPart oldPart;
64   protected MouseMotionListener mouseListener = new MouseMotionListener.Stub()
65   {
66     public void mouseMoved(org.eclipse.draw2d.MouseEvent me)
67     {
68       mousePoint = EditorUtil.toAbsolute(root, me.x, me.y);
69       statusLineMan.setMessage("X = "+mousePoint.x+", Y = "+mousePoint.y);
70       EditPart part = viewer.findObjectAtExcluding(mousePoint, excludeList);
71       // TODO: check why Rollover for Seats doesn´t work
72
// if (part != null)
73
// {
74
// if (part instanceof AbstractDrawComponentEditPart)
75
// {
76
// AbstractDrawComponentEditPart dcPart = (AbstractDrawComponentEditPart) part;
77
// if (!dcPart.equals(oldPart)) {
78
// if (oldPart != null) {
79
// oldPart.getDrawComponent().setRenderMode(RenderModeManager.DEFAULT_MODE);
80
// oldPart.getFigure().repaint();
81
// }
82
// dcPart.getDrawComponent().setRenderMode(RenderModeManager.ROLLOVER_MODE);
83
// oldPart = dcPart;
84
// dcPart.getFigure().repaint();
85
// }
86
// }
87
// }
88
// if (oldPart != null && !oldPart.getFigure().containsPoint(mousePoint)) {
89
// oldPart.getDrawComponent().setRenderMode(RenderConstants.DEFAULT_MODE);
90
// oldPart.getFigure().repaint();
91
// oldPart = null;
92
// }
93
// LOGGER.debug("mousePoint = "+mousePoint);
94
}
95   };
96
97   
98 }
99
Popular Tags