/** @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); }
public GraphEditorDemo() { // create a simple graph for the demo graph = new SparseMultigraph<Sommet, Number>(); Transformer<Sommet, Paint> vertexPaint = new Transformer<Sommet, Paint>() { private final Color vert = Color.GREEN; private final Color bleu = Color.BLUE; private final Color rouge = Color.RED; public Paint transform(Sommet s) { if (s.isColoriee()) { return rouge; } else { if (s.proprietaire == 0) { return vert; } else { return bleu; } } } }; this.layout = new StaticLayout<Sommet, Number>(graph, new Dimension(600, 600)); vv = new VisualizationViewer<Sommet, Number>(layout); vv.setBackground(Color.white); vv.getRenderContext() .setVertexLabelTransformer( MapTransformer.<Sommet, String>getInstance( LazyMap.<Sommet, String>decorate( new HashMap<Sommet, String>(), new ToStringLabeller<Sommet>()))); vv.getRenderContext() .setEdgeLabelTransformer( MapTransformer.<Number, String>getInstance( LazyMap.<Number, String>decorate( new HashMap<Number, String>(), new ToStringLabeller<Number>()))); vv.setVertexToolTipTransformer(vv.getRenderContext().getVertexLabelTransformer()); vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); Container content = getContentPane(); final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv); content.add(panel); Factory<Sommet> vertexFactory = new VertexFactory(); Factory<Number> edgeFactory = new EdgeFactory(); final EditingModalGraphMouse<Sommet, Number> graphMouse = new EditingModalGraphMouse<Sommet, Number>( vv.getRenderContext(), vertexFactory, edgeFactory); // the EditingGraphMouse will pass mouse event coordinates to the // vertexLocations function to set the locations of the vertices as // they are created // graphMouse.setVertexLocations(vertexLocations); vv.setGraphMouse(graphMouse); vv.addKeyListener(graphMouse.getModeKeyListener()); graphMouse.setMode(ModalGraphMouse.Mode.CREATION); final ScalingControl scaler = new CrossoverScalingControl(); JButton plus = new JButton("+"); plus.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1.1f, vv.getCenter()); } }); JButton minus = new JButton("-"); minus.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1 / 1.1f, vv.getCenter()); } }); JToggleButton jtb = new JToggleButton("Joueur 1"); jtb.addItemListener( new ItemListener() { public void itemStateChanged(ItemEvent ev) { if (ev.getStateChange() == ItemEvent.SELECTED) { joueurcourant = 1; } else if (ev.getStateChange() == ItemEvent.DESELECTED) { joueurcourant = 0; } } }); JToggleButton jtf = new JToggleButton("Final"); jtf.addItemListener( new ItemListener() { public void itemStateChanged(ItemEvent ev) { if (ev.getStateChange() == ItemEvent.SELECTED) { etatfinal = true; } else if (ev.getStateChange() == ItemEvent.DESELECTED) { etatfinal = false; } } }); JButton att = new JButton("Attracteur Accessibilité"); minus.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { ArrayList<Sommet> vertices = (ArrayList<Sommet>) graph.getVertices(); ArrayList<Sommet> finaux = new ArrayList<Sommet>(); for (Sommet s : vertices) { if (s.isFinal) finaux.add(s); } colorierAttracteur(finaux, graph.getVertexCount()); } }); AnnotationControls<Sommet, Number> annotationControls = new AnnotationControls<Sommet, Number>(graphMouse.getAnnotatingPlugin()); JPanel controls = new JPanel(); controls.add(plus); controls.add(minus); JComboBox modeBox = graphMouse.getModeComboBox(); controls.add(modeBox); controls.add(jtb); controls.add(jtf); controls.add(att); // controls.add(annotationControls.getAnnotationsToolBar()); content.add(controls, BorderLayout.SOUTH); }