# View aktivieren jedesmal wen....



## lumo (19. Nov 2009)

hallo
habe ein kleines problemchen mit einem view.
und zwar muss ein view jedes mal aktiviert werden wenn seine parent perspektive aufgemacht wird.
das aufmachen des views hab ich schon gelöst.
mein problem ist, dass ich nicht weiss, WO ich das eintragen muss.
dachte eigentlich dass das hier rein muss:

```
public class Perspective implements IPerspectiveFactory {

	@Override
	public void createInitialLayout(IPageLayout layout) {
	...
	}
```
war jedoch falsch gedacht, da diese funktion nicht aufgerufen wird, wenn eine perspektive aktiviert wird sondern nur wenn man nen reset auf das layout macht (oder das erste mal das programm startet - sobald mal settings da sind... wird das teil nicht mehr aufgerufen...)

vorschläge? (muss ich dazu ernsthaft wieder nen listener erstellen?)


----------



## Wildcard (19. Nov 2009)

Ich würde eine View nicht so stark an eine Perspektive koppeln. Perspektiven sind nur fürs Layout zuständig und triggern normalerweise keine Funktionalität.


----------



## lumo (19. Nov 2009)

wird sie ja nicht... es ist nur so dass diese perspektive fix diesen view beinhaltet -> und diesen aktivieren muss!
in jedere anderen perspektive muss er ja nicht aktiviert werden, bzw weil die perspektive den view aktiviert heissts ja nicht dass der nirgends anders eingesetzt werden kann/darf


----------



## Wildcard (19. Nov 2009)

Nun, dann wirst du einen Listener brauchen, da die Perspektive wie du schon bemerkt hast nur initial und bei reset Code ausführen kann.


----------



## lumo (20. Nov 2009)

das hab ich mir fast gedacht, nur wo und wie muss ich einen listener anhängen? hab dazu leider nichts gefunden (ev. falsch gesucht, was ich nicht hoffe)


----------



## Wildcard (20. Nov 2009)

IWorkbenchWindow(IPageService)#addPerspectiveListener(IPerspectiveListener listener)


----------



## lumo (23. Nov 2009)

danke für die info, aber wo muss ich das eintragen?


----------



## lumo (2. Dez 2009)

so, hab jetzt wieder mal zeit gehabt mich dem problem zu widmen.
habs gelöst mit deiner hilfe, DANKE!
habs im Activator.start() drin

```
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
				.addPerspectiveListener(new IPerspectiveListener() {

					@Override
					public void perspectiveChanged(IWorkbenchPage page,
							IPerspectiveDescriptor perspective, String changeId) {
					}

					@Override
					public void perspectiveActivated(IWorkbenchPage page,
							IPerspectiveDescriptor perspective) {
						try {
							page.showView(MapView.ID);
							page.showView(ListView.ID);
						} catch (PartInitException e) {
							e.printStackTrace();
						}
					}
				});
```


----------

