PortLabelGraph.java :  » Natural-Language-Processing » Stanford-CoreNLP » com » jgraph » example » portlabels » Java Open Source

Java Open Source » Natural Language Processing » Stanford CoreNLP 
Stanford CoreNLP » com » jgraph » example » portlabels » PortLabelGraph.java
/*
 * Copyright (c) 2005, Gaudenz Alder
 * Copyright (c) 2005-2006, David Benson
 * 
 */
package com.jgraph.example.portlabels;


import java.awt.Color;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.net.URL;
import java.util.Hashtable;
import java.util.Map;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;

import org.jgraph.JGraph;
import com.jgraph.example.JGraphGraphFactory;
import org.jgraph.example.GraphEd;
import org.jgraph.graph.DefaultCellViewFactory;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.DefaultPort;
import org.jgraph.graph.EdgeView;
import org.jgraph.graph.GraphConstants;
import org.jgraph.graph.PortView;
import org.jgraph.graph.VertexView;

/**
 * An example applet that demonstrates how to improve the performance of
 * JGraph and reduce its memory footprint
 */
public class PortLabelGraph extends GraphEd {

  /**
   * JGraph Factory instance for random new graphs
   */
  protected JGraphGraphFactory graphFactory;

  /**
   * Reference to the layout dialog which is used to configure the current
   * layout.
   */
  protected JDialog sampleDialog = null;

  /**
   * Constructs a new example
   */
  public PortLabelGraph() {
    graph.getGraphLayoutCache().setFactory(new DefaultCellViewFactory() {
      /**
       * Constructs an EdgeView view for the specified object.
       */
      protected EdgeView createEdgeView(Object cell) {
        return new EdgeView(cell);
      }

      /**
       * Constructs a PortView view for the specified object.
       */
      protected PortView createPortView(Object cell) {
        return new PortView(cell);
      }

      /**
       * Constructs a VertexView view for the specified object.
       */
      protected VertexView createVertexView(Object cell) {
        if (cell instanceof PortLabelCell) {
          return new PortLabelVertexView(cell);
        } else {
          return new VertexView(cell);
        }
      }
    });
  }

  /**
   * Hook from GraphEd to set attributes of a new cell
   */
  public Map createCellAttributes(Point2D point) {
    Map map = new Hashtable();
    // Add a Border Color Attribute to the Map
    GraphConstants.setBorderColor(map, Color.black);
    // Add a White Background
    GraphConstants.setBackground(map, Color.white);
    // Set autosize
    GraphConstants.setAutoSize(map, true);
    // Move the label of the vertex to the bottom
    GraphConstants.setVerticalAlignment(map, JLabel.BOTTOM);
    return map;
  }

  /**
   * Create vertex with random numbers of ports that have labels
   */
  protected DefaultGraphCell createDefaultGraphCell() {
    DefaultGraphCell cell = new PortLabelCell("Cell "
        + new Integer(cellCount++));
    // Add a random number of ports on either side of the vertex
    Random random = new Random();
    double numLeftSidePorts = random.nextInt(6) + 2;
    double numRightSidePorts = random.nextInt(6) + 2;
    
    double height = Math.max(numLeftSidePorts, numRightSidePorts);
    for (double i=1.0; i <= height ;i++) {
      if (i <= numLeftSidePorts) {
        DefaultPort port = new DefaultPort("(0, GraphConstants.PERMILLE / " + new Double(i / (numLeftSidePorts+1)) + ")");
        Point2D point = new Point2D.Double(0,
            i * (GraphConstants.PERMILLE / (numLeftSidePorts+1)));
        GraphConstants.setOffset(port.getAttributes(), point);
        GraphConstants.setBackground(port.getAttributes(), Color.RED);
        cell.add(port);
      }
      if (i <= numRightSidePorts) {
        DefaultPort port = new DefaultPort("(GraphConstants.PERMILLE, GraphConstants.PERMILLE / " + new Double(i / (numRightSidePorts+1)) + ")");
        Point2D point = new Point2D.Double(GraphConstants.PERMILLE,
            i * (GraphConstants.PERMILLE / (numRightSidePorts+1)));
        GraphConstants.setOffset(port.getAttributes(), point);
        GraphConstants.setBackground(port.getAttributes(), Color.YELLOW);
        cell.add(port);
      }
    }
    
    height *= 50;
    Map map = cell.getAttributes();
    // Add a Bounds Attribute to the Map
    GraphConstants.setBounds(map, new Rectangle2D.Double(20,
        20, 160, height));
    return cell;
  }

  /**
   * Main method
   */
  public static void main(String[] args) {
    try {
      // Construct Frame
      JFrame frame = new JFrame(JGraph.VERSION);
      // Set Close Operation to Exit
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      // Add an Editor Panel
      PortLabelGraph portLabelGraph = new PortLabelGraph();
      frame.getContentPane().add(portLabelGraph);
      // Fetch URL to Icon Resource
      URL jgraphUrl = PortLabelGraph.class.getClassLoader().getResource(
          "org/jgraph/example/resources/jgraph.gif");
      // If Valid URL
      if (jgraphUrl != null) {
        // Load Icon
        ImageIcon jgraphIcon = new ImageIcon(jgraphUrl);
        // Use in Window
        frame.setIconImage(jgraphIcon.getImage());
      }
      // Set Default Size
      frame.setSize(640, 480);
      // Show Frame
      frame.setVisible(true);
      portLabelGraph.init();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.