EMF und Tabbed Properties View

mandypb86

Mitglied
Hallo zusammen,

ich hab mich gerade in die TabbedPropertySheets eingelesen und das Beispiel nachvollzogen und nachgebaut.

Ich möchte diese TabbedPropertySheets gerne in meiner EMF-Anwendung benutzen. Habe auch schon die 3 Extensionpoints angelegt und entsprechend konfiguriert, sowie eine Section angelegt und die createControls() Methode überschrieben. Meine Properties-View bleibt aber leer.

Ich benutze in der Section-Klasse meine Model-Klasse (bzw. das Interface, also A, nicht AImpl) bei der setInput()-Methode.

Java:
public void setInput(IWorkbenchPart part, ISelection selection) {
	super.setInput(part, selection);
	Assert.isTrue(selection instanceof IStructuredSelection);
        Object input = ((IStructuredSelection) selection).getFirstElement();
        Assert.isTrue(input instanceof A);
        this.a = (A)input; // die Variable a gibt es natürlich
	}

Wenn ich die PropertyView richtig verstanden hab, dann erwartet diese eine IPropertySource. Diese wird aber nur von dem AItemProvider in EMF implementiert.

Was muss ich in der setInput()-Methode denn nun abfragen
bzw. ganz allgemein
wie erreiche ich es, dass die TabbedPropertiesView auf mein A-Objekt reagiert und ich dieses auslesen/nutzen kann?

Auf baldige Antworten freut sich
M@ndy
 

Wildcard

Top Contributor
IPropertySource brauchst du nur für die klassische Tabellenansicht. Wenn du eigene Widgets erzeugst und bindest, benötigst du das nicht.
 

mandypb86

Mitglied
Dann verstehe ich nicht, wieso die PorpertiesView nicht auf meine Selection der anderen View reagiert.

Man gibt dem ExtensionPoint bla.bla.Contributor doch eine ViewID, die Selections für die TabbedProperties zur Verfügung stellt. Nennen wir sie mal LView.
In dieser LView hab ich einen TableViewer, der als input eine (EMF-Model)-Klasse O bekommt. Die Children L dieser Klasse O werden in meinem TableViewer auch einwandfrei geladen und dargestellt.

Diesen TableViewer muss ich ja jetzt als SelectionProvider registrieren. Hab ich in der createControls() am Ende gemacht mittels
Java:
getSite().setSelectionProvider(tv); // tv ist der TableViewer

Ein Klick auf eine Tabellenzeile müsste mir nun doch eigentlich eine StructuredSelection mit beinhaltetem Objekt des Typs L liefern oder nicht?
Und auf genau diesen Typ L frag ich doch in meiner TabbedProperties-Section Klasse in der setInput()-Methode ab.

Muss meine TabbedPropertiesView jetzt noch explizit auf meine View lauschen? Macht sie doch eigentlich sowieso.

Was mache ich falsch, bzw. wo liegt mein Denkfehler?

EDIT: Ich hatte vergessen, das ITabbedPropertySheetPageContributor Interface in meine View einzubinden und die entsprechende getContributorId()-Methode zu überschreiben. Hat aber auch nichts geholfen. Meine PropertiesView zeigt immer noch die leere normale Tabellenansicht.
 
Zuletzt bearbeitet:

mandypb86

Mitglied
EDIT 2: Man sollte wirklich ALLES lesen und befolgen, wenn man es in sein eigenes Projekt einbaut.
Hab die getAdapter()-Methode in der View natürlich auch vergessen.
Java:
public Object getAdapter(Class adapter) {
        if (adapter == IPropertySheetPage.class)
            return new TabbedPropertySheetPage(this);
        return super.getAdapter(adapter);
}

Es sind einfach diesen vielen Kleinigkeiten, die RCP/EMF etc. manchmal aufwendig und nervig machen.

Also für alle, die was Ähnliches vorhaben:

Die View muss das ITabbedPropertySheetPageContributor-Interface implementieren und somit die getContributorId()-Methode. Diese gibt am Besten die ID zurück, die man in dem ExtensionPoint angegeben hat.

Desweiteren muss es eine getAdapter()-Methode in der View geben, die ein TabbedPropertySheetPage-Objekt zurückgibt (s.o.)

Über die IPropertySource muss man sich wirklich keine Gedanken machen, wie Wildcard schon erwähnte (Danke). Einfach in der setInput()-Methode der jeweiligen Section zunächst auf die StructuredSelection(bei JFace-Viewern) casten und danach das erste Element aus der Selection holen und auf das casten, was eigentlich drin sein sollte (in meinem Fall Klasse L).

Dann natürlich die ganzen ExtensionPoints anständig füttern und schon geht das.

Lieben Gruß
M@ndy
 

Wildcard

