Package com.mxgraph.examples.swing

Source Code of com.mxgraph.examples.swing.Port

package com.mxgraph.examples.swing;

import java.util.Map;

import javax.swing.JFrame;

import com.mxgraph.model.mxCell;
import com.mxgraph.model.mxGeometry;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.util.mxConstants;
import com.mxgraph.util.mxPoint;
import com.mxgraph.util.mxRectangle;
import com.mxgraph.view.mxEdgeStyle;
import com.mxgraph.view.mxGraph;

public class Port extends JFrame
{
  /**
   *
   */
  private static final long serialVersionUID = -464235672367772404L;

  final int PORT_DIAMETER = 20;

  final int PORT_RADIUS = PORT_DIAMETER / 2;

  public Port()
  {
    super("Hello, World!");

    mxGraph graph = new mxGraph() {
     
      // Ports are not used as terminals for edges, they are
      // only used to compute the graphical connection point
      public boolean isPort(Object cell)
      {
        mxGeometry geo = getCellGeometry(cell);
       
        return (geo != null) ? geo.isRelative() : false;
      }
     
      // Implements a tooltip that shows the actual
      // source and target of an edge
      public String getToolTipForCell(Object cell)
      {
        if (model.isEdge(cell))
        {
          return convertValueToString(model.getTerminal(cell, true)) + " -> " +
            convertValueToString(model.getTerminal(cell, false));
        }
       
        return super.getToolTipForCell(cell);
      }
     
      // Removes the folding icon and disables any folding
      public boolean isCellFoldable(Object cell, boolean collapse)
      {
        return false;
      }
    };
   
    // Sets the default edge style
    Map<String, Object> style = graph.getStylesheet().getDefaultEdgeStyle();
    style.put(mxConstants.STYLE_EDGE, mxEdgeStyle.ElbowConnector);
   
    Object parent = graph.getDefaultParent();

    graph.getModel().beginUpdate();
    try
    {
      mxCell v1 = (mxCell) graph.insertVertex(parent, null, "Hello", 20,
          20, 100, 100, "");
      v1.setConnectable(false);
      mxGeometry geo = graph.getModel().getGeometry(v1);
      // The size of the rectangle when the minus sign is clicked
      geo.setAlternateBounds(new mxRectangle(20, 20, 100, 50));

      mxGeometry geo1 = new mxGeometry(0, 0.5, PORT_DIAMETER,
          PORT_DIAMETER);
      // Because the origin is at upper left corner, need to translate to
      // position the center of port correctly
      geo1.setOffset(new mxPoint(-PORT_RADIUS, -PORT_RADIUS));
      geo1.setRelative(true);

      mxCell port1 = new mxCell(null, geo1,
          "shape=ellipse;perimter=ellipsePerimeter");
      port1.setVertex(true);

      mxGeometry geo2 = new mxGeometry(1.0, 0.5, PORT_DIAMETER,
          PORT_DIAMETER);
      geo2.setOffset(new mxPoint(-PORT_RADIUS, -PORT_RADIUS));
      geo2.setRelative(true);

      mxCell port2 = new mxCell(null, geo2,
          "shape=ellipse;perimter=ellipsePerimeter");
      port2.setVertex(true);

      graph.addCell(port1, v1);
      graph.addCell(port2, v1);

      Object v2 = graph.insertVertex(parent, null, "World!", 240, 150, 80, 30);
     
      graph.insertEdge(parent, null, "Edge", port2, v2);
    }
    finally
    {
      graph.getModel().endUpdate();
    }

    mxGraphComponent graphComponent = new mxGraphComponent(graph);
    getContentPane().add(graphComponent);
    graphComponent.setToolTips(true);
  }

  public static void main(String[] args)
  {
    Port frame = new Port();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 320);
    frame.setVisible(true);
  }

}
TOP

Related Classes of com.mxgraph.examples.swing.Port

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.