0

I have problem with JUNG and edge (vertex) labels.

My application is based on JUNG. It needs to calculate some values from given graph. Graph needs to be drown "by hand", and on that graph I need to set "starting values". I was thinking to use labels for that values (names for vertex, length for edges).

Now, I can draw a graph; I can get the number of vertexes and edges, but I don't know how to get the labels and values.

I tried using custom classes for edges and vertexes, but than I don't know how to set labels at all.

This is part of my code. It is taken from documentation. Can somebody tell me what to change so I can set labels while drawing graph and after that retrieve values?

graph = new SparseMultigraph<Number, Number>();

    this.layout = new StaticLayout<Number, Number>(graph,
            new Dimension(600, 600));

    vv = new VisualizationViewer<Number, Number>(layout);
    vv.setBackground(Color.white);

    vv.getRenderContext().setVertexLabelTransformer(
            MapTransformer.<Number, String>getInstance(LazyMap.<Number, String>decorate(
            new HashMap<Number, String>(),
            new ToStringLabeller<Number>())));

    vv.getRenderContext().setEdgeLabelTransformer(
            MapTransformer.<Number, String>getInstance(LazyMap.<Number, String>decorate(
            new HashMap<Number, String>(),
            new ToStringLabeller<Number>())));

    vv.setVertexToolTipTransformer(vv.getRenderContext().getVertexLabelTransformer());

    Container content = getContentPane();
    final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv);
    content.add(panel);
    Factory<Number> vertexFactory = new VertexFactory();
    Factory<Number> edgeFactory = new EdgeFactory();

    final EditingModalGraphMouse<Number, Number> graphMouse = new EditingModalGraphMouse<Number, Number>(
            vv.getRenderContext(), vertexFactory, edgeFactory);

    vv.setGraphMouse(graphMouse);
    vv.addKeyListener(graphMouse.getModeKeyListener());
TylerH
  • 20,799
  • 66
  • 75
  • 101
Tomislav29
  • 78
  • 1
  • 6
  • 1
    If you want an answer please spend more time writing the question title and the description. – sorin Nov 17 '11 at 21:06
  • There is a lot of sample code and documentation. Have you looked at any of it? – Joshua O'Madadhain Nov 17 '11 at 22:26
  • @Joshua: Yes, I am searching for answer last 5 or 6 days, tried everything... Right now, to me, seems impossible to get values of those labels. – Tomislav29 Nov 21 '11 at 20:52
  • You need to change the generics to match your generic data types. To set a custom label for an edge using `setEdgeLabelTransformer()`, you can refer [http://stackoverflow.com/questions/3288886/vertex-label-in-jung-graph-visualization](http://stackoverflow.com/questions/3288886/vertex-label-in-jung-graph-visualization). To set a custom label for a vertex, you can pass a `new Transformer()` rather than using the default `new ToStringLabeller()` to `setVertexLabelTransformer()` method – ee. Nov 22 '11 at 02:58

1 Answers1

1

you can use this method to set labels in jung for edges.

edgeName : your edge name

vv.getRenderContext().setEdgeLabelRenderer(new Transformer<String, String>()  {
    @Override
    public String transform(String edgeName) {
       String label;                
       //map your label to your edgeName
       return label;
    }
});

and so on for vertex

TylerH
  • 20,799
  • 66
  • 75
  • 101
arash
  • 176
  • 1
  • 5