Update Model aus Command

D

Dox1921

Hi, ich habe eine Frage und wäre froh, wenn mir einer mal die richtige Richtung angeben könnte.

Ich habe meine erste RCP-Application geschrieben und mich dabei so ziemlich an das Tutorial von http://www.vogella.de/articles/RichClientPlatform/article.html gehalten. Das heißt, ich habe meinen View, mein Model sowie Content- und LabelProvider.

Das läuft nun auch soweit...bis ich eigene Sachen hingefügt habe ;)

Im Tutorial werden die "Personen"-Objekte, die im Model als Liste vorliegen, statisch im Konstruktor angelegt. Ich habe nun einen weiteren Menu-Punkt hinzugefügt und möchte ganz einfach, dass bei Aktivierung dieses Menu-Eintrags, ein neues "Personen"-Object in das Model eingefügt und der View aktualisiert wird.

Leider habe ich nun schon Stunden nach einer Lösung gesucht, wie man dieses Problem unter einen Hut bringt, denn die einen Objekte wissen nichts von den anderen usw... Auf einer Seite neben dem Tutorial gibt es etwas, was in die Richtung geht, aber da ist das Model als Singleton angelegt und somit "leicht zu erreichen", aber das ist irgendwie ein imho etwas verstaubter Ansatz.

Gibt es da nicht etwas, wo ich z.B. über Listener o.Ä. etwas in der execute-Methode des Commands (des Menüpunktes), respektive des AbstractHandlers, triggern könnte was einerseits das Model erweitert und meinetwegen dann das Model dem evtl registrierten View meldet, dass sich etwas getan hat?


Vielen Dank schon einmal...
Grüße
Dox
 
Also was ist in deinem Modell und was zeigt die View an und wie werden Elemente in das Modell hinzugefügt und wie soll sich die Oberfläche dann ändern?
 
Hi zeja,

"Also was ist in deinem Modell..."

Objekte (im Tutorial Personen 'Records')

"... und was zeigt die View an..."

Objekte (im Tutorial Personen 'Records')...respektive die Daten, die in den Records enthalten sind

"... und wie werden Elemente in das Modell hinzugefügt..."

statisch im Konstruktor (wie im Tutorial... oder im Posting drüber)

"... und wie soll sich die Oberfläche dann ändern?"

öhm....klick, ein neuer Record entsteht (wie ist bislang noch egal) und der View aktualisiert sich, also zeigt den neuen Eintrag an.


Sorry, aber ich verstehe deine Frage nicht wirklich. Alles, was ich nun wiederholt habe, steht auch schon im Eingangsposting. Ich könnte auch statt des Links das komplette Tutorial inkl. der Bilder, die das alles verdeutlichen) posten, aber das wäre vielleicht weniger sinnvoll. Vielleicht könntest du deine Frage ein wenig präzisieren?

Es ist eine simple RCP Anwendung, die komplett über den Extension-Mechanismus der Eclipse aufgebaut wurde. Der View bekommt über die Provider seine Infos, aber im Command (des Menüpunktes) habe ich eigentlich keinerlei Informationen über andere Objekte. Ich könnte über PlatformUI und ViewID mir den View und den darin enthaltenen TableView geben lassen. Darin habe ich dann das Model, aber das muss doch auch eleganter gehen. Ich weiß nur noch nicht wie, da ich sowas noch nicht gemacht habe und auch die Doku ein wenig schwächelt.


Trotzdem Danke für deine Antwort.

Grüße,
Tobias
 
Ja wer lesen kann.... ;) Sorry.

Magst du den lauffähigen Code mal packen und hochladen? Dann würd ich mal reinschaun.
 
Macht ja nichts....

Ich dachte nur, dass es evtl eine Standardlösung gäbe, wie man grundsätzlich verschiedene Objekte registriert, damit durch einen Command Updates weitergeleitet werden können. In speziellen Fall statt des vorhandenen Codes im Exithandler einfach einen neuen Datensatz erzeugen.

Es ist halt ein simples Beispiel im Tutorial und dieses wollte ich eigentlich nur etwas weiter spinnen. Bei mir kennt nun der Command das Model und kann über einen Umweg diesen neu erstellen Satz weiterleiten. Es ist nicht so schön, aber atm pausiert dieses 'Projekt'...bis nächstem Jahr.

Grüße
Dox
 
Zurück