Example usage for com.google.common.graph Network incidentEdges

List of usage examples for com.google.common.graph Network incidentEdges

Introduction

In this page you can find the example usage for com.google.common.graph Network incidentEdges.

Prototype

Set<E> incidentEdges(Object node);

Source Link

Document

Returns the edges whose endpoints in this graph include node .

Usage

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