/** @param args the command line arguments */ public static void main(String[] args) { JFrame frame = new JFrame("Editing and Mouse Menu Demo"); SparseMultigraph<GraphElements.MyVertex, GraphElements.MyEdge> g = new SparseMultigraph<GraphElements.MyVertex, GraphElements.MyEdge>(); // Layout<V, E>, VisualizationViewer<V,E> // Map<GraphElements.MyVertex,Point2D> vertexLocations = new // HashMap<GraphElements.MyVertex, Point2D>(); Layout<GraphElements.MyVertex, GraphElements.MyEdge> layout = new StaticLayout(g); layout.setSize(new Dimension(300, 300)); VisualizationViewer<GraphElements.MyVertex, GraphElements.MyEdge> vv = new VisualizationViewer<GraphElements.MyVertex, GraphElements.MyEdge>(layout); vv.setPreferredSize(new Dimension(350, 350)); // Show vertex and edge labels vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller()); vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller()); // Create a graph mouse and add it to the visualization viewer EditingModalGraphMouse gm = new EditingModalGraphMouse( vv.getRenderContext(), GraphElements.MyVertexFactory.getInstance(), GraphElements.MyEdgeFactory.getInstance()); // Set some defaults for the Edges... GraphElements.MyEdgeFactory.setDefaultCapacity(192.0); GraphElements.MyEdgeFactory.setDefaultWeight(5.0); // Trying out our new popup menu mouse plugin... PopupVertexEdgeMenuMousePlugin myPlugin = new PopupVertexEdgeMenuMousePlugin(); // Add some popup menus for the edges and vertices to our mouse plugin. JPopupMenu edgeMenu = new MyMouseMenus.EdgeMenu(frame); JPopupMenu vertexMenu = new MyMouseMenus.VertexMenu(); myPlugin.setEdgePopup(edgeMenu); myPlugin.setVertexPopup(vertexMenu); gm.remove(gm.getPopupEditingPlugin()); // Removes the existing popup editing plugin gm.add(myPlugin); // Add our new plugin to the mouse vv.setGraphMouse(gm); // JFrame frame = new JFrame("Editing and Mouse Menu Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(vv); // Let's add a menu for changing mouse modes JMenuBar menuBar = new JMenuBar(); JMenu modeMenu = gm.getModeMenu(); modeMenu.setText("Mouse Mode"); modeMenu.setIcon(null); // I'm using this in a main menu modeMenu.setPreferredSize(new Dimension(80, 20)); // Change the size so I can see the text menuBar.add(modeMenu); frame.setJMenuBar(menuBar); gm.setMode(ModalGraphMouse.Mode.EDITING); // Start off in editing mode frame.pack(); frame.setVisible(true); }
private void setMouseSettings() { // mouse interaction EditingModalGraphMouse<VertexNode, EdgeLink> gm = new EditingModalGraphMouse<VertexNode, EdgeLink>(getRenderContext(), vFactory, eFactory); // Trying out our new popup menu mouse plugin... PopupMousePlugin<VertexNode, EdgeLink> myPlugin = new PopupMousePlugin<VertexNode, EdgeLink>(); gm.remove(gm.getPopupEditingPlugin()); // Removes the existing popup editing plugin gm.add(myPlugin); // Add our new plugin to the mouse // need an editing mouse that will notify when an edge is potentially created EditingNotifyingMousePlugin<VertexNode, EdgeLink> myEditor = new EditingNotifyingMousePlugin<VertexNode, EdgeLink>(); gm.add(myEditor); setGraphMouse(gm); // menu bar JMenuBar bar = new JMenuBar(); JMenu modeMenu = gm.getModeMenu(); modeMenu.setText("Mouse Mode"); modeMenu.setIcon(null); // I'm using this in a main menu modeMenu.setPreferredSize(new Dimension(200, 20)); // Change the size so I can see the text gm.setMode(ModalGraphMouse.Mode.EDITING); // Start off in editing mode JMenuItem refresh = new JMenuItem("Refresh Screen"); refresh.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent arg0) { stateChanged(null); } }); bar.add(modeMenu); bar.add(refresh); add(bar); }
@SuppressWarnings({"unchecked", "rawtypes"}) public static void main(String[] args) { final EditingGraphViewer sgv = new EditingGraphViewer(); // Layout<V, E>, VisualizationViewer<V,E> final Layout<Integer, String> layout = new StaticLayout<Integer, String>(g); layout.setSize(new Dimension(300, 300)); final VisualizationViewer<Integer, String> vv = new VisualizationViewer<Integer, String>(layout); vv.setBackground(Color.white); vv.setPreferredSize(new Dimension(350, 350)); Transformer<Integer, Paint> vertexPaint = new Transformer<Integer, Paint>() { public Paint transform(Integer i) { return (Paint) Color.WHITE; } }; vv.getRenderContext() .setVertexFillPaintTransformer((Transformer<Integer, java.awt.Paint>) vertexPaint); // Show vertex and edge labels vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<Integer>()); vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller<String>()); // Create a graph mouse and add it to the visualization viewer // Our Vertices are going to be Integer objects so we need an Integer factory EditingModalGraphMouse gm = new EditingModalGraphMouse(vv.getRenderContext(), sgv.vertexFactory, sgv.edgeFactory); vv.setGraphMouse(gm); JFrame frame = new JFrame("Editing Graph"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(vv); // =========================================================================== // Menu for changing mouse modes JMenuBar menuBar = new JMenuBar(); JMenu modeMenu = gm.getModeMenu(); modeMenu.setText("Mode"); modeMenu.setIcon(null); modeMenu.setPreferredSize(new Dimension(80, 20)); menuBar.add(modeMenu); // --------------------------------------------------------------------------- // Menu Item to compute Centrality Measures JMenu centrality = new JMenu("Centrality"); JMenuItem execB = new JMenuItem("Betweenness C."); execB.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Betweenness.compute(g); } }); centrality.add(execB); JMenuItem execC = new JMenuItem("Closeness C"); execC.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Closeness.compute(g); } }); centrality.add(execC); menuBar.add(centrality); // --------------------------------------------------------------------------- // Menu Item to change Vertices Color colorArray.add(2); JMenu selColor = new JMenu("NodeColor"); JMenuItem selBlack = new JMenuItem("black"); selBlack.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { colorArray.add(1); int v = g.getVertexCount(); for (int j = 0; j < nodeArray.size(); j++) v = v - nodeArray.get(j); int vC = g.getVertexCount(); nodeArray.add(v); SelectColor.choiceColor(1, vv, nodeArray, colorArray, vC); } }); selColor.add(selBlack); JMenuItem selGray = new JMenuItem("gray"); selGray.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { colorArray.add(0); int v = g.getVertexCount(); for (int j = 0; j < nodeArray.size(); j++) v = v - nodeArray.get(j); nodeArray.add(v); int vC = g.getVertexCount(); SelectColor.choiceColor(0, vv, nodeArray, colorArray, vC); } }); selColor.add(selGray); JMenuItem selWhite = new JMenuItem("white"); selWhite.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { colorArray.add(2); int v = g.getVertexCount(); for (int j = 0; j < nodeArray.size(); j++) v = v - nodeArray.get(j); nodeArray.add(v); int vC = g.getVertexCount(); SelectColor.choiceColor(2, vv, nodeArray, colorArray, vC); } }); selColor.add(selWhite); JMenuItem selYellow = new JMenuItem("yellow"); selYellow.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { colorArray.add(3); int v = g.getVertexCount(); for (int j = 0; j < nodeArray.size(); j++) v = v - nodeArray.get(j); nodeArray.add(v); int vC = g.getVertexCount(); SelectColor.choiceColor(3, vv, nodeArray, colorArray, vC); } }); selColor.add(selYellow); menuBar.add(selColor); // ------------------------------------------------------------------------------------ // MenuItem to save the graph as jpeg ,or eps, or to save code generation graph JMenu saveImg = new JMenu("Save"); JMenuItem saveJPG = new JMenuItem("Save as jpeg"); saveJPG.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Save.saveJpeg(vv); } }); saveImg.add(saveJPG); JMenuItem saveEPS = new JMenuItem("Save as eps"); saveEPS.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Save.saveEps(vv); } }); saveImg.add(saveEPS); JMenuItem saveCode = new JMenuItem("Save Graph Code"); saveCode.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Save.saveCode(g, colorArray, nodeArray); } }); saveImg.add(saveCode); menuBar.add(saveImg); // ------------------------------------------------------------------------------------- frame.setJMenuBar(menuBar); gm.setMode(ModalGraphMouse.Mode.EDITING); // Start off in editing mode frame.pack(); frame.setVisible(true); }