# Frage zum RCP Plugin-Mechanismus.



## rcpFuchs (1. Mai 2011)

Unter dem RCP Plugin-Mechanismus habe ich bis jetzt immer folgendes verstanden.

Man erstellt ein RCP Projekt. Dort erstellt man ein Element, sei O.B.d.A ein View. Anschließend einen Extension Point.
Will man nun ein Plugin für dieses Projekt erstellen erstellt man immer ein Plugin, das diesen Extension Point erweitert. Natürlich ist das keine komplette Anleitung, aber wer RCP kennt weiß welches Prinzip ich meine.

Jetzt habe ich spaßeshalber mal ein leeres RCP Projekt angelegt und noch zwei andere mit jeweils einer Perspektive und einem View und habe die Projekte zusammen gestartet.

Jetzt entsteht so ein „remix“ aus aus den drei Projekten, ich denke mal dies ist gewollt. Und auch so etwas wie ein Plugin-Mechanismus.

Ich habe nur nicht ganz die Vorteile verstanden. Was genau benutze ich für welche Aufgaben. 

Grüße


----------



## Wildcard (2. Mai 2011)

Der Vorteil von RCP? Das du tonnenweise Code geschenkt bekommst.
RCP stellt die Anwendungsplatform die dann für beliebige Arten von Anwendung verwendet werden kann.
Anschlaulich wird es IMO durch die folgende Unterscheidung:
Es gibt extensible Applications wie zB Firefox und extension based Applications wie Eclipse.
Der Unterschied ist leicht erklärt, bei Firefox lässt sich die Core Funktionalität (Browser) durch Plugins erweitern. Bei einer extension based Applikation gibt es keine Core Funktionalität, die Plugins selbst bestimmen was die Anwendung tut.
Eclipse ist also keine IDE, sondern eine General Purpose Platform. Die Eclipse Java IDE ist ein Anwendungsfall für diese Platform, also ein RCP.


----------



## Mohackl (5. Mai 2011)

Greets,

Es gibt den Extensionpoint "org.eclipse.core.runtime.applications". Mit diesem definierst du Einstiegspunkte für ein Programm. Innerhalb einer Product-Deklaration verweißt du auf eine, und nur eine Applications-ID.

Daher ist es ratsam sich ein Plugin sozusagen als "Core"-Plugin zu denken. Dieses sollte die grundlegende Aufteilung und Menüstruktur für das Programm bereitstellen und auch eine applications-Extantion beschreiben. Das ist zwar nicht zwingend, aber es macht die Entwicklung in meinen Augen einfacher.

Nun können weitere Plugins geschrieben werden. Diese können z.B. so angelegt sein, dass sie die Aufteilungen des "Core"-Plugins nutzen, deren Menüs erweitern usw. Sie können aber auch eigene Menüs zufügen, neue Perspektiven/Views usw. beitragen.

Ein Beispiel. 
Mein Core-Plugin stellt ein Menü "Hilfe" unter der locationURI _"menurg.eclipse.ui.main.menu"_, also der Hauptmenüleiste zur Verfügung. Auch stellt es eine View mit der ID _"org.java-forum.beispielplugin.views.beispielview"_ zur Verfügung die in einem TableViewer die Titel aller in den letzten 24 Stunden geschriebener Beiträge vom Java-Forum darstellt. Der TableViewer definiert ein Rechtsklickmenü und meldet dies unter der ID _"popuprg.java-forum.beispielplugin.views.beispielview" _an.

Nun kann ich ein Plugin schreiben und diese Punkte als Ansatzpunkte verwenden. So kann ich die MenüID  _"menurg.eclipse.ui.main.menu"_ nutzen um ein Menü "Hilfe" mit einem Command "Über das Plugin xy" zu erweitern. Kann einen Button an die View-Toolbar setzen der eine neue Funktionalität freischaltet. Auch kann ich das Rechtsklickmenü erweitern das den TableViewer nutzt.

Das ist der wirkliche Vorteil in meinen Augen. Gut durch Features getrennt und durch einen Updatemechanismus wie z.B. P2 unterstützt kann ich so Applikationen ohne Angst zu haben bereits bestehendes unbrauchbar zu machen erweitern.


Soweit mein Eindruck,
Mohackl


----------

