/** * @param d * @see edu.uci.ics.jung.algorithms.layout.Layout#setSize(java.awt.Dimension) */ public void setSize(Dimension d) { delegate.setSize(d); }
/** * @see edu.uci.ics.jung.algorithms.layout.Layout#getSize() */ public Dimension getSize() { return delegate.getSize(); }
/** * Groups a cluster (set) of agents into a sublayout. * * @param vertices */ protected void groupCluster(Set vertices) { if(vertices.size() > 1 && vertices.size() < graph.getVertexCount()) { // if(vertices.size() < layout.getGraph().getVertexCount()) { Point2D center = layout.transform(vertices.iterator().next()); Graph subGraph = (Graph)graphFactory.create(); for(Iterator it = vertices.iterator(); it.hasNext();) { subGraph.addVertex(it.next()); } Layout subLayout = new GraphCircleLayout(subGraph); subLayout.setInitializer(vv.getGraphLayout()); subLayout.setSize(new Dimension(40, 40)); layout.put(subLayout, center); } }
/** * Returns the location of the vertex. The location is specified first * by the sublayouts, and then by the base layout if no sublayouts operate * on this vertex. * @return the location of the vertex * @see org.apache.commons.collections15.Transformer#transform(java.lang.Object) */ public Point2D transform(V v) { boolean wasInSublayout = false; for(Layout<V,E> layout : layouts.keySet()) { if(layout.getGraph().getVertices().contains(v)) { wasInSublayout = true; Point2D center = layouts.get(layout); // transform by the layout itself, but offset to the // center of the sublayout Dimension d = layout.getSize(); AffineTransform at = AffineTransform.getTranslateInstance(center.getX()-d.width/2, center.getY()-d.height/2); return at.transform(layout.transform(v),null); } } if(wasInSublayout == false) { return delegate.transform(v); } return null; }
public void step() Graph g = transitionLayout.getGraph(); Point2D tp = (Point2D)transitionLayout.transform(v); Point2D fp = (Point2D)endLayout.transform(v); double dx = (fp.getX() - tp.getX()) / (count - counter); double dy = (fp.getY() - tp.getY()) / (count - counter); transitionLayout.setLocation(v, new Point2D.Double(tp.getX() + dx, tp.getY() + dy));
public void setLocation(V v, Point2D location) { boolean wasInSublayout = false; for(Layout<V,E> layout : layouts.keySet()) { if(layout.getGraph().getVertices().contains(v)) { Point2D center = layouts.get(layout); // transform by the layout itself, but offset to the // center of the sublayout Dimension d = layout.getSize(); AffineTransform at = AffineTransform.getTranslateInstance(-center.getX()+d.width/2,-center.getY()+d.height/2); Point2D localLocation = at.transform(location, null); layout.setLocation(v, localLocation); wasInSublayout = true; } } if(wasInSublayout == false && getGraph().getVertices().contains(v)) { delegate.setLocation(v, location); } }
/** * Returns the graph for which this layout is defined. * @return the graph for which this layout is defined * @see edu.uci.ics.jung.algorithms.layout.Layout#getGraph() */ public Graph<V, E> getGraph() { return delegate.getGraph(); }
public void actionPerformed(ActionEvent e) { Collection picked = new HashSet(vv.getPickedVertexState().getPicked()); if(picked.size() > 1) { Graph inGraph = layout.getGraph(); Graph clusterGraph = collapser.getClusterGraph(inGraph, picked); Graph g = collapser.collapse(layout.getGraph(), clusterGraph); collapsedGraph = g; double sumx = 0; double sumy = 0; for(Object v : picked) { Point2D p = (Point2D)layout.apply(v); sumx += p.getX(); sumy += p.getY(); } Point2D cp = new Point2D.Double(sumx/picked.size(), sumy/picked.size()); vv.getRenderContext().getParallelEdgeIndexFunction().reset(); layout.setGraph(g); layout.setLocation(clusterGraph, cp); vv.getPickedVertexState().clear(); vv.repaint(); } }});
viewSize = new Dimension(600,600); Dimension layoutSize = layout.getSize(); layout.setSize(viewSize); layout.initialize(); if(relaxer == null) { relaxer = new VisRunner((IterativeContext)this.layout);
/** * Returns the location of the vertex. The location is specified first * by the sublayouts, and then by the base layout if no sublayouts operate * on this vertex. * @return the location of the vertex */ public Point2D apply(V v) { boolean wasInSublayout = false; for(Layout<V,E> layout : layouts.keySet()) { if(layout.getGraph().getVertices().contains(v)) { wasInSublayout = true; Point2D center = layouts.get(layout); // transform by the layout itself, but offset to the // center of the sublayout Dimension d = layout.getSize(); AffineTransform at = AffineTransform.getTranslateInstance(center.getX()-d.width/2, center.getY()-d.height/2); return at.transform(layout.apply(v),null); } } if(wasInSublayout == false) { return delegate.apply(v); } return null; }
/** * @see edu.uci.ics.jung.algorithms.layout.Layout#transform(Object) */ public Point2D transform(V v) { return delegate.transform(v); }
public static void renderGraphToFile(Graph<VertexRef, Edge> jungGraph, File file) { final edu.uci.ics.jung.algorithms.layout.Layout<VertexRef, Edge> jungLayout = new KKLayout<>(jungGraph); jungLayout.setSize(new Dimension(1800,1800)); // Size of the layout .collect(Collectors.toSet()); VisualizationImageServer<VertexRef, Edge> vv = new VisualizationImageServer<>(jungLayout, jungLayout.getSize()); vv.setPreferredSize(new Dimension(2000,2000)); // Viewing area size vv.getRenderContext().setVertexLabelTransformer(VertexRef::getLabel); new Point2D.Double(vv.getGraphLayout().getSize().getWidth() / 2, vv.getGraphLayout().getSize().getHeight() / 2), new Dimension(vv.getGraphLayout().getSize()));
public void step() { Graph<V,E> g = transitionLayout.getGraph(); for(V v : g.getVertices()) { Point2D tp = transitionLayout.apply(v); Point2D fp = endLayout.apply(v); double dx = (fp.getX()-tp.getX())/(count-counter); double dy = (fp.getY()-tp.getY())/(count-counter); transitionLayout.setLocation(v, new Point2D.Double(tp.getX()+dx,tp.getY()+dy)); } counter++; if(counter >= count) { done = true; vv.setGraphLayout(endLayout); } vv.repaint(); } }
public void startVertexCreate(BasicVisualizationServer<V, E> vv, Point2D point) { V newVertex = vertexFactory.get(); Layout<V,E> layout = vv.getGraphLayout(); Graph<V,E> graph = layout.getGraph(); graph.addVertex(newVertex); layout.setLocation(newVertex, vv.getRenderContext().getMultiLayerTransformer().inverseTransform(point)); vv.repaint(); }
public void actionPerformed(ActionEvent e) { Collection picked = new HashSet(vv.getPickedVertexState().getPicked()); for(Object v : picked) { if(v instanceof Graph) { Graph g = collapser.expand(layout.getGraph(), (Graph)v); vv.getRenderContext().getParallelEdgeIndexFunction().reset(); layout.setGraph(g); } vv.getPickedVertexState().clear(); vv.repaint(); } }});
/** * @param v * @param location * @see edu.uci.ics.jung.algorithms.layout.Layout#setLocation(java.lang.Object, java.awt.geom.Point2D) */ public void setLocation(V v, Point2D location) { delegate.setLocation(v, location); }
@SuppressWarnings({ "unchecked", "rawtypes" }) public void collapse(Layout layout, Forest tree, Object subRoot) throws InstantiationException, IllegalAccessException { // get a sub tree from subRoot Forest subTree = TreeUtils.getSubTree(tree, subRoot); Object parent = null; Object edge = null; if(tree.getPredecessorCount(subRoot) > 0) { parent = tree.getPredecessors(subRoot).iterator().next(); edge = tree.getInEdges(subRoot).iterator().next(); } tree.removeVertex(subRoot); if(parent != null) { tree.addEdge(edge, parent, subTree); } else { tree.addVertex(subTree); } layout.setLocation(subTree, (Point2D)layout.apply(subRoot)); }