List of usage examples for com.google.common.graph Network incidentEdges
Set<E> incidentEdges(Object node);
From source file:edu.uci.ics.jung.samples.NodeCollapseDemo.java
public NodeCollapseDemo() { setLayout(new BorderLayout()); // create a simple graph for the demo graph =/* w w w .j ava 2s. com*/ // getSmallGraph(); TestGraphs.getOneComponentGraph(); collapser = new GraphCollapser(graph); layoutAlgorithm = new FRLayoutAlgorithm(); Dimension preferredSize = new Dimension(400, 400); final VisualizationModel visualizationModel = new BaseVisualizationModel(graph, layoutAlgorithm, preferredSize); vv = new VisualizationViewer(visualizationModel, preferredSize); vv.getRenderContext().setNodeShapeFunction(new ClusterNodeShapeFunction()); final Set exclusions = new HashSet(); final PredicatedParallelEdgeIndexFunction eif = new PredicatedParallelEdgeIndexFunction( exclusions::contains); vv.getRenderContext().setParallelEdgeIndexFunction(eif); vv.setBackground(Color.white); // add a listener for ToolTips vv.setNodeToolTipFunction(v -> { if (v instanceof Network) { return ((Network) v).nodes().toString(); } return v; }); /** the regular graph mouse for the normal view */ final DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse(); vv.setGraphMouse(graphMouse); GraphZoomScrollPane gzsp = new GraphZoomScrollPane(vv); add(gzsp); JComboBox modeBox = graphMouse.getModeComboBox(); modeBox.addItemListener(graphMouse.getModeListener()); graphMouse.setMode(ModalGraphMouse.Mode.PICKING); JButton collapse = new JButton("Collapse"); collapse.addActionListener(e -> { Collection picked = new HashSet(vv.getPickedNodeState().getPicked()); if (picked.size() > 1) { Network inGraph = vv.getModel().getNetwork(); LayoutModel layoutModel = vv.getModel().getLayoutModel(); Network clusterGraph = collapser.getClusterGraph(inGraph, picked); log.info("clusterGraph:" + clusterGraph); Network g = collapser.collapse(inGraph, clusterGraph); log.info("g:" + g); double sumx = 0; double sumy = 0; for (Object v : picked) { Point p = (Point) layoutModel.apply(v); sumx += p.x; sumy += p.y; } Point cp = Point.of(sumx / picked.size(), sumy / picked.size()); layoutModel.lock(false); layoutModel.set(clusterGraph, cp); log.info("put the cluster at " + cp); layoutModel.lock(clusterGraph, true); layoutModel.lock(true); vv.getModel().setNetwork(g); vv.getRenderContext().getParallelEdgeIndexFunction().reset(); layoutModel.accept(vv.getModel().getLayoutAlgorithm()); vv.getPickedNodeState().clear(); vv.repaint(); } }); JButton expand = new JButton("Expand"); expand.addActionListener(e -> { Collection picked = new HashSet(vv.getPickedNodeState().getPicked()); for (Object v : picked) { if (v instanceof Network) { Network inGraph = vv.getModel().getNetwork(); LayoutModel layoutModel = vv.getModel().getLayoutModel(); Network g = collapser.expand(graph, inGraph, (Network) v); layoutModel.lock(false); vv.getModel().setNetwork(g); vv.getRenderContext().getParallelEdgeIndexFunction().reset(); // vv.getModel().setLayout(layout); } vv.getPickedNodeState().clear(); vv.repaint(); } }); JButton compressEdges = new JButton("Compress Edges"); compressEdges.addActionListener(e -> { Set picked = vv.getPickedNodeState().getPicked(); if (picked.size() == 2) { Iterator pickedIter = picked.iterator(); Object nodeU = pickedIter.next(); Object nodeV = pickedIter.next(); Network graph = vv.getModel().getNetwork(); Collection edges = new HashSet(graph.incidentEdges(nodeU)); edges.retainAll(graph.incidentEdges(nodeV)); exclusions.addAll(edges); vv.repaint(); } }); JButton expandEdges = new JButton("Expand Edges"); expandEdges.addActionListener(e -> { Set picked = vv.getPickedNodeState().getPicked(); if (picked.size() == 2) { Iterator pickedIter = picked.iterator(); Object nodeU = pickedIter.next(); Object nodeV = pickedIter.next(); Network graph = vv.getModel().getNetwork(); Collection edges = new HashSet(graph.incidentEdges(nodeU)); edges.retainAll(graph.incidentEdges(nodeV)); exclusions.removeAll(edges); vv.repaint(); } }); JButton reset = new JButton("Reset"); reset.addActionListener(e -> { vv.getModel().setNetwork(graph); exclusions.clear(); vv.repaint(); }); JButton help = new JButton("Help"); help.addActionListener(e -> JOptionPane.showMessageDialog((JComponent) e.getSource(), instructions, "Help", JOptionPane.PLAIN_MESSAGE)); JPanel controls = new JPanel(); controls.add(ControlHelpers.getZoomControls(vv, "Zoom")); JPanel collapseControls = new JPanel(new GridLayout(3, 1)); collapseControls.setBorder(BorderFactory.createTitledBorder("Picked")); collapseControls.add(collapse); collapseControls.add(expand); collapseControls.add(compressEdges); collapseControls.add(expandEdges); collapseControls.add(reset); controls.add(collapseControls); controls.add(modeBox); controls.add(help); add(controls, BorderLayout.SOUTH); }
From source file:edu.uci.ics.jung.samples.NodeCollapseDemoWithLayouts.java
@SuppressWarnings({ "unchecked", "rawtypes" }) public NodeCollapseDemoWithLayouts() { setLayout(new BorderLayout()); // create a simple graph for the demo graph = TestGraphs.getOneComponentGraph(); collapser = new GraphCollapser(graph); layoutAlgorithm = new FRLayoutAlgorithm(); Dimension preferredSize = new Dimension(600, 600); final VisualizationModel visualizationModel = new BaseVisualizationModel(graph, layoutAlgorithm, preferredSize);/* ww w .jav a 2 s .c o m*/ vv = new VisualizationViewer(visualizationModel, preferredSize); vv.getRenderContext().setNodeShapeFunction(new ClusterNodeShapeFunction()); final Set exclusions = new HashSet(); final PredicatedParallelEdgeIndexFunction eif = new PredicatedParallelEdgeIndexFunction( exclusions::contains); vv.getRenderContext().setParallelEdgeIndexFunction(eif); vv.setBackground(Color.white); // add a listener for ToolTips vv.setNodeToolTipFunction(v -> { if (v instanceof Network) { return ((Network) v).nodes().toString(); } return v; }); /** the regular graph mouse for the normal view */ final DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse(); vv.setGraphMouse(graphMouse); GraphZoomScrollPane gzsp = new GraphZoomScrollPane(vv); add(gzsp); JComboBox modeBox = graphMouse.getModeComboBox(); modeBox.addItemListener(graphMouse.getModeListener()); graphMouse.setMode(ModalGraphMouse.Mode.PICKING); Layouts[] combos = getCombos(); final JComboBox jcb = new JComboBox(combos); // use a renderer to shorten the layout name presentation // jcb.setRenderer(new DefaultListCellRenderer() { // public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { // String valueString = value.toString(); // valueString = valueString.substring(valueString.lastIndexOf('.')+1); // return super.getListCellRendererComponent(list, valueString, index, isSelected, // cellHasFocus); // } // }); jcb.addActionListener(new LayoutChooser(jcb, vv)); jcb.setSelectedItem(Layouts.FRUCHTERMAN_REINGOLD); JButton collapse = new JButton("Collapse"); collapse.addActionListener(e -> { Collection picked = new HashSet(vv.getPickedNodeState().getPicked()); if (picked.size() > 1) { LayoutModel layoutModel = vv.getModel().getLayoutModel(); Network inGraph = vv.getModel().getNetwork(); Network clusterGraph = collapser.getClusterGraph(inGraph, picked); Network g = collapser.collapse(inGraph, clusterGraph); double sumx = 0; double sumy = 0; for (Object v : picked) { Point p = (Point) layoutModel.apply(v); sumx += p.x; sumy += p.y; } Point cp = Point.of(sumx / picked.size(), sumy / picked.size()); layoutModel.lock(false); layoutModel.set(clusterGraph, cp); log.trace("put the cluster at " + cp); layoutModel.lock(clusterGraph, true); vv.getModel().setNetwork(g); layoutModel.lock(clusterGraph, false); vv.getRenderContext().getParallelEdgeIndexFunction().reset(); vv.repaint(); } }); JButton expand = new JButton("Expand"); expand.addActionListener(e -> { Collection picked = new HashSet(vv.getPickedNodeState().getPicked()); for (Object v : picked) { if (v instanceof Network) { Network inGraph = vv.getModel().getNetwork(); LayoutModel layoutModel = vv.getModel().getLayoutModel(); Network g = collapser.expand(graph, inGraph, (Network) v); vv.getModel().setNetwork(g); vv.getRenderContext().getParallelEdgeIndexFunction().reset(); } vv.repaint(); } }); JButton compressEdges = new JButton("Compress Edges"); compressEdges.addActionListener(e -> { Set picked = vv.getPickedNodeState().getPicked(); if (picked.size() == 2) { Iterator pickedIter = picked.iterator(); Object nodeU = pickedIter.next(); Object nodeV = pickedIter.next(); Network graph = vv.getModel().getNetwork(); Collection edges = new HashSet(graph.incidentEdges(nodeU)); edges.retainAll(graph.incidentEdges(nodeV)); exclusions.addAll(edges); vv.repaint(); } }); JButton expandEdges = new JButton("Expand Edges"); expandEdges.addActionListener(e -> { Set picked = vv.getPickedNodeState().getPicked(); if (picked.size() == 2) { Iterator pickedIter = picked.iterator(); Object nodeU = pickedIter.next(); Object nodeV = pickedIter.next(); Network graph = vv.getModel().getNetwork(); Collection edges = new HashSet(graph.incidentEdges(nodeU)); edges.retainAll(graph.incidentEdges(nodeV)); exclusions.removeAll(edges); vv.repaint(); } }); JButton reset = new JButton("Reset"); reset.addActionListener(e -> { layoutAlgorithm = createLayout((Layouts) jcb.getSelectedItem()); LayoutAlgorithmTransition.animate(vv, layoutAlgorithm); exclusions.clear(); vv.repaint(); }); JButton help = new JButton("Help"); help.addActionListener(e -> JOptionPane.showMessageDialog((JComponent) e.getSource(), instructions, "Help", JOptionPane.PLAIN_MESSAGE)); JPanel controls = new JPanel(); controls.setLayout(new BoxLayout(controls, BoxLayout.Y_AXIS)); controls.add(ControlHelpers.getZoomControls(vv, "Zoom")); JPanel collapseControls = new JPanel(new GridLayout(0, 1)); collapseControls.setBorder(BorderFactory.createTitledBorder("Picked")); collapseControls.add(collapse); collapseControls.add(expand); collapseControls.add(compressEdges); collapseControls.add(expandEdges); collapseControls.add(reset); controls.add(collapseControls); JPanel modePanel = new JPanel(); modePanel.add(modeBox); controls.add(modePanel); JPanel jcbPanel = new JPanel(); jcbPanel.add(jcb); controls.add(jcbPanel); controls.add(help); add(controls, BorderLayout.EAST); }