Plugins interagieren lassen

Status
Nicht offen für weitere Antworten.

simlei

Mitglied
Hallo!
Ich glaubte schon, die Lösung gefunden zu habn, aber dann..
also, ich habe 2 Plugins, die je eine View darstellen, geschrieben. Dort gibt der User Werte ein, also dynamischer Content, und diesen sollen die Views austauschen können. Nur wie geht das? feste Referenz geht ja nicht, es is ja non static. Mein Versuch war es (ich bin recht neu in Eclipse) das anze über einen Extension Point bei Plugin #1 zu machen. Plugin #2 stöpselt sich an, über ein Interface, was in #1 definiert ist. In Plugin #2 gibt es dann eine Funktion, etwa getInputs();, welche über das Interface aus #1 vorgeschriben ist.
Überschwänglich habe ich gleich ne Anleitung in eine Wiki gepostet (den nehm ich dann wieder raus Wink ) man sieht da immerhin ganz genau wie ich es versucht habe (ist nicht sehr lang, ist im Prinzip ne Zusammenfassung dessen was mein versuch war)

http://jcryptool.wiki.sourceforge.net/Plugin_Interaction

naja, auf jeden fall habe ich dann aus Plugin #1 heraus den folgenden Aufruf getätigt:

Code:
IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(org.jcryptool.analysis.
                                                          friedman.FriedmanPlugin.PLUGIN_ID, "helper");
                        IExtension[] extensions = extensionPoint.getExtensions();
                        for (IExtension extension : extensions) {
                                IConfigurationElement[] configElements = extension.getConfigurationElements();
                                for (IConfigurationElement configElement : configElements) {
                                        try {
                                                HelperInterface di = (HelperInterface)configElement.
                                                                   createExecutableExtension("theplugin");
                                                di.setExtResult(org.jcryptool.analysis.friedman.
                                                                   FriedmanPlugin.PLUGIN_ID, cachedResult);
                                        } catch (CoreException e) {
                                                System.err.println("CE: " + e);
                                                e.printStackTrace();
                                        }                               
                                }
                        }

Der Fehler, welcher meine Hoffnungen zunichte machte, war eben bei der kritischen Zeile
Code:
HelperInterface di = (HelperInterface)configElement. createExecutableExtension("theplugin");
- Fehler:
org.eclipse.core.runtime.CoreException: Plug-in "org.jcryptool.analysis.vigenerehelper" was unable to instantiate class "org.jcryptool.analysis.vigenerehelper.ui.VigenereHelperUI".

So funktionierts also nicht - offensichtlich wird die Klasse aus Plugin #2 eh instanziert, und die Werte, die ich vom user bekommen habe, kann ich somit nicht erhalten.

Kannn mir jemand verraten, wie es gehen soll, dass man das Beschriebene zustande bringt? Also, dass zwei Plugins während ihrer Laufzeit interagieren können in Sachen Werte austauschen (und vielleicht sogar gegenseitig Funktionen ausführen? das wäre ja noch mächtiger)

Oder war ich auf dem richtigen Weg schon? naja, ich brauche dringen Hilfe, ich bin am Ende meines Lateins, schon weil ich für den Anlauf der oben beschrieben ist viel recherchiert habe :/
Danke!
 

Wildcard

Top Contributor
Die Art der Interaktion ist entscheidend. Extension Points sind zur Erweiterung gedacht, nicht um Referenzen auszutauschen.
Beschreibe deinen Use-Case, dann lässt sich leichter klären was eine für dich geeignete Lösung ist.
 

simlei

Mitglied
Nun ja,
ich schreibe fürs JCrypTool Plugins, die der Veranschaulichung von kryptographischen Analyseverfahren dienen. Hier habe ich mehrere Verfahren zu der Vigenere-Verschlüsselung, und verschiedene Analyseverfahren je als einzelne Plugins. Jedes Plugin enthält dabei eine View. Plugin #1 und #2 sind die richtigen Analysen (#1: Schlüssellänge finden, #2: Schlüssel selbst finden). Plugin #3 ist so eine Art Hilfe dazu, welches Zwischenergebnisse aus #1 und #2 empfangen soll und weiterverwendbar machen soll, auch Hilfe anbieten, etc.
Ich suche einen Weg, Ergebnisse, die in #1 und #2 erzielt oder vom benutzer eingegeben werden, Plugin #3 mitzuteilen, zur Laufzeit, und dieses soll dann diese verarbeiten und wieder den anderen Plugins mitteilen können.

