Eine View aktuallesieren

Steffen01

Mitglied
Hi,

habe da ein kleiner Problem mit der Aktuallesierung meinr View.

Könte mir einer sagen wie ich aus einer Klasse eine View-Klasse, die einen TreeViewer beinhaltet zu aktuallesieren?! Beide Classen sind im selben PlugIn



Habe es mit:

(TestView)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("de.test.view");

versucht. Jedoch habe ich eine NullPointerException bekommen.

Muss ich einen Listener anwenden oder geht es doch irgend wie mit der obrigen kombination

Wäre super wenn mir da einer weiter helfen könnte.

Grüsse
 
normalerweise sollte deine klasse dann nach dem observer konzept handeln

du erzeugst einmal ein Interface IUpdateView welches eine methode updateView() enthält

die klasse hat ein feld von IUpdateView-listeners, methoden zum hinzufügen und entfernen der von IUpdateView-listeneres

und eine methode fireUpdateViewer welche dann für die registrierten listener die methode updateView() aufruft


dein TreeViewer hat dann auch hoffentlich einen ContentProvider, dieser soll dann das Interface IUpdateView implementieren, in der methode updateView() { hast du dann viewer.refresh() };

die einzigen zwei dinge die dir noch fehlen im contenprovider sind dann, 1. als listener hinzufügen, 2. die lokale variable viewer

dazu verwendest du inputChanged():
dort machst du dann Klasse.getInstance().addIUpdateListener(this);
und weiters noch: this.viewer = viewer;

wenn du willst kann ich dir auch mal beispiel code zur verfügung kommen lassen wo das ganze etwas ausführlicher ist
 
Zuletzt bearbeitet:
Danke schön für die schnelle Antwort.

Also ich entwickle einen RCP, ich dachte es geht ein wenig einfacher auf Views zuzugreifen.

Also mit dem:
TestView tv= (TestView)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("de.test.vie w");

Evtl. setze ich ja die View ID falsch.

Aber ich nehme sehr gerne das Angebot war .. damit ich das mit den listener verstehe.

Bzw. wenn ich es nicht anderst hin bekomme diese alternative nehme.


Danke schön im voraus
Grüße
Steffen
 
sobald ich dienstag in die arbeit komme, werde ich dir das zukommen lassen

aber wenn du eine klasse hast, und du willst da die treeview aktualisisieren, dann ist die schöne und richtige lösung mithilfe von listernern

das verwendete konzept findet nicht umsonst überall in der eclipse entwicklungsumgebung seine anwendung ;)

mfg schönes weekend
 
Hallo,

ich weiß nicht ob es für dein Problem eine Hilfe ist, aber ich habe auch das Problem gehabt, dass ich aus einer View in einer anderen View eine Tabelle aktualisieren wollte.
Ich habe es wie folgt hinbekommen:
Code:
IViewReference[] viewReferences = activeWorkbenchWindow.getActivePage().getViewReferences();

for (int i = 0; i < viewReferences.length; i++) {
		if (viewReferences[i].getId().equals(View.ID)) {
		    View tmpView = (View) viewReferences[i].getView(true);
		    tmpView.refreshTable();
		}
}

Vielleicht hilft es ja!

Gruß
SP
 
Zurück