# RCP TreeViewer



## der_andere (3. Mrz 2010)

Guten Morgen,

habe ein kleines Problem, dass bestimmt schon x-mal erklärt wurde aber ich verstehe nicht, wie ich es realisieren kann.

Folgendes Problem:
Ich habe mir eine View erstellt die einen TreeViewer beinhaltet (auf der rechten Seite) auf der linken Seite ist eine leere View. Nun möchte ich, wenn man in der Baumstruktur einen anderen Link der Doppelklick anklickt sich die leere View sich schließt und sich eine andere öffnet. Bisher habe ich das so gelöst:


```
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IViewReference ref = page.findViewReference(START_VIEW.ID);
IViewPart viewPart = ref.getView(true);
page.hideView(viewPart);
page.showView(ANDERE_VIEW.ID);
```

wie kann ich das machen, das "page.findViewReference" variabel ist, also so dass sie sich merkt wo der Anwender zuletzt war. So wie es jetzt ist, bekomme ich wenn ich nicht zuvor auf der START_VIEW war einen NullPointer, was ja auch logisch ist.

bin für jede Antwort dankbar!

Der_AnderE


----------



## Wildcard (3. Mrz 2010)

Ich verstehe nicht was du haben willst, aber vielleicht wird jemand anders daraus schlau.


----------



## Sonecc (4. Mrz 2010)

Du machst dir eine öffentliche Statische Variable, in der sich deine View verewigt wenn sie geöffnet wird.
Diese Variable nutzt du dann in deinem Code dort.


----------



## der_andere (4. Mrz 2010)

Huhu,

^^danke, klingt logisch!
Aber wie wie mache ich das? Bin noch neu in diesem Gebiet 

Grüße 

Der_AnderE


----------



## Sonecc (4. Mrz 2010)

In der Klasse die das öffnen und schließen managed

```
public static String ActiveViewID = START_VIEW.ID;
```

Nun die neue Methode die die Views managed (also dein Code überarbeitet)


```
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IViewReference ref = page.findViewReference(ActiveViewID);
IViewPart viewPart = ref.getView(true);
page.hideView(viewPart);
page.showView(ANDERE_VIEW.ID);
```


Im Konstruktor deiner Views:
ViewController ist dabei die Klasse die das öffnen und schließen der Views managed..


```
ViewController.ActiveViewID = this.ID;
```




Gibt bestimmt auch besser Wege das zu lösen und das ganze ist auch ungetestet, sollte aber funktionieren


----------



## der_andere (4. Mrz 2010)

Vielen Dank dir, funktioniert sehr sehr gut, danke!

Schönen Tag noch!

Grüße Der_AnderE


----------

