Aktualisierung von Treeviewer

schuetzejanett

Erfahrenes Mitglied
Hallo

ich habe in einen JFace treeviewer. Bei doppelklick auf ein element will ich den viewer aktualisieren. Also die enthaltenen Daten. Anschließend sol das selbe Element wieder aufklappt sein. Dafür speichere ich mir vor dem input in einem Object[] die expandet nodes setze die neuen (aktualisierten) Daten und lade das Object[] wieder. Aber es passiert nix.
Dann habe ich gegoogles und herausgelesen, das Haschcode und equals für die datentypen erstellt werden müssen. Also habe ich das auch noch gemacht aber immer noch nix.

Als nächstes habe ich mir nicht die expandierten Knoten sondern die expandierten TreePfade gespeichert und geladen aber auch das hat nicht funktioniert.

Wie schaffe ich es nun in meinem SWT Tree das element wieder anzuzeigen bzw, den Baum bis zu diesem element zu öffnen.

Habe auch schon überlegt, vor dem aktualisieren den baum nah oben auszulesen, die elemente zu speichern und dann nach dem aktualisieren mich wieder so zu dem richtigen Element durchzuhangeln. Aber da weiß ich nicht, wie ich mich nach unten durchhangle.

Hier mein Code der Aktualisierung
Code:
      tree.addMouseListener(new MouseAdapter() { 

         @Override 
         public void mouseDown(MouseEvent e) { 
            if (e.button == 3) { 
               final Object[] alt = viewer.getExpandedElements(); 
               final TreePath[] pfad = viewer.getExpandedTreePaths(); 
               try {    
                  final List<PrintJob> listJobs = client.refreshlistJobs();                   
                  Display.getDefault().asyncExec(new Runnable() { 
                     public void run() { 

                        viewer.setInput(listJobs); 
                        viewer.setExpandedElements(alt); 
                        viewer.refresh(); 
                                   viewer.setExpandedTreePaths(pfad); 
                        viewer.refresh(); 
                     } 
                  }); 

                   
                  Object[] neu = viewer.getExpandedElements(); 
                  TreePath[] pfadneu = viewer.getExpandedTreePaths(); 
                  boolean b1 = neu.equals(alt); 
                  boolean b2 = pfadneu.equals(pfad); 
                  System.out.println("elem:" + b1 + "  pfad " + b2); 
                   
               } catch (Exception ex) { 
                  System.out.println(ex.getMessage()); 
                  ex.printStackTrace(); 
               } 
            } 
         } 

      });


Aber wie gesagt bei dem anschließenden vergleich kommt beide male false raus.

Jemand ne Idee wie ich das Treeitem aufgeklappt und selectiert bekomme?
 
Zurück