1 package prefuse.controls; 2 3 import java.awt.event.MouseEvent ; 4 import java.awt.geom.Rectangle2D ; 5 6 import prefuse.Display; 7 import prefuse.Visualization; 8 import prefuse.util.GraphicsLib; 9 import prefuse.util.display.DisplayLib; 10 import prefuse.util.ui.UILib; 11 import prefuse.visual.VisualItem; 12 13 14 21 public class ZoomToFitControl extends ControlAdapter { 22 23 private long m_duration = 2000; 24 private int m_margin = 50; 25 private int m_button = RIGHT_MOUSE_BUTTON; 26 private boolean m_zoomOverItem = true; 27 private String m_group = Visualization.ALL_ITEMS; 28 29 32 public ZoomToFitControl() { 33 } 34 35 39 public ZoomToFitControl(String group) { 40 this.m_group = group; 41 } 42 43 49 public ZoomToFitControl(int button) { 50 this.m_button = button; 51 } 52 53 60 public ZoomToFitControl(String group, int button) { 61 this.m_group = group; 62 this.m_button = button; 63 } 64 65 75 public ZoomToFitControl(String group, int margin, 76 long duration, int button) 77 { 78 this.m_group = group; 79 this.m_margin = margin; 80 this.m_duration = duration; 81 this.m_button = button; 82 } 83 84 87 public void itemClicked(VisualItem item, MouseEvent e) { 88 if ( m_zoomOverItem ) 89 mouseClicked(e); 90 } 91 92 95 public void mouseClicked(MouseEvent e) { 96 Display display = (Display)e.getComponent(); 97 if ( !display.isTranformInProgress() && 98 UILib.isButtonPressed(e, m_button) ) 99 { 100 Visualization vis = display.getVisualization(); 101 Rectangle2D bounds = vis.getBounds(m_group); 102 GraphicsLib.expand(bounds, m_margin + (int)(1/display.getScale())); 103 DisplayLib.fitViewToBounds(display, bounds, m_duration); 104 } 105 } 106 107 112 public boolean isZoomOverItem() { 113 return m_zoomOverItem; 114 } 115 116 122 public void setZoomOverItem(boolean zoomOverItem) { 123 this.m_zoomOverItem = zoomOverItem; 124 } 125 126 130 public int getMargin() { 131 return m_margin; 132 } 133 134 138 public void setMargin(int margin) { 139 this.m_margin = margin; 140 } 141 142 } | Popular Tags |