コード例 #1
0
ファイル: Graph.java プロジェクト: tudormi/TJ2015-16
  public void generateRandom(String type, int size) {
    this.type = type;
    this.size = size;

    graph.getModel().beginUpdate();
    try {
      Object[] nodes = new Object[size];

      for (int i = 0; i < size; i++) {
        nodes[i] = graph.insertVertex(parent, null, Integer.toString(i), 0, 0, 40, 20);
      }

      if (type.equals("complete")) {
        for (int i = 0; i < size; i++) {
          for (int j = i + 1; j < size; j++) {
            graph.insertEdge(parent, null, "", nodes[i], nodes[j]);
          }
        }
      } else {
        if (type.equals("binary")) {
          int limit = size;
          for (int i = 0; i < size; i++) {
            if (i * 2 + 1 < size) graph.insertEdge(parent, null, "", nodes[i], nodes[i * 2 + 1]);
            if (i * 2 + 2 < size) graph.insertEdge(parent, null, "", nodes[i], nodes[i * 2 + 2]);
          }
        } else {
          if (type.equals("circuit")) {
            for (int i = 0; i < size - 1; i++) {
              graph.insertEdge(parent, null, "", nodes[i], nodes[i + 1]);
            }
            graph.insertEdge(parent, null, "", nodes[size - 1], nodes[0]);
          }
        }
      }

      mxIGraphLayout layout = new mxFastOrganicLayout(graph);
      if (this.layout.equals("circular")) {
        layout = new mxCircleLayout(graph);
      } else {
        if (this.layout.equals("hierarchical")) {
          layout = new mxHierarchicalLayout(graph);
        } else {
          if (this.layout.equals("orthogonal")) {
            layout = new mxOrthogonalLayout(graph);
          } else {
            if (this.layout.equals("tree")) {
              layout = new mxCompactTreeLayout(graph);
            } else {
              if (this.layout.equals("random")) {
                layout = new mxFastOrganicLayout(graph);
              }
            }
          }
        }
      }
      layout.execute(parent);
    } finally {
      graph.getModel().endUpdate();
    }
  }
コード例 #2
0
ファイル: Graph.java プロジェクト: tudormi/TJ2015-16
 public void generateGraph(String body) {
   String[] elems = body.split("\n");
   for (int i = 0; i < elems.length; i++) {
     elems[i] = elems[i].trim();
   }
   size = 0;
   int edgesIndex = 0;
   while (!elems[edgesIndex].equals("#")) {
     if (elems[edgesIndex].length() > 0) {
       size++;
     }
     edgesIndex++;
   }
   graph.getModel().beginUpdate();
   try {
     Object[] nodes = new Object[size];
     edgesIndex = 0;
     int verticesIndex = 0;
     while (!elems[edgesIndex].equals("#")) {
       if (elems[edgesIndex].length() > 0) {
         nodes[verticesIndex] = graph.insertVertex(parent, null, elems[edgesIndex], 0, 0, 40, 20);
         verticesIndex++;
       }
       edgesIndex++;
     }
     for (int i = edgesIndex + 1; i < elems.length; i++) {
       if (elems[i].length() > 0) {
         int number1 = Integer.parseInt(elems[i].split(" ")[0]);
         int number2 = Integer.parseInt(elems[i].split(" ")[1]);
         graph.insertEdge(parent, null, "", nodes[number1 - 1], nodes[number2 - 1]);
       }
     }
     // aranjam nodurile in functie de layout
     mxIGraphLayout layout = new mxFastOrganicLayout(graph);
     if (this.layout.equals("circular")) {
       layout = new mxCircleLayout(graph);
     } else {
       if (this.layout.equals("hierarchical")) {
         layout = new mxHierarchicalLayout(graph);
       } else {
         if (this.layout.equals("orthogonal")) {
           layout = new mxOrthogonalLayout(graph);
         } else {
           if (this.layout.equals("tree")) {
             layout = new mxCompactTreeLayout(graph);
           } else {
             if (this.layout.equals("random")) {
               layout = new mxFastOrganicLayout(graph);
             }
           }
         }
       }
     }
     layout.execute(parent);
   } finally {
     graph.getModel().endUpdate();
   }
 }