So. Umgebung zur Frage hinreichend erklärt? :D Für Vorschläge bin ich sehr dankbar.
 

Wildcard

Top Contributor
Wenn das abhängig von der Selektion ist, geht man üblicherweise über den Selection Provider.
Wenn nicht, gibt es zB auch den direkteren Weg sich eine referenz auf die View zu holen und mit ihr zu interagieren.
http://help.eclipse.org/help32/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IWorkbenchPage.html#findView(java.lang.String)

Es gibt natürlich auch komplexere Möglichkeiten, aber von aussen ist so etwas immer schwer zu analysieren.
 

simlei

Mitglied
danke, diese Stoßrichtung wollte ich. Kennst du noch nen Codeschnipsel, wie ich mit der Referenz umgehe? Dann bin ich aufm Weg :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D RCP P2-Repository für Eclipse-Plugins Plattformprogrammierung 0
A RCP Objekt(parameter) zwischen Plugins austauschen Plattformprogrammierung 0
D RCP closed source RCP erweitern & Plugins nutzen Plattformprogrammierung 4
J Zwei Applikationen aus mehreren Plugins generieren Plattformprogrammierung 2
M RCP Ein Command in mehreren Plugins verwenden? Plattformprogrammierung 12
G RCP Abhängigkeiten von Eclipse Plugins Plattformprogrammierung 9
S Equinox: plugins und features Plattformprogrammierung 8
J Daten zwischen Plugins austauschen Plattformprogrammierung 4
M Daten zwischen 2 Eclipse-Plugins tauschen Plattformprogrammierung 5
P Wo im Projekt weitere Plugins anmelden ? Plattformprogrammierung 2
S PreferenceStore und unterschiedliche Plugins Plattformprogrammierung 4
lumo ECLIPSE RCP - mehrere plugins - eine resource? Plattformprogrammierung 3
M Teilweise Probleme beim Updaten von Plugins Plattformprogrammierung 3
S Versionsprobleme beim Erstellen eines Plugins Plattformprogrammierung 6
E Test von RCP Plugins in Fragmente oder Plugins Plattformprogrammierung 3
G Aufteilung Plugins Plattformprogrammierung 8
M JUnit 4.3.1 aus eclipse plugins durch junit 4.4 ersetzen Plattformprogrammierung 2
dzim java.lang.ClassNotFoundException beim laden eines Plugins Plattformprogrammierung 10
Paule Eclipse Instanz + eigene Plugins Plattformprogrammierung 4
Wildcard Wie buildet ihr eure PlugIns? Plattformprogrammierung 6
dzim eigene Application und PlugIns Plattformprogrammierung 16
dzim Classpath in PlugIns Plattformprogrammierung 7
T [RCP] Was passiert genau beim laden eines Plugins? Plattformprogrammierung 4
G Eclipse, Plugins, Properties, und wo zum Geier steckt das? Plattformprogrammierung 21
lhein Sprachumschaltung eines eigenen Eclipse Plugins Plattformprogrammierung 8
T Kommunikation zwischen Plugins (RCP) Plattformprogrammierung 18
ned Website sperren lassen Plattformprogrammierung 3
P RCP Text Editor Example - Missing Bundles lassen sich nicht auffinden. Plattformprogrammierung 6
L GUI und andere Funktionen gleichzeitig laufen lassen! Plattformprogrammierung 7
Rudolf Automatisch final schreiben lassen Plattformprogrammierung 19
maestr0 WorkingSets mit Komma getrennt in einer ComboBox anzeigen lassen Plattformprogrammierung 2
J Editorfenster von View navigieren lassen? Plattformprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben