Exemplo n.º 1
0
  /** Called whenever an update is received from the server */
  @Override
  public void updateFromUIDL(final UIDL uidl, final ApplicationConnection client) {
    if (client.updateComponent(this, uidl, true)) {
      return;
    }
    this.client = client;
    paintableId = uidl.getId();
    currentKeyModifiers = new HashSet<Integer>();
    final String operation = uidl.getStringAttribute("operation");

    if ("REPAINT".equals(operation)) {
      repaint(uidl);
    } else if ("SET_NODE_SIZE".equals(operation)) {
      style.setNodeSize(uidl.getIntAttribute("ns") / 2);
      graph.updateGraphProperties(style);
      paintGraph();
    } else if ("SET_VISUAL_STYLE".equals(operation)) {
      graph.updateGraphProperties(style);
      paintGraph();
    } else if ("SET_TEXT_VISIBILITY".equals(operation)) {
      style.setTextsVisible(uidl.getBooleanAttribute("texts"));
      graph.updateGraphProperties(style);
      paintGraph();
    } else if ("SET_OPTIMIZED_STYLES".equals(operation)) {
      graph.paintGraph();
    } else if ("UPDATE_NODE".equals(operation)) {
      graph.updateNode(uidl, uidl.getStringAttribute("node"));
    } else if ("SET_ZOOM".equals(operation)) {
      setZoom(uidl.getIntAttribute("zoom"));
    } else if ("REFRESH".equals(operation)) {
      refresh(uidl);
    } else {
      repaint(uidl);
    }
  }
Exemplo n.º 2
0
 public void selectAll() {
   for (final VEdge edge : graph.getEdges().values()) {
     graph.setEdgeSelected(edge, true);
   }
   for (final VNode node : graph.getNodes().values()) {
     graph.setNodeSelected(node, true);
   }
   nodeOrEdgeSelectionChanged();
 }
Exemplo n.º 3
0
 public void clearSelections() {
   for (final VEdge edge : graph.getSelectedEdges()) {
     graph.setEdgeSelected(edge, false);
   }
   for (final VNode node : graph.getSelectedShapes()) {
     graph.setNodeSelected(node, false);
   }
   nodeOrEdgeSelectionChanged();
 }
Exemplo n.º 4
0
 public void deleteSelectedItems() {
   for (final VEdge edge : graph.getSelectedEdges()) {
     deleteEdge(edge, true);
   }
   for (final VNode node : graph.getSelectedShapes()) {
     deleteNode(node, true);
   }
   // client.sendPendingVariableChanges();
 }
Exemplo n.º 5
0
 private void rotate(final double delta) {
   for (final VNode n : graph.getPaintedShapes()) {
     final float newX =
         (float) ((n.getX() - centerX) * Math.cos(delta) - (n.getY() - centerY) * Math.sin(delta))
             + centerX;
     final float newY =
         (float) ((n.getX() - centerX) * Math.sin(delta) + (n.getY() - centerY) * Math.cos(delta))
             + centerY;
     n.setX(newX);
     n.setY(newY);
     graph.updateEdges(n, false);
   }
   angle += delta;
 }
Exemplo n.º 6
0
 public void nodeOrEdgeSelectionChanged() {
   final String[] edges = new String[graph.getSelectedEdges().size()];
   final String[] nodes = new String[graph.getSelectedShapes().size()];
   int i = 0;
   for (final VEdge vedge : graph.getSelectedEdges()) {
     edges[i] = vedge.toString();
     ++i;
   }
   i = 0;
   for (final VNode vnode : graph.getSelectedShapes()) {
     nodes[i] = vnode.toString();
     ++i;
   }
   client.updateVariable(paintableId, "selectedEdges", edges, false);
   client.updateVariable(paintableId, "selectedNodes", nodes, true);
 }
Exemplo n.º 7
0
 public void constructLinkTo(final VNode node2) {
   VConsole.log("linked");
   final String name =
       linkNode.getName() + "_to_" + node2.getName() + "_" + new Random().nextInt(1000);
   final VEdge edge = VEdge.createAnEdge(null, this, graph, name, linkNode, node2, style);
   client.updateVariable(
       paintableId, "edgeCreated", new String[] {linkNode.getName(), node2.getName(), name}, true);
   graph.addEdge(edge);
 }
