# Eclipse RCP: Extension point benutzen?



## Ravebaby (23. Aug 2007)

Hallo zusammen,

ich werd noch irre mit diesen Extension Points...  :bahnhof:  Da das aber wohl ein mächtiges Konzept in Eclipse RCP ist und ich gern den Eclipse Package Explorer in meiner RCP Anwendung darstellen möchte, sollte ich wohl früher oder später mit klarkommen. 

Erst einmal hab ich mich dann auf die Suche nach dem Zugriff auf diesen Package Explorer begeben und bin nun auf dem Stand das ProjektExplorer Plugin zu benutzen. Nun habe ich einen neuen Extension Point mit der PointID "org.eclipse.ui.navigator.ProjectExplorer" definiert. Ist das soweit richtig oder muss ich noch mehr zu meinem Glück tun?

Nun geht es darum auf diese Extension dann wirklich zuzureifen und wirklich den Explorer darstellen zu können. Nach viel herumsuchen bin ich nun dabei hängen geblieben das man wohl über die Platform an die ExtensionRegistry kommt. Somit habe ich nun einen neuen View definiert: 


```
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.IPlatformRunnable;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Plugin;

public class BrowserView extends Plugin implements IPlatformRunnable {
	public Object run(Object args) throws Exception {

		// Referenz auf die Registry holen
		IExtensionRegistry registry = Platform.getExtensionRegistry();
		IExtensionPoint point = Platform.getExtensionRegistry()
				.getExtensionPoint("org.eclipse.ui.navigator.ProjectExplorer");
		IConfigurationElement[] elements = point.getConfigurationElements();
		return null;	
	}
}
```

Habe nun im Web und bei Koders nach solch einem Beispielcode gesucht, jedoch kläglich gescheitert.
Kann mir bitte jemand helfen?
Danke schon einmal!!

Viele Grüße
Rave


----------



## Wildcard (23. Aug 2007)

Warum willst du selbst den Extension Point definieren??
Zur Erklärung:
Ein Extension Point bedeutet, dass du selbst eine Erweiterung für PlugIns bereitstellst.
Willst du dich hingegen in einen solchen einklinken, machst du eine Extension (und eben keinen Extension Point).
Zunächst mal muss du das Package Explorer PlugIn in deine RCP aufnehmen. 
Um dir mehr sagen zu können, müsste man wissen was du mit dem Package Explorer anstellen willst, oder ob er einfach unverändert übernommen werden soll.


----------



## Ravebaby (23. Aug 2007)

Ah, ok, das hilft zum Verständnis schon einmal ungemein weiter!!
Also ich habe einen Wizard programmiert bei dem man mittels eines "Browse" Buttons einen FileBrowser dargestellt bekommt: 

```
if (event.widget == browseFirstPackage) {
			DirectoryDialog dialog = new DirectoryDialog(composite.getShell(),
					SWT.NULL);
			String path = dialog.open();
			if (path != null) {
				firstPackageText.setText(path);
			}
		}
```
Nun möchte ich gern statt dessen den Package Explorer von Eclipse darstellen. Der Benutzer soll sich nur eine Java Klasse aus dem Package explorer auswählen können. Zum anderen soll er auswählen können wo im Package Explorer die neuen Klassen erzeugt werden sollen.

Also wähl ich nun in meiner MANIFEST Datei den Reiter "Extension" aus und selektiere den "org.eclipse.ui.navigator.ProjectExplorer". Soweit so gut. Wie stell ich den nun wirklich konkret in meinem Wizard nach Klicken auf den Button "Browse" dar?


----------



## Wildcard (23. Aug 2007)

Das ist keine Extension. Du willst den Package Explorer ja nicht erweitern, sondern verwenden.
Du musst rausfinden, welches Composite die Package Explorer View erzeugt und versuchen die in deinen Wizard zu integrieren. Du kannst die View nicht direkt verwenden, da eine View immer in der Workbench liegt.
Viel mehr kann ich dir dazu nicht sagen.


----------

