GraphStream Users

Archives de la liste Aide

Re: integrating viewer and communication between viewer and graph

Chronologique Discussions 
  • From: "Gergely Zahoransky-Kohalmi" <gzahoransky-kohalmi AT>
  • To: <guilhelm.savin AT>,<graphstream-users AT>
  • Subject: Re: integrating viewer and communication between viewer and graph
  • Date: Fri, 13 Dec 2013 00:51:52 -0700

Dear Guilhelm,

Thank you for your quick answer!

I tried to add the ViewerPipe but I still could not get it working the way I
want. I am sure, however, that there are some confusion on my end.

To start with: does the class that implements ViewerListener need to be the
main class (i.e. the class of the program, like Clicks () in the example)?

When I tried to adopt the example to my class (which is not the "main" class)
then I things got hung up when I included the loop part (with the
"fromViewer.pump()" from the example). If I did not include the pump, only
called it when I thought I needed it, then I got an error. This error was
related to creating nodes that already existed. This was weird, because only
change that happened in the view was that I selected some nodes. Then I
wanted to list the nodeIDs of the selected nodes by a function (which called
invoked the pump) and this is how I got that error.

I also tried not to define a ViewerListener subclass but I kept everything
else (i.e. I set up a VieverPipe, added the graph as sink to it, included the
lop), but in that case nothing really happens. But there's no hung up,
meaning that everything is visualized, and I did not get that weird error
message despite the pump was invoked...

I am not sure if this is related or not, but I defined a MouseManager that
basically inactivates the click on sprites by checking for a specific
attribute that I add to sprites.

I wonder if you have any suggestion.



>>> guilhelm savin 12/12/13 2:26 PM >>>
Dear Gergely,

1. You need a ViewerPipe created by the viewer and connected to the
original graph to retrieve ui events. Click() example does this connection.

2. Viewer is not a ui component, it contains all the element linked to this
ui. However, View is a JPanel. So, if you are using the "display()" method,
just call "viewer.getDefaultView();" to get this JPanel. Or, create a
viewer, using "Viewer(graph,
Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD);", then call the
"addDefaultView(openInAFrame);" method of this viewer to get the JPanel.



2013/12/12 Gergely Zahoransky-Kohalmi

> Dear List,
> I'd like to ask for your help in the following issues.
> My goal is to have a Swing integrated View of the graph (preferably as a
> separate thread from the main thread)
> in which changes made to nodes are propagated back to the underlying graph.
> Here is what I tried:
> 1. I initiated my viewer as viewer = graph.display() , and it works fine
> as far as selecting nodes
> (they change color, I can select and deselect them with right mouse click
> or by dragging mouse).
> However, when a node (actually the representation of the node in the
> viewer) is selected, i.e. the element
> gets the attribute ui.selected, when I loop through the nodes of the
> graph, none of the nodes has the attribute
> ui.selected. I think this is due to the lack of the backwards
> communication from the viewer to the graph.
> With other word, no matter what change is made in the viewer, it's not
> reflected in the graph itself.
> As far as I understand, this is the way it should work, according to the
> tutorial on Views.
> So how can I change this? Or how can I access nodes of the graph that have
> a ui.selected attribute in the view?
> 2. I tried the Click() example in the tutorial, and it worked fine. So how
> can I integrate this as a separate
> GUI thread in a Swing GUI application? The Click() example creates the
> view via graph.display() and
> not via "Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD);".
> I think the conflict here is that integration into Swing requires a JPanel
> class (like the View is a
> subclass of JPanel), but the synchronized viewer-graph class is not a
> JPanel subclass.
> Any help would be greatly appreciated! Thanks a lot!
> Best,
> Gergely

Guilhelm Savin
PhD Student of Computer Science
LITIS, University of Le Havre

Archives gérées par MHonArc 2.6.16.

Top of page