Top Contributor
Es sind einfach diesen vielen Kleinigkeiten, die RCP/EMF etc. manchmal aufwendig und nervig machen.
Mit EMF hat das nichts zu tun, aber recht hast du natürlich trotzdem.
Allerdings musst du auch gegenüberhalten wie lange es dich kosten würde eine gleichwertige Anwendung ohne RCP/EMF zu produzieren, dann relativiert sich das sehr schnell.
Bei Eclipse RCP dreht sich alles um Erfahrung, beim nächsten mal weißt du es besser und hast dein Portfolio wieder erweitert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Plugin - Properties ohne PropertyPage speichern Plattformprogrammierung 11
E eclipse RCP Properties View: ein Element aus Liste pro Zeile anzeigen Plattformprogrammierung 1
G [osgi] bundle spezifische properties Plattformprogrammierung 5
V PreferenceStore -> Properties extrahieren? Plattformprogrammierung 5
N properties von rt.jar füllen Plattformprogrammierung 6
G Eclipse, Plugins, Properties, und wo zum Geier steckt das? Plattformprogrammierung 21
S RCP Nach erfolgreicher Erstellung der View, wie weitermachen? Plattformprogrammierung 1
G RCP Show View Command bestimmte View nicht erlauben Plattformprogrammierung 2
S RCP ActionBar Icon nur aktiv, wenn Selection in bestimmter View Plattformprogrammierung 6
M Plugin - Property Page - Get IResource in View Plattformprogrammierung 4
R Eclipse RCP Tabellen-View (Anfängerfrage) Plattformprogrammierung 3
L RCP Eigene View für EditorPart? Plattformprogrammierung 3
M RCP TableViewer schrumpft in View nach manueller Resize auf 1 Zeile Plattformprogrammierung 5
Madlip RCP View austauschen/ändern Plattformprogrammierung 9
B RCP View aktualisieren bei Änderung 2. View Plattformprogrammierung 8
F RCP EMF View Plattformprogrammierung 13
K RCP View wird nicht angezeigt Plattformprogrammierung 2
L RCP Detached View beim Starten des RCPs? Plattformprogrammierung 3
F Tollbar Items disabled wenn View den Focus verliert Plattformprogrammierung 3
S RCP name einer view ändern Plattformprogrammierung 2
L RCP Help in eine View einbinden? Plattformprogrammierung 3
G RCP Menüpunkt Show View Plattformprogrammierung 7
G EMF -> Leere Elemente sollen in Property View nicht angezeigt werden Plattformprogrammierung 9
Z Eclipse RCP - UDP Strom in View anzeigen Plattformprogrammierung 4
L RCP Canvas in einer View? Plattformprogrammierung 4
lumo Eclipse + 'Could not create view' Plattformprogrammierung 5
L RCP View in einem Editor öffnen? Plattformprogrammierung 3
D Canvas auf View in Eclipse PlugIn Plattformprogrammierung 3
T RCP Menubar wird durch OLE-VIEW überschrieben Plattformprogrammierung 4
S Plugin: View beim Button-Klick austauschen Plattformprogrammierung 7
Saxony View als Image Plattformprogrammierung 2
S View Refreshen Plattformprogrammierung 2
T geladene Views / Event wenn View closed Plattformprogrammierung 4
S Steuerung View (Schließen erkennen/Hide anstatt Close) Plattformprogrammierung 2
S View speichern/laden beim schließen Plattformprogrammierung 14
L View schließen Plattformprogrammierung 7
L View nicht bekannt machen Plattformprogrammierung 4
lumo View aktivieren jedesmal wen.... Plattformprogrammierung 7
A Overlay in View eines anderen Plug-Ins zeichnen Plattformprogrammierung 2
A View ansprechen Plattformprogrammierung 5
T GMF Property View Plattformprogrammierung 4
M Command in Toolbar aktiv wenn View nicht aktiv Plattformprogrammierung 2
C RCP: Veraenderungen innerhalb einer View per Extension?! Plattformprogrammierung 7
T JSVGCanvas in RCP View anzeigen Plattformprogrammierung 5
ARadauer Mehrere Gui Elemente in View Plattformprogrammierung 4
B RCP - Zugriff von View auf andere View Plattformprogrammierung 4
Saxony [Eclipse RCP] Von woanders View updaten Plattformprogrammierung 11
S View aus anderen Thread aktualisieren Plattformprogrammierung 15
K Position einer Multiple View speichern Plattformprogrammierung 6
S RCP Anfängerfrage - Zusammenspiel View, Editor, Model Plattformprogrammierung 4
G View Daten übergabe. Plattformprogrammierung 4
N Nicht schließbare View? Plattformprogrammierung 7
C View updaten Teil 2 Plattformprogrammierung 2
B Eclipse RCP: View updaten Plattformprogrammierung 10
dzim Editor aus View öffnen - fehler: unbekannte Editor ID Plattformprogrammierung 11
J Editorfenster von View navigieren lassen? Plattformprogrammierung 5
T Aus einem View in das andere wecheln. Plattformprogrammierung 13
R SWT: nur eine Instanz einer View erlauben Plattformprogrammierung 5

Ähnliche Java Themen


Oben