# Plugin: View beim Button-Klick austauschen



## sven-ber (20. Mrz 2010)

Hallo zusammen,

ich habe ein Programm entwickelt, welches immer nur eine View als Standalone anzeigen soll. Klickt der User auf einen Button soll anstelle dieser View eine andere View angezeigt werden.

Mit meinem Lösungsansatz, nur eine View zu verwenden und in dieser View nur Composites auszutauschen funktioniert nur teilweise, weil die View nur bedingt den Inhalt aktualisiert.

Gibt es ein Lösungsansatz der ganze Views austauscht? Auf welcher Ebene müsste ich eingreifen?

Gruß,

Sven-ber


----------



## Foermchen82 (20. Mrz 2010)

Was genau verstehst du unter einer View? Ein Panel, ein Frame, oder was?

Wenn es ein Panel ist, kannst du z.b. das CardLayout nehmen und bei Bedarf die entsprechende Card anzeigen lassen.


----------



## Wildcard (20. Mrz 2010)

Foermchen82 hat gesagt.:


> Was genau verstehst du unter einer View? Ein Panel, ein Frame, oder was?


Plattformprogrammierung -> Eclipse RCP

@sven-ber
Composites austauschen funktionier schon, was genau war dein Problem und wie hattest du es implementiert?
Falls du wirklich Views austauschen möchtest, handelst es sich immer um die gleiche View (gleiche ID), oder um echt verschiedene? Wenn es die gleiche ist, ist es eine allowsMultiple view (also mit sekundär ID), oder eine Singleton View?


----------



## Foermchen82 (20. Mrz 2010)

Wildcard hat gesagt.:


> Plattformprogrammierung -> Eclipse RCP
> 
> @sven-ber
> Composites austauschen funktionier schon, was genau war dein Problem und wie hattest du es implementiert?
> Falls du wirklich Views austauschen möchtest, handelst es sich immer um die gleiche View (gleiche ID), oder um echt verschiedene? Wenn es die gleiche ist, ist es eine allowsMultiple view (also mit sekundär ID), oder eine Singleton View?



ah ok, ich sollte mal lesen, in welchem Forum der Post ist *g*


----------



## sven-ber (20. Mrz 2010)

@Wildcard
In meinem Versuch hatte ich alle 10 Sekunden das Composite der View gewechselt (es sind immer verschiedene Composites). Gewechselt heißt: Das alte Composite wird mit dispose() von der Oberfläche entfernt. (das hat funktioniert). Das neue Composite wird zur parent-Composite hinzugefügt. Das alleine hatte allerdings nicht gereicht um das neue Composite anzuzeigen. Selbst mit pack(), redraw() und update() wurde die neue Composite nicht angezeigt -> erst beim resizen der Window. Darum möchte ich nun den Weg über die verschiedenen Views einschlagen.

Es sind handelt sich um echt verschiedene Views. Am Beispiel:
Es soll ein Netzwerkspiel programmiert werden. Hier erst einmal nur die Client-Seite. Der Client besteht aus 3 Views. 
1. View: Anmeldung an Spielserver und Spiel
2. View: Waitingroom bis alle Spieler vollzählig sind
3. View: Das Spiel selber
Alle sollen jeweils als Standalone angezeigt werden - nacheinander. Beim Anmelden am Spielserver sollen z.b. der Übergang von der ersten zur zweiten View eingeleitet werden. D.h. die alte View wird disposed und die neue View angezeigt.
Die Frage ist: Wie?


----------



## Wildcard (20. Mrz 2010)

sven-ber hat gesagt.:


> @Wildcard
> In meinem Versuch hatte ich alle 10 Sekunden das Composite der View gewechselt (es sind immer verschiedene Composites). Gewechselt heißt: Das alte Composite wird mit dispose() von der Oberfläche entfernt. (das hat funktioniert). Das neue Composite wird zur parent-Composite hinzugefügt. Das alleine hatte allerdings nicht gereicht um das neue Composite anzuzeigen. Selbst mit pack(), redraw() und update() wurde die neue Composite nicht angezeigt -> erst beim resizen der Window. Darum möchte ich nun den Weg über die verschiedenen Views einschlagen.


Du musst layout auf dem Parent Composite aufrufen.


----------



## sven-ber (20. Mrz 2010)

Danke, es funktioniert jetzt.

Trotzdem noch die Hintergrundfrage: Ist das die feine Art? Wie würdest du ein solches Problem lösen?


----------



## Wildcard (21. Mrz 2010)

Deine Erklärung hat mir nicht viel gesagt, also kann ich dazu schlecht stellung nehmen.
Views zu schließen ist jedenfalls nicht die feine Art und generell nur eine zu haben ist etwas seltsam.


----------

