SWT TreeViewer neuen Input setzen

Ronschk

Mitglied
Hi,
wenn ich eine Objekt zu meiner Objektstruktur hinzufüge, erstelle ich daraufhin einen neuen TreeViewer Input und gebe ihn an den TreeViewer weiter. An sich ändert sich der Viewer also nicht, bis auf das eine neue Datei hinzugefügt wurde, aber ich erstelle den Input halt neu.
Das Problem ist, dass der TreeViewer natürlich nicht erkennt, dass die beiden Objekt fast identisch sind und zeigt darum den baum in vollkommen eingeklappten Anfangszustand an.
Hat jemand eine Idee, wie ich das ändern kann?

Der Hintergrund, warum ich das mache ist:
Ich habe eine StrukturA mit Objekten die Daten enthalten. Außerdem habe ich im TreeViewer eine Kopie der StrukturA, nur dass die Objekte die in der StrukturB sind, nicht die Daten enthalten, sondern IDs mit denen ich die Objekte in StrukturA identifizieren kann. So das wenn ich im TreeViewer auf einen Eintrag klicke, ich das entsprechende Objekt aus StrukturA angezeigt bekomme.
Beide Strukturen sollen natürlich zu jeder Zeit genau gleich sein. Um das zu erreichen hat meine StrukturA also eine Funktion die anhand der Daten in StrukturA, eine StrukturB erzeugt und diese dem TreeViewer gibt.

Kann ich also irgendwie erreichen, dass ich dem TreeViewer einen neuen Input gebe und er daraufhin die Verzweigung so darstellt, wie sie vorher angezeigt war?
 
Das lässt sich leider gar nicht bis nur sehr schwierig ändern.
Das Problem ist, dass der Viewer nicht wissen kann, welche Knoten er kennt und welche neu sind.

Man kann versuchen sich den alten Zustand zwischenzuspeichern, dann den Input zu setzen und den vorherigen Zustand wieder einzuspielen. (Siehe z.B. AbstractTreeViewer (Eclipse Platform API Specification)) und Help - Eclipse Platform[]%29)

Ggf. muss das auch per Hand gemacht werden (was beim Remove eines Elements aus dem Tree notwendig sein könnte)

Ein besserer Weg ist mir leider nicht bekannt.
 
hm ja, das habe ich mir heute auch überlegt.
Ich denke, dass das alles ein bisschen zu aufwändig ist und werde es daher wohl sein lassen.
Trotzdem danke!
 
Die Frage ist doch eher warum sowas kompliziertes machen willst? 2 Strukturen in einem TreeViewer anzeigen warum so umständlich und nicht einfach das Anzeigen was du gerade willst?
 

Neue Themen


Zurück
Oben