Refresh TreeViewer using JFace Databing

Fanta86

Grünschnabel
Hallo

Ich verwende JFace Databinding um einen TreeViewer an mein Modell zu binden, dabei habe ich aber folgendes Problem:
Der Baum wird Stück für Stück aufgebaut, der Benutzer kann Knoten nachträglich zum Baum hinzufügen. Das hinzufügen wird mit Hilfe eines Commands ausgeführt und ein neuer Knoten zum Modell hinzugefügt, dabei wird aber der Baum nicht "refreshed" und der neue Knoten ist somit nicht sichtbar, aber im Modell vorhanden. Gibt es eine Möglichkeit den Baum beim Hinzufügen von Knote zu refreshen? Wird ein Knotenname geändert wird diese Änderung auch direkt im TreeViewer angezeigt, falls ein Knoten hinzugefügt wurde, wird dieser auch angezeigt, da der Baum durch das Ändern des Knotennames scheinbar einem Refresh unterzogen wurde.

Alle Knoten werden von mir bzw. den ContentProvider in eine WritableList gepackt, durch das Verpacken in eine solche Liste sollte doch auf Änderungen in dieser Liste hingewiesen werden oder nicht?

Der Verpackungsvorgang + ContentProvider:
Code:
ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(new TreeObservableFactory(), null)
TreeObservableFactory:
Code:
public class TreeObservableFactory implements IObservableFactory {
		@Override
		public IObservable createObservable(Object target) {
			if (target instanceof ArrayList<?>) {
				return new WritableList( ((ArrayList<?>) target), ArrayList.class);
			} else if (target instanceof Root) {
				return new WritableList(((Root) target).getSubNodeStageOne(), Root.class);
			} else if (target instanceof SubNodeStageOne) {
				return new WritableList(((SubNodeStageOne) target).getSubNodeStageTwo(), SubNodeStageOne.class);
			} else if (target instanceof SubNodeStageTwo) {
				return new WritableList(((SubNodeStageTwo) target).getgetSubNodeStageThree(), SubNodeStageTwo.class);
			} else {
				return null;
			}
		}
	}
Mein LabelProvider erbt von "ListeningLabelProvider" und implementiert "ITableLabelProvider".

Wie oben schon gesagt werden die Labels der Knoten im Baum geändert, wenn sich diese im Modell ändern. Nach dem hinzufügen von neuen Knoten wird der Baum jedoch nicht automatisch refreshed, was doch durch die Verwendung von WritableListen normalerweise der Fall sein sollte oder nicht?

MFG
Fanta86
 
Wenn das Modell geändert wird muss das bekanntgemacht werden mit z.b:
mymodel.fireContentsChanged(mymodell,pos,pos);
 

Neue Beiträge

Zurück