/** * Handle mouse moved to set the cursor to hand when over an agent (vertex) * or message (edge). */ public void mouseMoved(MouseEvent e) { Point2D p = e.getPoint();// vv.getRenderContext().getBasicTransformer().inverseViewTransform(e.getPoint()); GraphElementAccessor pickSupport = canvas.vv.getPickSupport(); if (pickSupport != null) { AgentGroup v = (AgentGroup)pickSupport.getVertex(canvas.vv.getGraphLayout(), p.getX(), p.getY()); MessageGroup ml = (MessageGroup)pickSupport.getEdge(canvas.vv.getGraphLayout(), p.getX(), p.getY()); if (v == null && ml == null) { canvas.vv.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } else { canvas.vv.setCursor(cursor); } } }
public GUINode getVertex(MouseEvent e) { final VisualizationViewer<GUINode, GUILink> vv = (VisualizationViewer<GUINode, GUILink>) e.getSource(); GraphElementAccessor<GUINode, GUILink> pickSupport = vv.getPickSupport(); if (pickSupport != null) { final Point p = e.getPoint(); final GUINode vertex = pickSupport.getVertex(vv.getModel().getGraphLayout(), p.getX(), p.getY()); if (vertex != null) return vertex; } return null; }
@Override public GUILink getEdge(MouseEvent e) { final VisualizationViewer<GUINode, GUILink> vv = (VisualizationViewer<GUINode, GUILink>) e.getSource(); GraphElementAccessor<GUINode, GUILink> pickSupport = vv.getPickSupport(); if (pickSupport != null) { final Point p = e.getPoint(); return pickSupport.getEdge(vv.getModel().getGraphLayout(), p.getX(), p.getY()); } return null; }
/** * pick the vertices inside the rectangle created from points 'down' and 'out' (two diagonally * opposed corners of the rectangle) * * @param vv the viewer containing the layout and picked state * @param down one corner of the rectangle * @param out the other corner of the rectangle * @param clear whether to reset existing picked state */ protected void pickContainedVertices(VisualizationViewer<V,E> vv, Point2D down, Point2D out, boolean clear) { Layout<V,E> layout = vv.getGraphLayout(); PickedState<V> pickedVertexState = vv.getPickedVertexState(); Rectangle2D pickRectangle = new Rectangle2D.Double(); pickRectangle.setFrameFromDiagonal(down,out); if(pickedVertexState != null) { if(clear) { pickedVertexState.clear(); } GraphElementAccessor<V,E> pickSupport = vv.getPickSupport(); Collection<V> picked = pickSupport.getVertices(layout, pickRectangle); for(V v : picked) { pickedVertexState.pick(v, true); } } }
/** * Gets the vertex at a particular point, or null if it does not exist. * * @param point2D * @return */ public Object getVertex(final Point2D point2D) { final GraphElementAccessor<?, ?> pickSupport = _visualizationViewer.getPickSupport(); @SuppressWarnings("rawtypes") final Layout graphLayout = _visualizationViewer.getModel().getGraphLayout(); @SuppressWarnings("unchecked") final Object vertex = pickSupport.getVertex(graphLayout, point2D.getX(), point2D.getY()); return vertex; }
/** * Implementation of the AbstractPopupGraphMousePlugin method. This is where * the work gets done. You shouldn't have to modify unless you really want * to... * * @param e */ @SuppressWarnings("unchecked") protected void handlePopup(MouseEvent e) { VisualizationViewer<V, E> vv = (VisualizationViewer<V, E>) e.getSource(); Point p = e.getPoint(); GraphElementAccessor<V, E> pickSupport = vv.getPickSupport(); if (pickSupport != null) { final V v = pickSupport.getVertex(vv.getGraphLayout(), p.getX(), p.getY()); if (v != null) { // System.out.println("Vertex " + v + " was right clicked"); updateVertexMenu(v, vv, p); vertexPopup.show(vv, e.getX(), e.getY()); } else { final E edge = pickSupport.getEdge(vv.getGraphLayout(), p.getX(), p.getY()); if (edge != null) { // System.out.println("Edge " + edge + " was right // clicked"); updateEdgeMenu(edge, vv, p); edgePopup.show(vv, e.getX(), e.getY()); } } } }
/** * Transform the point to the coordinate system in the * VisualizationViewer, then use either PickSuuport * (if available) or Layout to find a Vertex * @param point * @return */ private V getVertex(Point2D point) { // adjust for scale and offset in the VisualizationViewer Point2D p = point; //vv.getRenderContext().getBasicTransformer().inverseViewTransform(point); GraphElementAccessor<V,E> pickSupport = vv.getPickSupport(); Layout<V,E> layout = vv.getGraphLayout(); V v = null; if(pickSupport != null) { v = pickSupport.getVertex(layout, p.getX(), p.getY()); } return v; } /**
final Integer v = pickSupport.getVertex(vv.getGraphLayout(), p.getX(), p.getY()); if(v != null) { JPopupMenu popup = new JPopupMenu(); popup.show(vv, e.getX(), e.getY()); } else { final Number edge = pickSupport.getEdge(vv.getGraphLayout(), p.getX(), p.getY()); if(edge != null) { JPopupMenu popup = new JPopupMenu();
private synchronized void adjust() { //Generate random position in graph space Point2D tempXYD = new Point2D.Double(); // creates a new XY data location tempXYD.setLocation(10 + Math.random() * getSize().getWidth(), 10 + Math.random() * getSize().getHeight()); //Get closest vertex to random position V winner = elementAccessor.getVertex(this, tempXYD.getX(), tempXYD.getY()); while(true) { try { for(V v : getGraph().getVertices()) { ISOMVertexData ivd = getISOMVertexData(v); ivd.distance = 0; ivd.visited = false; } break; } catch(ConcurrentModificationException cme) {} } adjustVertex(winner, tempXYD); }
/** * called by the superclass to display tooltips */ public String getToolTipText(MouseEvent event) { Layout<V,E> layout = getGraphLayout(); Point2D p = null; if(vertexToolTipTransformer != null) { p = event.getPoint(); //renderContext.getBasicTransformer().inverseViewTransform(event.getPoint()); V vertex = getPickSupport().getVertex(layout, p.getX(), p.getY()); if(vertex != null) { return vertexToolTipTransformer.apply(vertex); } } if(edgeToolTipTransformer != null) { if(p == null) p = renderContext.getMultiLayerTransformer().inverseTransform(Layer.VIEW, event.getPoint()); E edge = getPickSupport().getEdge(layout, p.getX(), p.getY()); if(edge != null) { return edgeToolTipTransformer.apply(edge); } } if(mouseEventToolTipTransformer != null) { return mouseEventToolTipTransformer.apply(event); } return super.getToolTipText(event); }
private synchronized void adjust() { //Generate random position in graph space Point2D tempXYD = new Point2D.Double(); // creates a new XY data location tempXYD.setLocation(10 + Math.random() * getSize().getWidth(), 10 + Math.random() * getSize().getHeight()); //Get closest vertex to random position V winner = elementAccessor.getVertex(this, tempXYD.getX(), tempXYD.getY()); while(true) { try { for(V v : getGraph().getVertices()) { ISOMVertexData ivd = getISOMVertexData(v); ivd.distance = 0; ivd.visited = false; } break; } catch(ConcurrentModificationException cme) {} } adjustVertex(winner, tempXYD); }
@Override public void mouseClicked(MouseEvent me) { super.mouseClicked(me); // hide possible popups cleanPopups(); // prevent popup from showing when right click currentNode = null; // mouse move where Point2D p = me.getPoint(); // is pick support available GraphElementAccessor<ONDEXConcept, ONDEXRelation> pickSupport = vv.getPickSupport(); // layout important to find node or edge Layout<ONDEXConcept, ONDEXRelation> layout = vv.getGraphLayout(); if (pickSupport != null) { // first check if its a node ONDEXConcept n = pickSupport.getVertex(layout, p.getX(), p.getY()); ONDEXRelation e = pickSupport.getEdge(layout, p.getX(), p.getY()); if (n != null) { firePickingEvent(new ActionEvent(n, 0, "putative node pick")); } else if (e != null) { firePickingEvent(new ActionEvent(e, 1, "putative edge pick")); } } }
private synchronized void adjust() { // Generate random position in graph space tempISOM = new ISOMVertexData(); tempXYD = new Point2D.Double(); // creates a new XY data location tempXYD.setLocation(10 + Math.random() * getSize().getWidth(), 10 + Math.random() * getSize().getHeight()); // Get closest vertex to random position Object winner = elementAccessor.getVertex(this, tempXYD.getX(), tempXYD.getY()); // BUGFIX goes hier: winner is null if there are no vertices in the // graph // NullPointerExeption in adjustVertex()!!! if (winner == null) return; while (true) { try { for(Iterator it=getGraph().getVertices().iterator(); it.hasNext(); ) { ISOMVertexData ivd = getISOMVertexData(it.next()); ivd.distance = 0; ivd.visited = false; } break; } catch (ConcurrentModificationException cme) { } } adjustVertex(winner); }
/** * If startVertex is non-null, and the mouse is released over an * existing vertex, create an undirected edge from startVertex to * the vertex under the mouse pointer. If shift was also pressed, * create a directed edge instead. */ @SuppressWarnings("unchecked") public void mouseReleased(MouseEvent e) { if(checkModifiers(e)) { final VisualizationViewer<V,E> vv = (VisualizationViewer<V,E>)e.getSource(); final Point2D p = e.getPoint(); Layout<V,E> layout = vv.getGraphLayout(); if(createMode == Creating.EDGE) { GraphElementAccessor<V,E> pickSupport = vv.getPickSupport(); V vertex = null; if(pickSupport != null) { vertex = pickSupport.getVertex(layout, p.getX(), p.getY()); } edgeSupport.endEdgeCreate(vv, vertex); } else if(createMode == Creating.VERTEX){ vertexSupport.endVertexCreate(vv, e.getPoint()); } } createMode = Creating.UNDETERMINED; }
if (layout.getGraph().getVertexCount() < 5000 && layout.getGraph().getEdgeCount() < 7000) { ONDEXConcept n = pickSupport.getVertex(layout, p.getX(), p.getY()); if (n != null) { JComponent c = (JComponent) me.getSource(); timer = new Timer(); ONDEXRelation e = pickSupport.getEdge(layout, p.getX(), p.getY()); if (e != null) { JComponent c = (JComponent) me.getSource();
/** * If the event occurs on a Vertex, pick that single Vertex * @param e the event */ @SuppressWarnings("unchecked") public void mousePressed(MouseEvent e) { if (e.getModifiers() == modifiers) { VisualizationViewer<V,E> vv = (VisualizationViewer<V,E>) e.getSource(); GraphElementAccessor<V, E> pickSupport = vv.getPickSupport(); PickedState<V> pickedVertexState = vv.getPickedVertexState(); Layout<V,E> layout = vv.getGraphLayout(); if (pickSupport != null && pickedVertexState != null) { // p is the screen point for the mouse event Point2D p = e.getPoint(); vertex = pickSupport.getVertex(layout, p.getX(), p.getY()); if (vertex != null) { if (pickedVertexState.isPicked(vertex) == false) { pickedVertexState.clear(); pickedVertexState.pick(vertex, true); } } } e.consume(); } }
/** * Handle the mouse click for showing agent or message details in the * element viewer. */ public void mouseClicked(MouseEvent e) { Point2D p = e.getPoint();// vv.getRenderContext().getBasicTransformer().inverseViewTransform(e.getPoint()); GraphElementAccessor pickSupport = canvas.vv.getPickSupport(); if(pickSupport != null) { AgentGroup agents = (AgentGroup)pickSupport.getVertex(canvas.vv.getGraphLayout(), p.getX(), p.getY()); MessageGroup edge = (MessageGroup)pickSupport.getEdge(canvas.vv.getGraphLayout(), p.getX(), p.getY()); if(edge != null && edge.isSingelton()) { if(e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) { canvas.getToolTab().getToolPanel().showElementDetails(((Message)edge.getSingelton()).getParameters()); } } if(agents != null && agents.isSingelton()) { if(e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) { canvas.getToolTab().getToolPanel().showElementDetails(((Component)agents.getSingelton()).getParameters()); } } } }
GraphElementAccessor<V,E> pickSupport = vv.getPickSupport(); if(pickSupport != null) { final V vertex = pickSupport.getVertex(vv.getModel().getGraphLayout(), p.getX(), p.getY()); if(vertex != null) { // get ready to make an edge this.createMode = Creating.EDGE;