proteinHypernetworkVisualization.implementation.jung.visualization.JungProteinNetworkVisualization.java Source code

Java tutorial

Introduction

Here is the source code for proteinHypernetworkVisualization.implementation.jung.visualization.JungProteinNetworkVisualization.java

Source

/* Copyright (c) 2010, Johannes Kster <johannes.koester@tu-dortmund.de>
 * All rights reserved.
 *
 * This software is open-source under the BSD license; see "license.txt"
 * for a description.
 */

/*
 * JungProteinNetworkVisualization.java
 *
 * Created on 28.07.2010, 16:27:53
 */
package proteinHypernetworkVisualization.implementation.jung.visualization;

import edu.uci.ics.jung.algorithms.layout.BalloonLayout;
import edu.uci.ics.jung.algorithms.layout.Layout;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.visualization.GraphZoomScrollPane;
import edu.uci.ics.jung.visualization.VisualizationViewer;
import edu.uci.ics.jung.visualization.control.CrossoverScalingControl;
import edu.uci.ics.jung.visualization.control.DefaultModalGraphMouse;
import edu.uci.ics.jung.visualization.control.ModalGraphMouse.Mode;
import edu.uci.ics.jung.visualization.control.ScalingControl;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Paint;
import java.util.HashSet;
import javax.swing.JOptionPane;
import org.apache.commons.collections15.CollectionUtils;
import org.apache.commons.collections15.Transformer;
import org.apache.xmlrpc.XmlRpcException;
import proteinHypernetwork.NetworkEntity;
import proteinHypernetwork.ProteinHypernetwork;
import proteinHypernetwork.interactions.Interaction;
import proteinHypernetwork.proteins.Protein;
import proteinHypernetworkVisualization.implementation.jung.graphs.JungProteinNetworkGraph;
import proteinHypernetworkVisualization.visualization.CytoscapeVisualization;

/**
 *
 * @author Johannes Kster <johannes.koester@tu-dortmund.de>
 */
public class JungProteinNetworkVisualization extends javax.swing.JPanel {

    private Dimension size = new Dimension(300, 300);
    private DefaultModalGraphMouse<Protein, Interaction> graphMouse = new DefaultModalGraphMouse<Protein, Interaction>();
    private VisualizationViewer<Protein, Interaction> vv;
    private Graph<Protein, Interaction> currentGraph;

    /** Creates new form JungProteinNetworkVisualization */
    public JungProteinNetworkVisualization() {
        initComponents();
        moveZoomButton.setSelected(true);
    }

    public void setVisualizationSize(Dimension d) {
        size = d;
    }

    public void setProteinNetwork(ProteinHypernetwork hypernetwork) {
        JungProteinNetworkGraph g = new JungProteinNetworkGraph();
        g.setProteinNetwork(hypernetwork, hypernetwork.getProteins());
        currentGraph = g;

        //FRLayout<Protein, Interaction> layout = new FRLayout<Protein, Interaction>(g);
        //layout.setMaxIterations(10);
        BalloonLayout.DEFAULT_DISTX = 300;
        BalloonLayout.DEFAULT_DISTY = 300;
        Layout<Protein, Interaction> layout = new BalloonHubLayout<Protein, Interaction>(g);
        layout.setSize(size);
        vv = new VisualizationViewer<Protein, Interaction>(layout, size);
        vv.setDoubleBuffered(true);
        final ScalingControl scaler = new CrossoverScalingControl();
        vv.scaleToLayout(scaler);

        /*int i = 0;
        while(!layout.done()) {
        layout.step();
        i++;
        System.out.println(i);
        }*/

        new DefaultGraphStyle().setGraphStyle(vv, true);
        vv.setGraphMouse(graphMouse);

        graph.add(new GraphZoomScrollPane(vv));
    }

    public void resetHighlighting() {
        new DefaultGraphStyle().setGraphStyle(vv, true);
    }

