/** 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); } }
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(); }
public void clearSelections() { for (final VEdge edge : graph.getSelectedEdges()) { graph.setEdgeSelected(edge, false); } for (final VNode node : graph.getSelectedShapes()) { graph.setNodeSelected(node, false); } nodeOrEdgeSelectionChanged(); }
public void deleteSelectedItems() { for (final VEdge edge : graph.getSelectedEdges()) { deleteEdge(edge, true); } for (final VNode node : graph.getSelectedShapes()) { deleteNode(node, true); } // client.sendPendingVariableChanges(); }
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; }
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); }
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); }
@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); }
@Override public void onMouseUp(final MouseUpEvent event) { VConsole.log("onMouseUp"); extractSelection(); removeSelectionBox(); graph.setMovedShape(null); onMove = false; startX = 0; startY = 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); }
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); }
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(); }
@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; } }
private void deleteEdge(final VEdge edge, final boolean immediate) { client.updateVariable(paintableId, "removedEdge", edge.getName(), immediate); graph.removeEdge(edge); }
public void deleteNode(final VNode node, final boolean immediate) { client.updateVariable(paintableId, "removedNode", node.getName(), immediate); graph.removeNode(node); }
private void refresh(final UIDL uidl) { style.parseGeneralStyleAttributesFromUidl(uidl); graph.refreshGraphFromUIDL(uidl); }