Wann ist der refresh(true) der ChildFactory fertig?

Alles zu NetBeans als RCP-Platform

Moderator: wegus

Antworten
WeserLinux
Beiträge: 89
Registriert: 16.03.2012, 10:46
Wohnort: Niedersachsen

Wann ist der refresh(true) der ChildFactory fertig?

Beitrag von WeserLinux » 10.03.2014, 10:16

Hallo Zusammen !

In einer NB 7.3 Applikation erweitere ich meine Klasse um ChildFactory.Detachable<...> um meine Nodes und Children-Nodes über einen ExplorerManager darzustellen. Gleichzeitig ist ein PropertyChangeListener implementiert, um auf Änderungen im darunter liegenden Datenmodell zu hören. Ändert sich nun das Datenmodell erfolgt ein FirePropertyChange, was ein refresh(true) auslöst und die Nodes anpasst. Soweit der simple Teil.

Nun werden leider in einem älteren Bereich der Applikation, diese Nodes (+Children) direkt abgefragt über

Code: Alles auswählen

exploererManager.getRootContext().getChildren().getNodes()
und natürlich scheinen sich der refresh(true) mit der o.g. Nodes-Abfrage zu überschneiden, soll heißen, nicht alle Nodes/Childnodes sind rechtzeitig generiert.

Meine Frage ist nun: Gibt es eine Möglichkeit den refresh(true) Vorgang der erst createKeys(...) und dann createNodeForKey(...) auslöst vollständig abzuwarten, bevor wieder auf die Nodes zugegriffen wird?

Danke Euch

Benutzeravatar
nigjo
Beiträge: 651
Registriert: 08.09.2009, 09:43
Wohnort: Aachen
Kontaktdaten:

Re: Wann ist der refresh(true) der ChildFactory fertig?

Beitrag von nigjo » 10.03.2014, 12:44

Hi

Ich hoffe für Dich, dass du den "älteren Bereich der Applikation" noch ändern kannst. Denn in den JavaDocs zu getChildren() steht explizit drin, dass man diese Methode nicht nutzen sollte um Daten "abzugreifen". Das sollte immer über das Datenmodell passieren. Zur Not kann man auch zusätzliche Daten ins Lookup der Nodes packen, die dann abgefragt werden, aber getChildren() von Nodes aus einem ExplorerManager sollte man nur abfragen, wenn man selber ein ExplorerView schreibt. Aber auch dann sollten entsprechende Listener am Manager und an den Nodes angemeldet werden, die auf Änderungen reagieren können.

Sich darauf zu verlassen, dass ein refresh "rechtzeitig" fertig wird halte ich für sehr gewagt. Dafür sind bei diesem Updateprozess - so weit ich das bisher überblicken konnte - viel zu viele Threads involviert als das man da verlässliche Aussagen zu treffen könnte. Ich lass mich da aber auch gerne eines Besseren belehren.

Gruß
Jens
Man sollte seine Werkzeuge kennen. Ansonsten haut man sich mit dem Hammer nur auf die Finger.

--
NetBeans Certified Engineer - Java Getriebe

WeserLinux
Beiträge: 89
Registriert: 16.03.2012, 10:46
Wohnort: Niedersachsen

Re: Wann ist der refresh(true) der ChildFactory fertig?

Beitrag von WeserLinux » 10.03.2014, 12:56

Hallo Jens,

das habe ich mir schon gedacht, dass da wohl etwas umgeschrieben werden muss. Leider ist der "ältere" Teil etwas groß und meine Hoffnung war, dass es eine vielleicht "unschönere" Lösung gibt, das refresh(true) vollständig beenden zu lassen und erst dann die neue Nodes (+Children) Liste anfässt.

Gruss

Olaf

Antworten