| 1 8 package com.nightlabs.editor2d; 9 10 import java.util.ArrayList ; 11 import java.util.Iterator ; 12 import java.util.List ; 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 excludeList; 51 protected void initExcludeList() 52 { 53 excludeList = new ArrayList (); 54 LOGGER.debug("root = "+root); 55 excludeList.add(root); 56 for (Iterator 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 } 95 }; 96 97 98 } 99 | Popular Tags |