    public void highlightNetworkEntities(final HashSet<NetworkEntity> networkEntities) {
        final Transformer<Protein, Paint> vft = vv.getRenderContext().getVertexFillPaintTransformer();
        vv.getRenderContext().setVertexFillPaintTransformer(new Transformer<Protein, Paint>() {

            public Paint transform(Protein p) {
                if (networkEntities.contains(p) || CollectionUtils.containsAny(networkEntities,
                        vv.getGraphLayout().getGraph().getIncidentEdges(p))) {
                    return Color.WHITE;
                }
                return vft.transform(p);
            }
        });

        /*final Transformer<Interaction, Paint> edt = vv.getRenderContext().getEdgeDrawPaintTransformer();
        vv.getRenderContext().setEdgeDrawPaintTransformer(new Transformer<Interaction, Paint>() {
            
        public Paint transform(Interaction i) {
        if(networkEntities.contains(i))
        return Color.WHITE;
        return edt.transform(i);
        }
        });*/
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        mouseMode = new javax.swing.ButtonGroup();
        graph = new javax.swing.JPanel();
        controls = new javax.swing.JPanel();
        labelVertices = new javax.swing.JToggleButton();
        moveZoomButton = new javax.swing.JToggleButton();
        selectButton = new javax.swing.JToggleButton();
        showCytoscape = new javax.swing.JButton();

        setLayout(new java.awt.GridBagLayout());

        graph.setLayout(new java.awt.GridLayout(1, 0));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        add(graph, gridBagConstraints);

        controls.setLayout(new java.awt.GridBagLayout());

        labelVertices.setText("Label vertices");
        labelVertices.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                labelVerticesActionPerformed(evt);
            }
        });
        controls.add(labelVertices, new java.awt.GridBagConstraints());

        mouseMode.add(moveZoomButton);
        moveZoomButton.setText("Move and Zoom");
        moveZoomButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                moveZoomButtonActionPerformed(evt);
            }
        });
        controls.add(moveZoomButton, new java.awt.GridBagConstraints());

        mouseMode.add(selectButton);
        selectButton.setText("Drag Vertices");
        selectButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                selectButtonActionPerformed(evt);
            }
        });
        controls.add(selectButton, new java.awt.GridBagConstraints());

        showCytoscape.setText("Show in Cytoscape");
        showCytoscape.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                showCytoscapeActionPerformed(evt);
            }
        });
        controls.add(showCytoscape, new java.awt.GridBagConstraints());

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        add(controls, gridBagConstraints);
    }// </editor-fold>//GEN-END:initComponents

    private void moveZoomButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_moveZoomButtonActionPerformed
        graphMouse.setMode(Mode.TRANSFORMING);
    }//GEN-LAST:event_moveZoomButtonActionPerformed

    private void selectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectButtonActionPerformed
        graphMouse.setMode(Mode.PICKING);
    }//GEN-LAST:event_selectButtonActionPerformed

    private void labelVerticesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_labelVerticesActionPerformed
        new DefaultGraphStyle().labelVertices(vv, labelVertices.isSelected());
        vv.repaint();
    }//GEN-LAST:event_labelVerticesActionPerformed

    private void showCytoscapeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showCytoscapeActionPerformed
        try {
            new CytoscapeVisualization(currentGraph).visualize();
        } catch (XmlRpcException ex) {
            String message = ex.getMessage();
            message += "Is Cytoscape with CytoscapeRPC plugin running?";
            JOptionPane.showMessageDialog(null, message);
        }
    }//GEN-LAST:event_showCytoscapeActionPerformed
     // Variables declaration - do not modify//GEN-BEGIN:variables

    private javax.swing.JPanel controls;
    private javax.swing.JPanel graph;
    private javax.swing.JToggleButton labelVertices;
    private javax.swing.ButtonGroup mouseMode;
    private javax.swing.JToggleButton moveZoomButton;
    private javax.swing.JToggleButton selectButton;
    private javax.swing.JButton showCytoscape;
    // End of variables declaration//GEN-END:variables
}