Exemplo n.º 8
0
 @Override
 public void onDoubleClick(final DoubleClickEvent event) {
   VConsole.log("onDoubleClick");
   final int x = event.getX();
   final int y = event.getY();
   final VNode node = VNode.createANode(x, y, this, graph, style);
   graph.addNode(node);
   client.updateVariable(paintableId, "createdANode", new Object[] {node.getName(), x, y}, true);
 }
Exemplo n.º 9
0
 @Override
 public void onMouseUp(final MouseUpEvent event) {
   VConsole.log("onMouseUp");
   extractSelection();
   removeSelectionBox();
   graph.setMovedShape(null);
   onMove = false;
   startX = 0;
   startY = 0;
 }
Exemplo n.º 10
0
 private void repaint(final UIDL uidl) {
   graphWidth = uidl.getIntAttribute("gwidth");
   graphHeight = uidl.getIntAttribute("gheight");
   centerX = graphWidth / 2f;
   centerY = graphHeight / 2f;
   zoomFactor = 0;
   style.parseGeneralStyleAttributesFromUidl(uidl);
   initializeCanvas();
   graph.repaintGraph(uidl);
 }
Exemplo n.º 11
0
  private void zoom(final double factor) {
    if (factor < 1) {
      zoomFactor--;
    } else {
      zoomFactor++;
    }
    for (final VNode n : graph.getPaintedShapes()) {
      n.setX((float) ((n.getX() - centerX) * factor) + centerX);
      n.setY((float) ((n.getY() - centerY) * factor) + centerY);

      if (n.getView() instanceof Circle) {
        if (factor > 1) {
          ((Circle) n.getView()).setRadius((((Circle) n.getView()).getRadius() + 1));
        } else {
          ((Circle) n.getView()).setRadius((((Circle) n.getView()).getRadius() - 1));
        }
      }
      graph.updateEdges(n, false);
    }
    client.updateVariable(paintableId, "zoomFactor", zoomFactor, true);
  }
Exemplo n.º 12
0
 private void selectNodesAndEdgesInTheBox(
     final int startX, final int startY, final int endX, final int endY) {
   for (final VNode node : graph.getSelectedShapes()) {
     graph.setNodeSelected(node, false);
   }
   for (final VEdge edge : graph.getSelectedEdges()) {
     graph.setEdgeSelected(edge, false);
   }
   for (final VNode node : graph.getPaintedShapes()) {
     if (isInArea(node.getX(), node.getY(), startX, startY, endX, endY)) {
       graph.setNodeSelected(node, true);
     }
   }
   for (final VEdge edge : graph.getSelectedEdges()) {
     if (graph.getSelectedShapes().contains(edge.getFirstNode())
         && graph.getSelectedShapes().contains(edge.getSecondNode())) {
       graph.setEdgeSelected(edge, true);
     }
   }
   nodeOrEdgeSelectionChanged();
 }
Exemplo n.º 13
0
  @Override
  public void onMouseMove(final MouseMoveEvent event) {
    final int currentX = event.getX();
    final int currentY = event.getY();

    if (selectionBox.isSelectionBoxVisible()) {
      selectionBox.drawSelectionBox(canvas, currentX, currentY);
    } else if (graph.getMovedShape() != null) {
      final VNode moved = graph.getMovedShape();
      moved.moveNode(currentX, currentY);
    } else if (onLink) {
      if (linkLine != null) {
        canvas.remove(linkLine);
      }
      linkLine = getLinkLine(currentX, currentY);
      canvas.add(linkLine);
    } else if (onMove && event.getSource().equals(canvas)) {
      graph.moveGraph(startX - currentX, startY - currentY);
      startX = currentX;
      startY = currentY;
    }
  }
Exemplo n.º 14
0
 private void deleteEdge(final VEdge edge, final boolean immediate) {
   client.updateVariable(paintableId, "removedEdge", edge.getName(), immediate);
   graph.removeEdge(edge);
 }
Exemplo n.º 15
0
 public void deleteNode(final VNode node, final boolean immediate) {
   client.updateVariable(paintableId, "removedNode", node.getName(), immediate);
   graph.removeNode(node);
 }
Exemplo n.º 16
0
 private void refresh(final UIDL uidl) {
   style.parseGeneralStyleAttributesFromUidl(uidl);
   graph.refreshGraphFromUIDL(uidl);
 }