RCP Ein Command in mehreren Plugins verwenden?

Hi,

1. Entweder das Plugin exportiert das Command und das andere Plugin nimmt das package als dependency mit auf oder
2. Plugin registriert den Command als OSGi-Service und das andere Plugin holt sich diesen OSGi-Service.
 
Danke für die Antwort.

Ich baue gerade an einem Beispiel. Hab zwei Plugins. Eins hat eine View, das andere ein Command mit Handler.
[XML]<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="MultiplePluginsCommands_dependencyPlugin.handler1"
id="MultiplePluginsCommands_dependencyPlugin.testCommand"
name="MultiplePluginsCommands_dependencyPlugin.testCommand">
</command>
</extension>
<extension
point="org.eclipse.ui.handlers">
<handler
class="multipleplugins_commands.testCommandHandler"
commandId="MultiplePluginsCommands_dependencyPlugin.testCommand">
</handler>
</extension>
</plugin>[/XML]

Im Plugin mit der View definiere ich jetzt ein Menü und hänge das Command aus dem zweiten Plugin ein.
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>

<extension
id="application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="commandsmultipleplugins.Application">
</run>
</application>
</extension>
<extension
point="org.eclipse.ui.perspectives">
<perspective
name="Perspective"
class="commandsmultipleplugins.Perspective"
id="CommandsMultiplePlugins.perspective">
</perspective>
</extension>
<extension
point="org.eclipse.ui.views">
<view
name="View"
class="commandsmultipleplugins.View"
id="CommandsMultiplePlugins.view">
</view>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu😱rg.eclipse.ui.main.menu">
<command
commandId="MultiplePluginsCommands_dependencyPlugin.testCommand"
icon="Drink_BeerPint.png"
label="testCommand"
style="push">
</command>
</menuContribution>
</extension>

</plugin>

[/XML]

Wenn ich starte ist die Schaltfläche für das Command inaktiv. Was mach ich falsch?
 
Hi,

1. Entweder das Plugin exportiert das Command und das andere Plugin nimmt das package als dependency mit auf oder
2. Plugin registriert den Command als OSGi-Service und das andere Plugin holt sich diesen OSGi-Service.

So ein Beispiel mit Lösung 1. läuft. Eine Unklarheit gibts für mich aber noch. Was meinst du genau mit "das Plugin exportiert das Command" ? Unter "Runtime -> Exported Packages" habe ich nichts eingetragen und es funktioniert trotzdem. Meinst du noch etwas anderes?
 
So ein Beispiel mit Lösung 1. läuft. Eine Unklarheit gibts für mich aber noch. Was meinst du genau mit "das Plugin exportiert das Command" ? Unter "Runtime -> Exported Packages" habe ich nichts eingetragen und es funktioniert trotzdem. Meinst du noch etwas anderes?

Wie hast du dein Plugin eingebunden? Als jar oder OSGi-Bundle?
Wahrscheinlich hast du es einfach in den Classpath mit reingemacht?
Du solltest OSGi-Bundles in deinem Manifest als Plugins mit aufnehmen oder das entsprechende package aufnehmen.
 
Wirklich? Ich habe etwa das gleiche gemacht:
2 Plugin-Projekte
in einem definiere ich einen View+Editor und läuft standalone
in einem 2ten Projekt füge ich das Plugin als dependency hinzu (das erste exportiert explizit nichts) und ich verwenden den importierten View in diesem RCP-Projekt.
Beide RCP-s laufen ohne Probleme oder werden da eventuell welche auftauchen?
 
Hallo! 🙂

Kann ich auch von einem Plugin aus, während der Laufzeit, programmatisch auf ein Menü in einem anderen Plugin zu greifen und ein Command aus einem anderen Plugin hinzufügen?

Das Plugin, dem etwas hinzugefügt werden soll, darf nichts von dem zweiten Plugin wissen.

Geht das? Wenn ja, wo kann ich es nachlesen?
 

Zurück
Oben