# Plugin einbindung



## Gast2 (8. Jan 2010)

Hallo,

ich möchte bestimme Module in Plugins auslagern... Dazu hätte ich ein paar Fragen:
1. Wenn ein Modul z.B. einen Menüeintrag hat und ein vorhandens Menü erweitern soll? Wie macht dass am besten den Menüeintrag?? Also es gibt im Haupt RCP z.B. Ansichten und darunter soll nun ein Menüeintrag...
2. Brauch ich dazu einen RCP oder reicht ein normales plugin nur mit Activator??
3. Wie erweitert man z.B. ein Editor um ein Textfeld wenn ein bestimmtet Plugin vorhanden ist, wenn dieses plugin nicht vorhanden ist dann soll das Textfeld nicht erscheinen...

Danke und Gruß


----------



## Wildcard (8. Jan 2010)

1. Eine Extension am entsprechenden Extension Point registrieren
2. RCP ist nur eine Sammlung von Plugins
3. Der Editor definiert einen eigenen Extension Point und das Plugin registriert dort eine Extension


----------



## Gast2 (8. Jan 2010)

Wildcard hat gesagt.:


> 1. Eine Extension am entsprechenden Extension Point registrieren
> 2. RCP ist nur eine Sammlung von Plugins
> 3. Der Editor definiert einen eigenen Extension Point und das Plugin registriert dort eine Extension



zu 1/2) hab ich hinbekommen danke, das problem ist aber wenn ich ein plugin anlegen und bei "would you create a RCP"  no mache, habe ich kein extensions point org.eclipse.ui.menus, warum das? 
3. He sorry versteh ich nicht ganz?? Ja ich hab eine extions Point für den Editor und dann weiter???


----------



## Wildcard (8. Jan 2010)

1. Vielleicht fehlt dir die dependency zu dem Bundle das den Extension Point definiert
3. Nein, du definierst einen eigenen Extension Point org.example.rcp.fooEditorTextfieldExtension auf das dein Bundle X eine Extension registrierst. Der Editor fragt dann in der Extension Registry nach ob es eine Extension für diesen Punkt gibt die geladen werden kann.

Zur Erklärung
Extension: Ich erweitere
Extension Point: Ich darf erweitert werden


----------



## Gast2 (8. Jan 2010)

Wildcard hat gesagt.:


> 1. Vielleicht fehlt dir die dependency zu dem Bundle das den Extension Point definiert
> 3. Nein, du definierst einen eigenen Extension Point org.example.rcp.fooEditorTextfieldExtension auf das dein Bundle X eine Extension registrierst. Der Editor fragt dann in der Extension Registry nach ob es eine Extension für diesen Punkt gibt die geladen werden kann.
> 
> Zur Erklärung
> ...


Ich mach das zum 1.mal!! 
ok ich hab jetzt in meinem Hauptmodul einen extension Point gemacht muss ich dort irgendwas bestimmtes eintragen???
so und nun wie weiß ich dass Modul A vorhanden ist???


----------



## Gast2 (8. Jan 2010)

Mhm ok ich versuchs nochmal zu erklären...
Ich hab ein Hauptplugin in diesem möchte ich andere plugins aufnehmen, welche funktionen beinhalten...
So nun nehme ich z.B. Modul A(Menü,View,Editor) in meinem Hauptplugin auf. Mein Hauptlugin hat einen Editor den ich um ein Textfeld reicher mache wenn Modul A vorhanden ist...

So was ich jetzt versuche habe ist meinem Hauptplugin ein extensions point zu definieren und den in meinem Modul A als extension aus genommen...
So nun hab ich 2 Probleme?
1.Wie kann ich die extension auslesen in meinem Hauptplugin ob das Modul A vorhanden ist???
2. Hab ich jetzt eine cycle dependendy ? Hauptplugin hat eine dependeny zu A und A hat eine dependeny zum Hauptplugin(da dort ja das extensions point ist), was mache ich falsch? Oder muss ich mein Hauptplugin editor auch nochmal auslagern um die dependendy aufzulösen???

Danke!


----------



## Wildcard (8. Jan 2010)

Dein Editor kennt das Bundle das die Extension registriert nicht, also hast du auch keine zyklische Abhängigkeit. Schau dir mal die Eclipse Hilfe zu Extensions und Extension Points an


----------



## Gast2 (9. Jan 2010)

Wildcard hat gesagt.:


> Dein Editor kennt das Bundle das die Extension registriert nicht, also hast du auch keine zyklische Abhängigkeit. Schau dir mal die Eclipse Hilfe zu Extensions und Extension Points an



Doch weil in diesem Bundle noch Menüeinträge Toolbareinträge usw. drin sind...
Oder wie mache die sonst bekannt?
HauptModul(Editor,Menü,Toolbar) , Modul A(zusätzliche Menüeinträge usw).
Dann nehm ich im HauptModul doch das Modul A auf oder?
Jetzt bietet das HauptModul einen extension point an , darum muss Modul A doch das HauptModul aufnehmen und dann hab ich doch eine zyklische Abhängigkeit??? 

Oder wie geht das sonst? Muss ich für die Menür usw. auch extensions point bereitstellen???
Bis jetzt habe ich einfach das Modul A mit in den dependency aufgenommen und das Menü hat sich dann automatisch erweitert...


----------



## Gast2 (9. Jan 2010)

Ah ok ich habs, sobald ich es mit ins feature aufnehme passt alles und ich hab auch keine Abhänigkeit mehr =) =)... 

Ich überprüfe so ob eine extension in der registry vorliegt:


```
final IConfigurationElement[] elments= Platform.getExtensionRegistry().getConfigurationElementsFor("PluginID+PointID");
		for(IConfigurationElement element : elments){
			final Object o = element.createExecutableExtension("class");
			if(o instanceof Element){
				Element e= (Element) o;
				System.out.println(e.getId());
			}
		}
```

Kann ich auch überprüfen, dass ich nur ein ganz bestimmtest Plugin diesen Extension Point verwenden darf?


----------



## Gast2 (12. Jan 2010)

Geht das irgendwie, dass man das Plugin validieren kann und nur ein bestimmtes zulassen kann?


----------

