cz/vutbr/fit/dudka/SGVis/Visual/GraphDisplay.java

Go to the documentation of this file.
00001 package cz.vutbr.fit.dudka.SGVis.Visual;
00002 
00003 import java.awt.geom.Rectangle2D;
00004 
00005 import prefuse.Display;
00006 import prefuse.Visualization;
00007 import prefuse.action.GroupAction;
00008 import prefuse.controls.DragControl;
00009 import prefuse.controls.FocusControl;
00010 import prefuse.controls.HoverActionControl;
00011 import prefuse.controls.NeighborHighlightControl;
00012 import prefuse.controls.PanControl;
00013 import prefuse.controls.WheelZoomControl;
00014 import prefuse.controls.ZoomToFitControl;
00015 import prefuse.util.GraphicsLib;
00016 import prefuse.util.display.DisplayLib;
00017 import prefuse.visual.sort.TreeDepthItemSorter;
00018 
00024 public class GraphDisplay extends Display {
00025   private static final long serialVersionUID = 1L;
00026 
00031   public GraphDisplay(GraphView view) {
00032     super(view.getVisualization());
00033 
00034         // initialize the display
00035         setSize(600,600);
00036         setItemSorter(new TreeDepthItemSorter());
00037         addControlListener(new DragControl());
00038         addControlListener(new WheelZoomControl());
00039         addControlListener(new PanControl());
00040         addControlListener(new FocusControl(1, "filter"));
00041         addControlListener(new NeighborHighlightControl("repaint"));
00042         addControlListener(new HoverActionControl("repaint"));
00043         ZoomToFitControl zoomToFit = new ZoomToFitControl();
00044         zoomToFit.setZoomOverItem(false);
00045         addControlListener(zoomToFit);
00046         GraphNodeContextMenu nodeContextMenu = new GraphNodeContextMenu(view);
00047         addControlListener(nodeContextMenu.getControlListener());
00048 
00049         // Add "zoom to fit" as action
00050         m_vis.putAction("zoomToFit", new ZoomToFitAction("tree", this));
00051         
00052         // Make "zoom to fit" default
00053         m_vis.alwaysRunAfter("animate", "zoomToFit");
00054   }
00055 
00060   private class ZoomToFitAction extends GroupAction {
00061     private Display display;
00062     public ZoomToFitAction(String graphGroup, Display display) {
00063       super(graphGroup);
00064       this.display = display;
00065     }
00066     public void run(double frac) {
00067       Visualization vis = display.getVisualization();
00068       Rectangle2D bounds = vis.getBounds(Visualization.ALL_ITEMS);
00069       GraphicsLib.expand(bounds, 50 + (int)(1/display.getScale()));
00070       DisplayLib.fitViewToBounds(display, bounds, 500);
00071     }
00072   }
00073 
00074 }

Generated on Sat May 3 22:56:09 2008 for SGVis by  doxygen 1.5.4