package prefuse.demos.applets; import java.awt.Color; import java.awt.Dimension; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JSplitPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import prefuse.Display; import prefuse.Visualization; import prefuse.action.ActionList; import prefuse.action.RepaintAction; import prefuse.action.assignment.ColorAction; import prefuse.action.filter.GraphDistanceFilter; import prefuse.action.layout.graph.ForceDirectedLayout; import prefuse.activity.Activity; import prefuse.controls.DragControl; import prefuse.controls.FocusControl; import prefuse.controls.NeighborHighlightControl; import prefuse.controls.PanControl; import prefuse.controls.WheelZoomControl; import prefuse.controls.ZoomControl; import prefuse.controls.ZoomToFitControl; import prefuse.data.Graph; import prefuse.data.Tuple; import prefuse.data.event.TupleSetListener; import prefuse.data.io.GraphMLReader; import prefuse.data.tuple.TupleSet; import prefuse.render.DefaultRendererFactory; import prefuse.render.TextItemRenderer; import prefuse.util.ColorLib; import prefuse.util.GraphLib; import prefuse.util.PrefuseLib; import prefuse.util.force.ForceSimulator; import prefuse.util.ui.JForcePanel; import prefuse.util.ui.JPrefuseApplet; import prefuse.util.ui.JValueSlider; import prefuse.util.ui.UILib; import prefuse.visual.NodeItem; import prefuse.visual.VisualGraph; import prefuse.visual.VisualItem; /** * @author jeffrey heer */ public class GraphView extends JPrefuseApplet { private static final String graph = "graph"; private static final String nodes = "graph.nodes"; private static final String edges = "graph.edges"; public void init() { UILib.setPlatformLookAndFeel(); JComponent graphview = demo("/socialnet.xml", "name"); this.getContentPane().add(graphview); } public static JComponent demo(String datafile, String label) { Graph g = null; if ( datafile == null ) { g = GraphLib.getGrid(15,15); } else { try { g = new GraphMLReader().readGraph(datafile); } catch ( Exception e ) { e.printStackTrace(); System.exit(1); } } return demo(g, label); } public static JComponent demo(Graph g, String label) { // create a new, empty visualization for our data final Visualization vis = new Visualization(); VisualGraph vg = vis.addGraph(graph, g); vis.setValue(edges, null, VisualItem.INTERACTIVE, Boolean.FALSE); TupleSet focusGroup = vis.getGroup(Visualization.FOCUS_ITEMS); focusGroup.addTupleSetListener(new TupleSetListener() { public void tupleSetChanged(TupleSet ts, Tuple[] add, Tuple[] rem) { for ( int i=0; i