# Referencen in Plug-In Fragment



## Saxony (6. Aug 2009)

Hiho,

ich habe zu einem Plug-In ein Plug-In Fragment geschrieben.

Dieses Fragment enthält eine View und eine weitere Klasse, welche per Extension Point in das Host Plug-In eingebunden wird.

Da es nun aber den View und die andere Klasse automatisch erzeugt wie gebe ich dem View eine Referenz auf die andere Klasse bzw. wie bekomme ich eine Refernenz von dem View in der anderen Klasse?

bye Saxony


----------



## Koringar (6. Aug 2009)

Hi,

ich hoffe damit kann ich dir weiter helfen.

Mit 'PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()' kann man sich die aktuelle 'IWorkbenchPage' holen und mit dieser Page kann man sich vorhandenen (also geöffnetet) View geben lassen.
Über 'findView' bekommt man den 'IWorkbenchPart', also die View selbst oder über 'findViewReferenc' die 'IReferencView'.


----------



## Saxony (6. Aug 2009)

Hiho,

jo aber wenn ich die View als Listener für die andere Klasse setzen muss, wirds irgendwie verworren.

In der einen Klasse, welche als Extension Point in das Host Plug-In geladen wird, habe ich eine Methode

setIrgendeinListener(!rgendeinListener aListener)

So nun muss ich wenn der View erzeugt wird, auf die bereits erzeugte Instanz dieses Extension Points zugreifen, damit ich die View dort als Listener setzen kann. Die View selbst implmentiert in dem Fall IrgendeinListener.

Wie gesagt die View und die andere Klasse sind Bestandteil eines Plug-In Fragmentes.

bye Saxony


----------



## Wildcard (6. Aug 2009)

Mach die Referenz auf die per Extension Point eingeklinkten Objekte doch zB über den Bundle Activator bekannt.


----------



## Saxony (7. Aug 2009)

Ja aber was mache ich, wenn mehrer Plug-In Fragmente den Extension Point verwenden ich aber nur bei einem Fragment den View als Listener für das Objekt des Extension Pointes brauche? Dann habe ich ja in meinem Activator Referenzen auf x Objekte, welche über den Extension Point rein kommen...

Gibt es bei Fragmenten übrigens auch so etwas wie einen Activator, wo ich zum Start des Fragmentes noch Init Dinge erledigen kann? Vielleicht kann man dort die automatische Erzeugung des Views und der Extension Points abfangen/überschreiben und diese händisch erzeugen bevor diese an das Host Plug-In weitergereicht werden. Dann könnte ich mit nämlich die Referenzen dazu merken.


```
// Klasse welche das Plug-In Fragment initialisiert

MyExtensionPointClass extPoint = new MyExtensionPointCLass();

MyPluginFragmentView fragmentView = new MyPluginFragmentView();

extPoint.setMyListener(fragmentView);
```

So würde ich das gut finden!  Weil wenn alles automatisch erzeugt wird weiß ich auch nie ob das Objekt für den Extension Point oder der View zuerst erzeugt wird. Wird der View bei Start der Anwendung gar nicht angezeigt, dann erzeugt es ihn auch nicht.

Ich habe mir jetzt überlegt in einer dritten Klasse, welche zu dem Plug-In Fragment gehören soll beide Referenzen des Extension Point Objektes und des View zu hinterlegen, wenn diese erzeugt werden. Und diese dann wenn beide != null sind zu verknüpfen.

bye Saxony


----------

