| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 
 |  
import java.awt.Color;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
 
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
 
import org.jgraph.JGraph;
import org.jgraph.graph.CellView;
import org.jgraph.graph.DefaultCellViewFactory;
import org.jgraph.graph.DefaultEdge;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.DefaultGraphModel;
import org.jgraph.graph.DefaultPort;
import org.jgraph.graph.EdgeView;
import org.jgraph.graph.GraphConstants;
import org.jgraph.graph.GraphModel;
import org.jgraph.graph.PortView;
 
public class HelloWorld {
 
 
  public static void main(String[] args) {
    // Construct Model and Graph
    GraphModel model = new DefaultGraphModel();
    JGraph graph = new JGraph(model);
    graph.getGraphLayoutCache().setFactory(new MyViewFactory());
 
    // Control-drag should clone selection
    graph.setCloneable(false);
    // Enable edit without final RETURN keystroke
 
    graph.setInvokesStopCellEditing(true);
    // When over a cell, jump to its default port (we only have one, anyway)
 
    graph.setJumpToDefaultPort(true);
 
    // Insert all three cells in one call, so we need an array to store them
    DefaultGraphCell[] cells = new DefaultGraphCell[5];
 
    // Create Hello Vertex
    cells[0] = createVertex("Hello", 20, 20, 40, 20, Color.BLUE, false);
    DefaultPort port;
 
    // Create World Vertex
    cells[1] = createVertex("World", 20, 80, 40, 20, Color.ORANGE, true);
    cells[2] = createVertex("ess", 20, 140, 40, 20, Color.RED, true);
 
    // Create Edge
    DefaultEdge edge1 = new DefaultEdge("left");
    DefaultEdge edge2 = new DefaultEdge("right");
 
    // Fetch the ports from the new vertices, and connect them with the edge
 
    edge1.setSource(cells[0].getChildAt(0));
    edge1.setTarget(cells[1].getChildAt(0));
 
    edge2.setSource(cells[0].getChildAt(0));
    edge2.setTarget(cells[2].getChildAt(0));
 
    cells[3] = edge1;
    cells[4] = edge2;
 
    // Set Arrow Style for edge
    int arrow = GraphConstants.ARROW_CLASSIC;
    GraphConstants.setLineEnd(edge1.getAttributes(), arrow);
    GraphConstants.setEndFill(edge1.getAttributes(), true);
 
    GraphConstants.setLineEnd(edge2.getAttributes(), arrow);
    GraphConstants.setEndFill(edge2.getAttributes(), true);
 
    // Insert the cells via the cache, so they get selected
    graph.getGraphLayoutCache().insert(cells);
 
    // Show in Frame
    JFrame frame = new JFrame();
    frame.getContentPane().add(new JScrollPane(graph));
    // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }
 
  public static DefaultGraphCell createVertex(String name, double x, double y, double w, double h, Color bg,
      boolean raised) {
 
    // Create vertex with the given name
    DefaultGraphCell cell = new DefaultGraphCell(name);
 
    // Set bounds
    GraphConstants.setBounds(cell.getAttributes(), new Rectangle2D.Double(x, y, w, h));
 
    // Set fill color
    if (bg != null) {
      GraphConstants.setGradientColor(cell.getAttributes(), Color.orange);
      GraphConstants.setOpaque(cell.getAttributes(), true);
    }
 
    // Set raised border
    if (raised)
      GraphConstants.setBorder(cell.getAttributes(), BorderFactory.createRaisedBevelBorder());
    else
      // Set black border
      GraphConstants.setBorderColor(cell.getAttributes(), Color.black);
    // Add a Port
    DefaultPort port = new DefaultPort();
    cell.add(port);
    port.setParent(cell);
 
    return cell;
  }
} |