GraphStream Users

Archives de la liste Aide


Recuperer les modifications apportees a un GraphicGraph vers un Graph


Chronologique Discussions 
  • From: <tomdu19 AT hotmail.fr>
  • To: graphstream-users AT litislab.fr
  • Subject: Recuperer les modifications apportees a un GraphicGraph vers un Graph
  • Date: Fri, 14 Mar 2014 14:08:21 +0100 (CET)

Bonjour,

Ayant codé ma propre class MouseManager, je souhaite reproduire le
comportement de la class ViewerListener (je souhaite avoir un thread graphique
qui gère les évènements utilisateur, et un thread de calcul ).

Ainsi, lorsqu'il y a un click sur un noeud, je lui attribue un état "noeud
sélectionné" (="ui.selected"). L'état du noeud est donc modifié dans le
GraphicGraph du viewer. Je souhaite synchroniser mon Graph (sur lequel je fais
tous mes calculs) avec ce GraphicGraph modifié. Cependant, je n'y arrive pas.

Par exemple, dans mon GraphicGraph, si j'ajoute un attribut lors d'un click au
noeud correspondant, je souhaite retrouvé ce même attribut dans mon Graph de
calcul (GraphicGraph et Graph étant le même graph). Je souhaite donc que les
modifications faite sur l'un, se reproduise sur l'autre. Pour cela j'ai donc
ajouté un sink. Cependant tout cela ne semble pas fonctionner. Je sollicite
donc votre aide.

Le code sera surement plus parlant, je pense. En esperant m'etre fait
comprendre.

Merci d'avoir pris le temps de repondre.

------------------------------------------------------ CODE
-------------------------------------------------------

Ma class MouseManager :
{

public class ProperMouseManager implements MouseManager
{
private View a_view;
private GraphicGraph a_g;

public void init(GraphicGraph g, View view)
{
this.a_view = view;
this.a_g = g;
a_view.addMouseListener(this);
a_view.addMouseMotionListener(this);
}

public void release()
{
a_view.removeMouseListener(this);
a_view.removeMouseMotionListener(this);
}

public void mousePressed(MouseEvent e)
{
if(e.getButton() == MouseEvent.BUTTON1){
GraphicElement element = a_view.findNodeOrSpriteAt(e.getX(),
e.getY());

if(element != null){
a_g.addAttribute("ui.changed", element.getId());

if (element.hasAttribute("ui.selected"))
element.removeAttribute("ui.selected");
else
element.addAttribute("ui.selected");
}
}
}
}

}


Contenu de ma fonction main :
{

Graph g; //Graph quelconque

Viewer viewer = new Viewer(g,
Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD);
View view = viewer.addDefaultView(false);
view.setShortcutManager(null);
view.setMouseManager(new ProperMouseManager());

JFrame fenetre = new JFrame();
fenetre.add(view);
fenetre.setVisible(true);

ViewerPipe fromViewer = viewer.newViewerPipe();
fromViewer.addSink(g);

while(!g.hasAttribute("ui.viewClosed")){
fromViewer.pump();

if (g.hasAttribute("ui.changed")) {
Node changedNode = g.getNode((String)
g.getAttribute("ui.changed"));
System.out.println(changedNode.getAttribute("ui.selected"));

g.removeAttribute("ui.changed");
}
}
viewer.close();
}


Archives gérées par MHonArc 2.6.16.

Top of page