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);
}