List of usage examples for org.apache.commons.collections15 Transformer Transformer
Transformer
From source file:com.google.code.facebook.graph.sna.applet.VertexLabelAsShapeDemo.java
/** * create an instance of a simple graph with basic controls */// w w w . ja va2 s . c o m public VertexLabelAsShapeDemo() { // create a simple graph for the demo graph = TestGraphs.getOneComponentGraph(); layout = new FRLayout<String, Number>(graph); Dimension preferredSize = new Dimension(400, 400); final VisualizationModel<String, Number> visualizationModel = new DefaultVisualizationModel<String, Number>( layout, preferredSize); vv = new VisualizationViewer<String, Number>(visualizationModel, preferredSize); // this class will provide both label drawing and vertex shapes VertexLabelAsShapeRenderer<String, Number> vlasr = new VertexLabelAsShapeRenderer<String, Number>( vv.getRenderContext()); // customize the render context vv.getRenderContext().setVertexLabelTransformer( // this chains together Transformers so that the html tags // are prepended to the toString method output new ChainedTransformer<String, String>( new Transformer[] { new ToStringLabeller<String>(), new Transformer<String, String>() { public String transform(String input) { return "<html><center>Vertex<p>" + input; } } })); vv.getRenderContext().setVertexShapeTransformer(vlasr); vv.getRenderContext().setVertexLabelRenderer(new DefaultVertexLabelRenderer(Color.red)); vv.getRenderContext().setEdgeDrawPaintTransformer(new ConstantTransformer(Color.yellow)); vv.getRenderContext().setEdgeStrokeTransformer(new ConstantTransformer(new BasicStroke(2.5f))); // customize the renderer vv.getRenderer() .setVertexRenderer(new GradientVertexRenderer<String, Number>(Color.gray, Color.white, true)); vv.getRenderer().setVertexLabelRenderer(vlasr); vv.setBackground(Color.black); // add a listener for ToolTips vv.setVertexToolTipTransformer(new ToStringLabeller<String>()); final DefaultModalGraphMouse<String, Number> graphMouse = new DefaultModalGraphMouse<String, Number>(); vv.setGraphMouse(graphMouse); vv.addKeyListener(graphMouse.getModeKeyListener()); Container content = getContentPane(); GraphZoomScrollPane gzsp = new GraphZoomScrollPane(vv); content.add(gzsp); JComboBox modeBox = graphMouse.getModeComboBox(); modeBox.addItemListener(graphMouse.getModeListener()); graphMouse.setMode(ModalGraphMouse.Mode.TRANSFORMING); final ScalingControl scaler = new CrossoverScalingControl(); JButton plus = new JButton("+"); plus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1.1f, vv.getCenter()); } }); JButton minus = new JButton("-"); minus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1 / 1.1f, vv.getCenter()); } }); JPanel controls = new JPanel(); JPanel zoomControls = new JPanel(new GridLayout(2, 1)); zoomControls.setBorder(BorderFactory.createTitledBorder("Zoom")); zoomControls.add(plus); zoomControls.add(minus); controls.add(zoomControls); controls.add(modeBox); content.add(controls, BorderLayout.SOUTH); }
From source file:io.datalayer.jung.SdpGraphMLDemo.java
/** * create an instance of a simple graph with controls to demo the zoom * features.//from w ww . ja va 2 s. co m * * @throws SAXException * @throws ParserConfigurationException * @throws IOException */ public SdpGraphMLDemo(String filename) throws ParserConfigurationException, SAXException, IOException { Factory<Number> vertexFactory = new Factory<Number>() { int n = 0; public Number create() { return n++; } }; Factory<Number> edgeFactory = new Factory<Number>() { int n = 0; public Number create() { return n++; } }; GraphMLReader<DirectedGraph<Number, Number>, Number, Number> gmlr = new GraphMLReader<DirectedGraph<Number, Number>, Number, Number>( vertexFactory, edgeFactory); final DirectedGraph<Number, Number> graph = new DirectedSparseMultigraph<Number, Number>(); gmlr.load(filename, graph); // create a simple graph for the demo vv = new VisualizationViewer<Number, Number>(new FRLayout<Number, Number>(graph)); vv.addGraphMouseListener(new TestGraphMouseListener<Number>()); vv.getRenderer().setVertexRenderer(new GradientVertexRenderer<Number, Number>(Color.white, Color.red, Color.white, Color.blue, vv.getPickedVertexState(), false)); // add my listeners for ToolTips vv.setVertexToolTipTransformer(new ToStringLabeller<Number>()); vv.setEdgeToolTipTransformer(new Transformer<Number, String>() { public String transform(Number edge) { return "E" + graph.getEndpoints(edge).toString(); } }); vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<Number>()); vv.getRenderer().getVertexLabelRenderer().setPositioner(new InsidePositioner()); vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.AUTO); // create a frome to hold the graph final JFrame frame = new JFrame(); Container content = frame.getContentPane(); final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv); content.add(panel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final AbstractModalGraphMouse graphMouse = new DefaultModalGraphMouse<Number, Number>(); vv.setGraphMouse(graphMouse); vv.addKeyListener(graphMouse.getModeKeyListener()); JMenuBar menubar = new JMenuBar(); menubar.add(graphMouse.getModeMenu()); panel.setCorner(menubar); vv.addKeyListener(graphMouse.getModeKeyListener()); vv.setToolTipText("<html><center>Type 'p' for Pick mode<p>Type 't' for Transform mode"); final ScalingControl scaler = new CrossoverScalingControl(); JButton plus = new JButton("+"); plus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1.1f, vv.getCenter()); } }); JButton minus = new JButton("-"); minus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1 / 1.1f, vv.getCenter()); } }); JPanel controls = new JPanel(); controls.add(plus); controls.add(minus); content.add(controls, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); }
From source file:edu.uci.ics.jung.visualization3d.PluggableRenderContext.java
public PluggableRenderContext() { super();//from ww w . j a va 2 s .co m Color3f lightGray = new Color3f(0.7f, 0.7f, 0.7f); Color3f black = new Color3f(0, 0, 0); Color3f white = new Color3f(1, 1, 1); Color3f gray = new Color3f(.2f, .2f, .2f); Color3f red = new Color3f(1, 0, 0); Color3f yellow = new Color3f(0, 1, 1); Material lightGrayMaterial = new Material(lightGray, black, lightGray, white, 100.0f); Material blackMaterial = new Material(lightGray, black, black, lightGray, 10.0f); Material whiteMaterial = new Material(white, white, white, white, 100.0f); Material grayMaterial = new Material(gray, black, gray, gray, 100.0f); Material redMaterial = new Material(red, black, red, red, 100.0f); Material yellowMaterial = new Material(yellow, black, yellow, yellow, 100.0f); final Appearance lightGrayLook = new Appearance(); lightGrayLook.setMaterial(lightGrayMaterial); Appearance blackLook = new Appearance(); blackLook.setMaterial(blackMaterial); Appearance whiteLook = new Appearance(); whiteLook.setMaterial(whiteMaterial); Appearance grayLook = new Appearance(); grayLook.setMaterial(grayMaterial); // grayLook.setCapability(Appearance.ALLOW_MATERIAL_READ); // grayLook.setCapability(Appearance.ALLOW_MATERIAL_WRITE); final Appearance redLook = new Appearance(); redLook.setMaterial(redMaterial); final Appearance yellowLook = new Appearance(); yellowLook.setMaterial(yellowMaterial); final Cylinder cylinder = new Cylinder(1, 1, Cylinder.GENERATE_NORMALS | Cylinder.ENABLE_GEOMETRY_PICKING, 26, 26, lightGrayLook); final Sphere sphere = new Sphere(10, Sphere.GENERATE_NORMALS | Sphere.ENABLE_GEOMETRY_PICKING, redLook); final Box box = new Box(10, 10, 10, Box.GENERATE_NORMALS | Box.ENABLE_GEOMETRY_PICKING, redLook); this.edgeAppearanceTransformer = new ConstantTransformer(lightGrayLook); this.edgeShapeTransformer = new Transformer<Context<Graph<V, E>, E>, Node>() { public Node transform(Context<Graph<V, E>, E> ec) { LineArray lineArray = new LineArray(2, LineArray.COORDINATES | LineArray.COLOR_3); lineArray.setCoordinates(0, new Point3f[] { new Point3f(0, -.5f, 0), new Point3f(0, .5f, 0) }); lineArray.setColor(0, new Color3f(1, 1, 1)); lineArray.setColor(1, new Color3f(1, 1, 1)); Shape3D shape = new Shape3D(); shape.setGeometry(lineArray); return shape; // return new Cylinder(1, 1, // Cylinder.GENERATE_NORMALS | // Cylinder.ENABLE_GEOMETRY_PICKING, // 26, 26, lightGrayLook); } }; this.vertexAppearanceTransformer = new ConstantTransformer(redLook); this.vertexShapeTransformer = new Transformer<V, Node>() { public Node transform(V arg0) { return new Sphere(10, Sphere.GENERATE_NORMALS | Sphere.ENABLE_GEOMETRY_PICKING | Sphere.ENABLE_APPEARANCE_MODIFY, redLook); } }; }
From source file:com.google.code.facebook.graph.sna.applet.GraphFromGraphMLDemo.java
/** * create an instance of a simple graph with controls to * demo the zoom features.//from ww w.j av a 2s . co m * @throws SAXException * @throws ParserConfigurationException * @throws IOException * */ public GraphFromGraphMLDemo(String filename) throws ParserConfigurationException, SAXException, IOException { Factory<Number> vertexFactory = new Factory<Number>() { int n = 0; public Number create() { return n++; } }; Factory<Number> edgeFactory = new Factory<Number>() { int n = 0; public Number create() { return n++; } }; GraphMLReader<DirectedGraph<Number, Number>, Number, Number> gmlr = new GraphMLReader<DirectedGraph<Number, Number>, Number, Number>( vertexFactory, edgeFactory); final DirectedGraph<Number, Number> graph = new DirectedSparseMultigraph<Number, Number>(); gmlr.load(filename, graph); // create a simple graph for the demo vv = new VisualizationViewer<Number, Number>(new FRLayout<Number, Number>(graph)); vv.addGraphMouseListener(new TestGraphMouseListener<Number>()); vv.getRenderer().setVertexRenderer(new GradientVertexRenderer<Number, Number>(Color.white, Color.red, Color.white, Color.blue, vv.getPickedVertexState(), false)); // add my listeners for ToolTips vv.setVertexToolTipTransformer(new ToStringLabeller<Number>()); vv.setEdgeToolTipTransformer(new Transformer<Number, String>() { public String transform(Number edge) { return "E" + graph.getEndpoints(edge).toString(); } }); vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<Number>()); vv.getRenderer().getVertexLabelRenderer().setPositioner(new InsidePositioner()); vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.AUTO); // create a frome to hold the graph final JFrame frame = new JFrame(); Container content = frame.getContentPane(); final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv); content.add(panel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final AbstractModalGraphMouse graphMouse = new DefaultModalGraphMouse<Number, Number>(); vv.setGraphMouse(graphMouse); vv.addKeyListener(graphMouse.getModeKeyListener()); JMenuBar menubar = new JMenuBar(); menubar.add(graphMouse.getModeMenu()); panel.setCorner(menubar); vv.addKeyListener(graphMouse.getModeKeyListener()); vv.setToolTipText("<html><center>Type 'p' for Pick mode<p>Type 't' for Transform mode"); final ScalingControl scaler = new CrossoverScalingControl(); JButton plus = new JButton("+"); plus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1.1f, vv.getCenter()); } }); JButton minus = new JButton("-"); minus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1 / 1.1f, vv.getCenter()); } }); JPanel controls = new JPanel(); controls.add(plus); controls.add(minus); content.add(controls, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); }
From source file:edu.osu.netmotifs.warswap.ui.GenerateMotifImages.java
public void generateImagesSize3(Graph<Integer, String> g, String fileName) { Transformer<Integer, Point2D> locationTransformer = new TransformerMotif(motifSize); Layout<Integer, String> layout = new StaticLayout<Integer, String>(g, locationTransformer); layout.setSize(new Dimension(100, 100)); BasicVisualizationServer<Integer, String> vv = new BasicVisualizationServer<Integer, String>(layout); vv.setPreferredSize(new Dimension(120, 120)); Transformer<Integer, Paint> vertexPaint = new Transformer<Integer, Paint>() { public Paint transform(Integer i) { return colPerGraphHash.get(i); }//w w w .j a va 2 s. c o m }; Transformer<Integer, Paint> vertexDrawPaint = new Transformer<Integer, Paint>() { public Paint transform(Integer i) { return colPerGraphHash.get(i); } }; Transformer<Integer, Shape> vertexSize = new Transformer<Integer, Shape>() { public Shape transform(Integer i) { Ellipse2D circle = new Ellipse2D.Double(-10, -10, 20, 20); return AffineTransform.getScaleInstance(0.6, 0.6).createTransformedShape(circle); } }; vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Line()); vv.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR); vv.getRenderContext().setVertexDrawPaintTransformer(vertexDrawPaint); vv.getRenderContext().setVertexShapeTransformer(vertexSize); JPanel jPanel = new JPanel(); jPanel.add(vv); BufferedImage bufImage = null; bufImage = ScreenImage.createImage((JComponent) jPanel); imageOutFile = imagesOutDir + CONF.DIR_SEP + fileName + ".png"; relativePathToImage = "images" + CONF.DIR_SEP + fileName + ".png"; try { File outFile = new File(imageOutFile); ImageIO.write(bufImage, "png", outFile); // System.out.println("wrote image to " + outFile); } catch (Exception e) { System.err.println("writeToImageFile(): " + e.getMessage()); } }
From source file:edu.uci.ics.jung.samples.GraphFromGraphMLDemo.java
/** * create an instance of a simple graph with controls to * demo the zoom features.//from w w w.ja v a 2 s.c o m * @throws SAXException * @throws ParserConfigurationException * @throws IOException * */ public GraphFromGraphMLDemo(String filename) throws ParserConfigurationException, SAXException, IOException { Factory<Number> vertexFactory = new Factory<Number>() { int n = 0; public Number create() { return n++; } }; Factory<Number> edgeFactory = new Factory<Number>() { int n = 0; public Number create() { return n++; } }; GraphMLReader<Graph<Number, Number>, Number, Number> gmlr = new GraphMLReader<Graph<Number, Number>, Number, Number>( vertexFactory, edgeFactory); //final DirectedGraph<Number,Number> graph = new DirectedSparseMultigraph<Number,Number>(); final Graph<Number, Number> graph = new SparseGraph<Number, Number>(); gmlr.load(filename, graph); // create a simple graph for the demo vv = new VisualizationViewer<Number, Number>(new FRLayout<Number, Number>(graph)); vv.addGraphMouseListener(new TestGraphMouseListener<Number>()); vv.getRenderer().setVertexRenderer(new GradientVertexRenderer<Number, Number>(Color.white, Color.red, Color.white, Color.blue, vv.getPickedVertexState(), false)); // add my listeners for ToolTips vv.setVertexToolTipTransformer(new ToStringLabeller<Number>()); vv.setEdgeToolTipTransformer(new Transformer<Number, String>() { public String transform(Number edge) { return "E" + graph.getEndpoints(edge).toString(); } }); vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<Number>()); vv.getRenderer().getVertexLabelRenderer().setPositioner(new InsidePositioner()); vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.AUTO); // create a frome to hold the graph final JFrame frame = new JFrame(); Container content = frame.getContentPane(); final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv); content.add(panel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final AbstractModalGraphMouse graphMouse = new DefaultModalGraphMouse<Number, Number>(); vv.setGraphMouse(graphMouse); vv.addKeyListener(graphMouse.getModeKeyListener()); JMenuBar menubar = new JMenuBar(); menubar.add(graphMouse.getModeMenu()); panel.setCorner(menubar); vv.addKeyListener(graphMouse.getModeKeyListener()); vv.setToolTipText("<html><center>Type 'p' for Pick mode<p>Type 't' for Transform mode"); final ScalingControl scaler = new CrossoverScalingControl(); JButton plus = new JButton("+"); plus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1.1f, vv.getCenter()); } }); JButton minus = new JButton("-"); minus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1 / 1.1f, vv.getCenter()); } }); JPanel controls = new JPanel(); controls.add(plus); controls.add(minus); content.add(controls, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); }
From source file:cs.ucy.ac.cy.osslicense.model.editor.visualizer.LicenseVisualizer.java
public VisualizationViewer<String, Edge> generateGraphView() { Transformer<String, Paint> vertexColor = new Transformer<String, Paint>() { public Paint transform(String licenseTerm) { if (licenseTerm.contains("May")) return Color.GREEN; if (licenseTerm.contains("Must")) return Color.ORANGE; if (licenseTerm.equals("LimitedLiability") || licenseTerm.equals("ProvideWithoutWarranty")) return Color.CYAN; return Color.YELLOW; }//from ww w.ja va 2 s.c o m }; Layout<String, Edge> layout = new CircleLayout<String, Edge>(this.licenseGraph); layout.setSize(new Dimension(1024, 768)); VisualizationViewer<String, Edge> vv = new VisualizationViewer<String, Edge>(layout); vv.setPreferredSize(new Dimension(1024, 768)); vv.getRenderContext().setVertexFillPaintTransformer(vertexColor); vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<String>()); vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller<Edge>()); AbstractModalGraphMouse gm = new DefaultModalGraphMouse<String, Edge>(); vv.setGraphMouse(gm); popupMenu = new LicenseTermPopupMenu<>(licenseModel); gm.add(popupMenu); return vv; }
From source file:de.uniba.wiai.kinf.pw.projects.lillytab.reasoner.ConsistencyInfo.java
public void addCulprits(final IABoxNode<I, L, K, R> node, final Collection<? extends IDLTerm<I, L, K, R>> culprits) { final IABox<I, L, K, R> abox = node.getABox(); final TermEntryFactory<I, L, K, R> termEntryFactory = abox.getTermEntryFactory(); final Collection<TermEntry<I, L, K, R>> culpritEntries = ExtractorCollection.decorate(culprits, new Transformer<IDLTerm<I, L, K, R>, TermEntry<I, L, K, R>>() { @Override//w w w . ja va 2 s . co m public TermEntry<I, L, K, R> transform(IDLTerm<I, L, K, R> input) { return termEntryFactory.getEntry(node, input); } }); addCulpritEntries(abox, Collections.singleton(culpritEntries)); }
From source file:dk.nsi.minlog.ws.ws.MinlogudtraekserviceImpl.java
/** * Webservice which lists all the logentries from the request. *//*from w w w.j a v a 2 s. co m*/ @Override @Transactional(readOnly = true) // We will never modify, so lets optimize. @Protected(minAuthLevel = 3) // aspect which check our request-header and populates the dgws context. @ResponsePayload public ListLogStatementsResponse listLogStatements(@RequestPayload ListLogStatementsRequest request, SoapHeader soapHeader) { final ListLogStatementsResponse response = new ListLogStatementsResponse(); final List<LogEntry> logEntries = logEntryDao.findByCPRAndDates(request.getCprNR(), nullableDateTime(request.getFraDato()), nullableDateTime(request.getTilDato())); logger.debug("Found " + logEntries.size() + " log entries for " + request.getCprNR()); // Convert all the domain model entries into jaxb and set it on the // response. response.getLogEntry().addAll(CollectionUtils.collect(logEntries, new Transformer<LogEntry, dk.nsi.minlog._2012._05._24.LogEntry>() { @Override public dk.nsi.minlog._2012._05._24.LogEntry transform(LogEntry registering) { return toJaxbType(registering); } })); // Cpr is set for the entire response. response.setCprNrBorger(request.getCprNR()); return response; }
From source file:de.naoth.xabsleditor.graphpanel.OptionVisualizer.java
/** (Re-) set to a new graph and display it */ private void doSetGraph(Graph<XabslNode, XabslEdge> g) { if (g == null) { return;//from ww w . j av a 2 s . com } lastX = 0.0; lastY = 0.0; nodeCounter = 0; final int w = Math.max(400, this.getSize().width); final int h = Math.max(400, this.getSize().height); KKLayout<XabslNode, XabslEdge> layout = new KKLayout<XabslNode, XabslEdge>(g); final double nodesPerRow = Math.sqrt(g.getVertexCount()); layout.setMaxIterations(500); layout.setInitializer(new Transformer<XabslNode, Point2D>() { @Override public Point2D transform(XabslNode n) { lastX += (w / nodesPerRow); nodeCounter++; if (nodeCounter % ((int) nodesPerRow) == 0) { lastX = 0; lastY += (h / nodesPerRow); } return new Point2D.Double(lastX, lastY); } }); layout.setSize(new Dimension(w, h)); if (scrollPane != null) { remove(scrollPane); scrollPane = null; } vv = new VisualizationViewer<XabslNode, XabslEdge>(layout); // zooming and selecting DefaultModalGraphMouse<XabslNode, XabslEdge> mouse = new DefaultModalGraphMouse<XabslNode, XabslEdge>(); vv.setGraphMouse(mouse); vv.addKeyListener(mouse.getModeKeyListener()); // enable selecting the nodes mouse.setMode(ModalGraphMouse.Mode.TRANSFORMING); // add external mouse listener if (externalMouseListener != null) { vv.addGraphMouseListener(externalMouseListener); } // determine the shape of the nodes vv.getRenderContext().setVertexShapeTransformer(new VertexTransformer()); // white background for nodes vv.getRenderContext().setVertexFillPaintTransformer(new Transformer<XabslNode, Paint>() { @Override public Paint transform(XabslNode n) { if (n.getType() == XabslNode.Type.Option) { return Color.lightGray; } else { return Color.white; } } }); // howto render the edges (depending whether commond decision or not) vv.getRenderContext().setEdgeStrokeTransformer(new Transformer<XabslEdge, Stroke>() { @Override public Stroke transform(XabslEdge e) { if (e.getType() == XabslEdge.Type.CommonDecision) { return vv.getRenderContext().DASHED; } else { return new BasicStroke(); } } }); vv.getRenderContext().setEdgeDrawPaintTransformer(new Transformer<XabslEdge, Paint>() { @Override public Paint transform(XabslEdge e) { if (e.getType() == XabslEdge.Type.CommonDecision || e.getType() == XabslEdge.Type.Outgoing) { return Color.gray; } else { return Color.black; } } }); // use toString() to draw label and do some extra transformations (splitting at "_") vv.getRenderContext().setVertexLabelTransformer(new ChainedTransformer<XabslNode, String>( new Transformer[] { new ToStringLabeller<XabslNode>(), new Transformer<String, String>() { @Override public String transform(String s) { return "<html><center>" + s.replaceAll("_", "_<br>") + "</center></html>"; } } })); // label is placed in the center of the node vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.CNTR); // add to a zoomable container scrollPane = new GraphZoomScrollPane(vv); scrollPane.setComponentPopupMenu(pmMain); vv.setComponentPopupMenu(pmMain); add(scrollPane, BorderLayout.CENTER); validate(); }