Kommunikation zwischen Plugins (RCP)

Status
Nicht offen für weitere Antworten.

Tr1aler

Mitglied
Hi Leute, kennt sich von euch jemand mit der Kommunikation zwischen Plugins aus? Also alles rund um Extensions und Extension Points (Rich Client Plattform).

Wenn ja, würde mich über ein paar Infos oder Tips freuen.



Danke
 

Tr1aler

Mitglied
naja im allgemeinen wie die Kommunikation zwischen den Pluginsfunktioniert. Ich versteh das noch nicht so ganz denn bei einem Plugin kann man ja z.B. eine View als Extension erstellen. Das versteh ich abern icht so ganz. Mein Ziel ist es halt, Informationen wie zB.: die Nr. eines Kunden unter versch. Plugins auszutauschen. Sagen das eine Plguin entählt eine View in der ein Baum mit Kunden ist. Wenn ich auf dem Baum jmd. anklicke soll die Kundennr an ein anderes Plugin weitergegeben werden, welches z.B. Kurzinformationen über diesen liefert.


Hoffe ich konnte mein Anliegen in etwa verständlich machen.
 

Wildcard

Top Contributor
Dann muss die View mit dem Baum einen SelectionProvider zur Verfügung stellen.
Die andere View registriert sich als PartListener und und kann dann auf Selektion reagieren.
Die Übergabe der Daten solltest du über die IAdaptable Schnittstelle realisieren.
 

Tr1aler

Mitglied
ok danke für die schnelle Antwort. hast du dazu vll. ein Tutorial oder so denn ich hab IAdaptable zwar schonmal gelesen, das wars aber leider auch schon
 

Wildcard

Top Contributor
So kompliziert ist das nicht. Angenommen du zeigst Objekte der Klasse A in deinem Tree an, aber deine View erwartet den Interface Typ X. Konkret möchtest du den FooBar String haben. Oft ist es sinnvoll deine Klasse A nicht mit einem fremden Interface zu 'verschmutzen'. Also implementierst du IAdaptable und gibst ein Objekt zurück, das die Schnittstelle erfüllt. Das lässt sich wahlweise über den AdapterManger und die plugin.xml, oder direkt lösen.
Code:
class A implements IAdaptable
{
      private String geheimerString;

      public String getGeheimerString()
      {
             return geheimerString();
       }

      public Object getAdapter(Class adapter)
      {
            if(adapter==X.class)
               return new XWrapper(this);
      }
}

class XWrapper implements X
{
        private A a;

        public XWrapper(A a)
        {
             this.a=a;
        }

        public String getFooBar()
        {
              return a.getGeheimerString();
        }
}

interface X
{
       String getFooBar();
}

Deine View bekommt nun eine Selektion:

Code:
public void selectionChanged(ISelection selection)
{
        IAdaptable adaptable = (IAdaptable)((IStructuredSelection)selection).getFirstElement();
        X myData = adaptable.getAdapter(X.class);
        System.out.println(myData.getFooBar());
}

Wenn nun die Klasse A gar nichts davon wissen soll, das sie etwas mit dem Interface X zu tun hat, gibst du den Adapter nicht direkt zurück, sondern lässt das vom AdapterManager erledigen:

Code:
public Object getAdapter(Class adapter)
{
    return Platform.getAdapterManager().getAdapter(this, adapter);
}
 

Tr1aler

Mitglied
ok danke ich werd mal probieren mich da reinzufummeln. aber danke für die antwort und den code... denke mal derhilft mir weiter..
 

Tr1aler

Mitglied
Hey Leute, ich habe im Moment eine RCP-Anwedung und 2 Plugins zwischen denen ich Informationen austauschen will. Ich habe also im Plugin was die Informationen erhalten soll einen ExtensionPoint mit einem dazugehörigen Schema erzeugt. Jetzt muss ich in dem Plugin was die Informationen zur Verfügung stellt doch eine Extension erstellen oder?
Von welchem Typ muss die Extension sein etc.?
Komme momentan nicht weiter.
Wenn jemand Tutorials oder tips für mich hat bitte meldet euch. Brauche dringend und schnell Hilfe.

Danke
 

Wildcard

Top Contributor
Um 'Informationen' auszutauschen brauchst du nicht zwingend einen Extension Point.
Erklär was du machen willst, so ist die Frage nutzlos.
 

WieselAc

Top Contributor
Extension points machen am meisten sein, wenn die Plugins unabhängig von einander sein sollen.

