# [eclipse]Kommunikations Problem



## der JoJo (23. Jul 2007)

Hi @all
Ich habe einen eignen MultipageEditor mit einer zugehörigen View gecoded.
Das Problem ist, die View muss sich, wenn eine Instance des Editors geöffnet wird als SelectionListener an den Editor hängen.

mein konkretes Problem ist an dieser stelle:
Ich weis nicht wo/wann/wie ich die View als Listener an den Editor bekomme

giebt es vieleicht eine art Listener auf den WorkSpace der mir sagt wenn ein Editor geöffnet oder geschlossen wurde?
wenn ja wie komme ich da ran und wie bekomme ich in dieser situation die Instance des Editors?

danke im Vorraus
JoJo


----------



## der JoJo (24. Jul 2007)

so, da scheinbar niemand eine Lösung hat zeige ich euch mal meine:

(ich weis das ist ein übler Hack der ziemlich gegen das ganze Eventsystem verstöst aber anders habe ich es nicht hinbekommen)

Ich habe einen Thread gestartet, der sich aller 0.5s das Active WorkbenchWindow holt, und überprüft, ob sich das Active Fenster geändert hat.

Wenn jetzt ein Editor geöffnet wird, registriert der Thread die veränderung und prüft ob das neue Fenster instanceof MyEditor ist.
Wenn ja wird der neue Editor bei der View registriert.

fals jetzt noch irgendjemand eine besserer Lösung findet, und ich bin sicher das es eine bessere Lösung giebt, bitte veratet sie mir.


----------



## Wildcard (24. Jul 2007)

Suchst du das?
http://mobius.inria.fr/eclipse-doc/...addPartListener(org.eclipse.ui.IPartListener)


----------



## der JoJo (24. Jul 2007)

ja, das ist so ziemlich genau das was ich brauche, muss ich erst noch test.

#edit öhm, der bringt mir hier ne warnung:

```
Discouraged access: The method addPartListener(IPartListener) from the type WorkbenchPage is 
 not accessible due to restriction on required library C:\JHense\Toolz\eclipse\plugins
 \org.eclipse.ui.workbench_3.2.0.I20060605-1400.jar
```

#edit2 glei noch eine

```
Discouraged access: The type WorkbenchPage is not accessible due to restriction on required 
 library C:\JHense\Toolz\eclipse\plugins\org.eclipse.ui.workbench_3.2.0.I20060605-1400.jar
```

scheint also auch schohn fast ein übler Hack zu sein, geht aber, Danke


----------



## Wildcard (24. Jul 2007)

Dann nimm stattdessen den hier:
http://help.eclipse.org/help32/inde...erence/api/org/eclipse/ui/IWorkbenchPage.html
Da regestrierst du einen PropertyChangeListener.


----------



## der JoJo (25. Jul 2007)

hm, Problem:

ich habe einfach mal den Listener an den Workbench gehangen:

```
((IWorkbenchPage)PlatformUI.getWorkbench().getWorkbenchWindows()[0].getActivePage()).addPropertyChangeListener( this );
```

und dann in der methode propertyChange folgendes gemacht:


```
public void propertyChange( PropertyChangeEvent event )
	{
		System.out.println("an Event: "+event.getProperty());
	}
```

Problem: es kommt nichts  kein event  nichts :?:  :?: 

need help pleace!


----------



## Wildcard (25. Jul 2007)

```
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().addPartListener(listener)
```
Beim startup deiner View noch die aktiven Editoren abfragen und gegebenenfalls auch dort Listener registrieren.
Nicht vergessen beim close den Listener wieder auszuhängen.
Vom Editor musst du dir dann natürlich noch den ISelectionProvider besorgen um dort einen Listener zu registrieren (auch diese bitte wieder entfernen).

Alternativ kannst du dir auch mit getPage die IWorkbenchPage der View holen und dann dort den Listener registrieren.
Beim öffnen der View sollten beide allerdings identisch sein.


----------



## der JoJo (26. Jul 2007)

den Part Listener hatte ich berreits ausbrobiert, der giebt allersings nur sehr selten events (nur wenn ich das ganze eclipse minimiere und dann wieder maximiere giebt es ein PartActivatet event)

macht aber nichts ich habe mich für die Discouraged version entschieden

danke noch mal für die Hilfe


----------

