1 package prefuse.controls; 2 3 import java.awt.event.MouseEvent ; 4 import java.awt.geom.Point2D ; 5 6 import prefuse.Display; 7 import prefuse.action.layout.Layout; 8 import prefuse.visual.VisualItem; 9 10 11 18 public class AnchorUpdateControl extends ControlAdapter { 19 20 private boolean m_anchorOverItem; 21 private Layout[] m_layouts; 22 private String m_action; 23 private Point2D m_tmp = new Point2D.Double (); 24 25 29 public AnchorUpdateControl(Layout layout) { 30 this(layout,null); 31 } 32 33 38 public AnchorUpdateControl(Layout layout, String action) { 39 this(new Layout[] {layout}, action); 40 } 41 42 49 public AnchorUpdateControl(Layout layout, String action, boolean overItem) 50 { 51 this(new Layout[] {layout}, action, overItem); 52 } 53 54 59 public AnchorUpdateControl(Layout[] layout, String action) { 60 this(layout, action, true); 61 } 62 63 70 public AnchorUpdateControl(Layout[] layout, String action, boolean overItem) 71 { 72 m_layouts = (Layout[])layout.clone(); 73 m_action = action; 74 m_anchorOverItem = overItem; 75 } 76 77 79 82 public void mouseExited(MouseEvent e) { 83 for ( int i=0; i<m_layouts.length; i++ ) 84 m_layouts[i].setLayoutAnchor(null); 85 runAction(e); 86 } 87 88 91 public void mouseMoved(MouseEvent e) { 92 moveEvent(e); 93 } 94 95 98 public void mouseDragged(MouseEvent e) { 99 moveEvent(e); 100 } 101 102 105 public void itemDragged(VisualItem item, MouseEvent e) { 106 if ( m_anchorOverItem ) moveEvent(e); 107 } 108 109 112 public void itemMoved(VisualItem item, MouseEvent e) { 113 if ( m_anchorOverItem ) moveEvent(e); 114 } 115 116 121 public void moveEvent(MouseEvent e) { 122 Display d = (Display)e.getSource(); 123 d.getAbsoluteCoordinate(e.getPoint(), m_tmp); 124 for ( int i=0; i<m_layouts.length; i++ ) 125 m_layouts[i].setLayoutAnchor(m_tmp); 126 runAction(e); 127 } 128 129 133 private void runAction(MouseEvent e) { 134 if ( m_action != null ) { 135 Display d = (Display)e.getSource(); 136 d.getVisualization().run(m_action); 137 } 138 } 139 140 } | Popular Tags |