Konkretes Beispiel du hast ein komplexes Programm mit vielen Funktionen. Der Kunde ist aber geizig und will nicht für Sachen bezahlen, die er nicht braucht. Da du aber auch nicht blöd bist und dem Kunden nichts gibts, dass er nicht bezahlt, lässt du einfach alle Plugins weg, die Funktionalität bereit stellen, die nicht bezahlt wird.

Und genau für sowas (und noch einiges anderes) sind Extensionpoints super. Wenn eine Plugins den Extension Point implementieren ist es gut, wenn nicht dann auch.
 

Ohlsen

Mitglied
Hallo,

ich versuche mich mit Tr1aler zusammen in RCP einzuarbeiten, was uns beiden aber nur sehr schwer fällt (mangelnde Infos und Ansprechpartner)

Also um das erstmal zu verstehen, haben wir 2 Plugins erstellt. In dem ersten Plugin ist ein Baum zur Navigation und in dem 2. Plugin soll z.B. der Inhalt der View an den ausgewählten Menüeintrag im Baum angepasst werden. Z.B. klicke ich im Baum einen Namen an, im anderen Plugin soll er durch eine Erweiterung den Namen übergeben bekommen und danach Informationen zu dem Namen laden.

An sich müssten die beiden Plugins nicht unabhängig voneinander sein, aber wir dachten uns das uns diese Unabhängigkeit später evtl. Vorteile bietet.
 

Wildcard

Top Contributor
Ich hab's schonmal gesagt, dafür braucht man keinen Extension Point.
Ihr müsst nur über den SelectionProvider auf die Selektion reagieren und die Selektion nach einem passenden Adapter fragen.
 

Tr1aler

Mitglied
Ja ich weiß, dafür hast du uns ja den Code (s.O.) geschickt, wir wollen die Plugins aber enau wie WieselAc schon meinte UNABHÄNGIG voneinander machen und wollen daher mit Extensions/ Extension Points arbeiten und blicken da aber nicht so ganz durch und würden daher gerne zu EXTENSIONS/EXTENSION POINTS Hife oder Infos haben.

Danke für deine Bemühungen aber wir brauchen Hilfe zu Extensions.
 

Wildcard

Top Contributor
Die PlugIns sind dann unabhängig. Extension Points haben ihre Anwendungsfälle und sind eine sehr nette Sache, aber man muss nicht auf teufel komm raus einen Anbieten.
 

Ohlsen

Mitglied
so richtig klar kommen wir damit noch nicht. :-(

hättest du vielleicht noch ein Codebeispiel mit einer genauen Erklärung was wir zu tun haben.

Ausgangspunkt:
RCP mit 2 Plugins (je eine View).
In der einen View z.B. ein Button mit dem man in der anderen View ein Labelfeld ändern kann oder so ähnlich.

Danke für deine Geduld. RCP ist gerade komplettes Neuland für uns.
 

Tr1aler

Mitglied
Kann mir jemand ein Beispiel für die Logik von Extensions und Extensionpoints (und den dazugehörigen Schemas) geben?.
Hab vor 2 Wochen mit RCP angefangen und versteh noch nicht all zu viel.

Ich würde gerne ein Beispiel für die Logik die dahinter steckt haben und am besten ein Codebeispiel welcher Code ungefähr in welcher Klasse stehen muss. Also welchen Code braucht das Plugin das die Extension bereit stellt, bzw. welchen braucht die Klasse die den Extension Point bestitz und auf eine Extension wartet.


Würde mich über eure Hilfe freuen und entschuldige mich schonmal für, wahrscheinlich kommende, dumme Fragen^^

RCP ist für mich komplettes Neuland



Danke im Vorraus
 
G

Gast

Gast
doch, aber ich hab da nicht die Entscheidungskraft, außerdem gehts nich nur um das was ich da geschrieben habe sondern da kommen noch ein paar andere Sachen und deswegen würd ich das ganze System gerne richtig verstehen.

Danke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L RCP Kommunikation zwischen zwei Views Plattformprogrammierung 8
T GWT: Client Server Kommunikation Plattformprogrammierung 0
A RCP Objekt(parameter) zwischen Plugins austauschen Plattformprogrammierung 0
H Zusammenhang zwischen RCP und EMF Plattformprogrammierung 6
J Daten zwischen Plugins austauschen Plattformprogrammierung 4
M Daten zwischen 2 Eclipse-Plugins tauschen Plattformprogrammierung 5
SaSa83 Inkompatibilität meiner RCP Anwendung zwischen JAVA 1.5 & JAVA6 Plattformprogrammierung 2
D RCP P2-Repository für Eclipse-Plugins 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
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
S Plugins interagieren lassen Plattformprogrammierung 6
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

Ähnliche Java Themen

Neue Themen


Oben