# RCP: Veraenderungen innerhalb einer View per Extension?!



## Chyper (22. Sep 2009)

Hallo,

ist es moeglich in eine bestehende View per Extension z.B. ein Textfeld hinzuzufuegen (oder auch zu entfernen)?
Ich hab jetzt schon einige Zeit im Internet gesucht aber ich konnte bisher nur Beispiele fuer neue Views oder Perspektiven finden jedoch nicht fuer neue Elemente innerhalb einer View.

Gruß
Chyper


----------



## Gonzo17 (22. Sep 2009)

Fällt mir spontan nur ein, dass du einen neuen View erstellen könntest, der von dem View, den du haben möchtest, erbt. Da kannst du dann eben ändern was du möchtest. Aber die schwierigere Sache dabei wird wohl sein immer den "neuen" View zu verwenden statt dem "alten". Ich weiss ja grade nicht genau, was du damit vor hast, deswegen ist das schwer einzuschätzen.


----------



## Chyper (22. Sep 2009)

Also ich will folgendes machen:
Es soll eine View je nachdem welche OSGi-Bundles/Plugins gerade installiert sind verändert werden.
Die Anwendung soll dynamisch zur Laufzeit (getriggert von aeußeren Faktoren (einfaches Beispiel z.B. die Uhrzeit)) verschiedene Plugins aktivieren bzw. wieder deaktivieren und dabei sollen die relevanten Elemente (erstmal nur Textfelder und Labels) der Plugins auf der View erscheinen bzw. wieder verschwinden.


----------



## Gonzo17 (22. Sep 2009)

Der Punkt, der mir noch nicht ganz klar ist, ist ob du einen View von Eclipse oder einem anderen Plug-In nutzen möchtest oder einen View von dir selbst. Wenns einer ist, den du selbst gecodet hast, dann stellt die Änderung zur Laufzeit denke ich ein kleineres Problem dar, da du den Code ja verändern kannst. 

Hast du es schon hinbekommen, dass Plug-Ins aktiviert und deaktiviert werden während der Laufzeit? Das wäre mal der erste Schritt denke ich.


----------



## Wildcard (22. Sep 2009)

Das solltest du über einen OSGi Service realisieren.
Deine View reagiert auf das verfügbarwerden eines bestimmten OSGi Services und wann immer einer dazu kommt, aktualisierst du die View entsprechend.


----------



## Chyper (23. Sep 2009)

Danke fuer eure Anmerkungen.

Gonzo: Ja das funktionert.

Wildcard:
Du meinst also ich sollte die zusaetzlichen GUI elemente alle im "Hauptprogramm" definieren/managen und nicht in den einzelnen Bundles?
Waere eine Moeglichkeit, is allerdings nicht ganz so schoen/flexibel als wenn die Elemente in den einzelnen Bundles definiert waeren. Extensions braeuchte ich in dem Fall ja auch nicht. Nur eine Pruefung im Hauptprogramm gegen das OSGi Framework ob Bundle xy aktiv ist und dann entsprechend Aenderungen an der View vollziehen.


----------



## Wildcard (23. Sep 2009)

Nein, das meine ich nicht. Deine View muss nur in der Lage sein generischen Inhalt zusätzlicher Bundles zur Laufzeit hinzufügen, nicht selbst die Widgets kennen. Die Widgets kann der OSGi Service liefern.
Idealerweise schreibst du nur eine leere Container View und wenn du irgendwelche Widgets hast die 'immer' da sein sollen, dann kann dein 'Haupt' Bundle die Widgets auf genau die gleiche Weise einhängen. Schau dir als Beispiel einfach mal die TabbedPropertiesView an, deren unterschiedliche Sections funktionieren genauso. 
Du musst dich nur entscheiden ob diese erweiterungen dynamisch zur Laufzeit hinzukommen (dann per OSGi Service), oder ob es genügt Bundles einzubinden die beim Eclipse start vorhanden waren, in diesem Fall ist ein eigener ExtensionPoint die einfacherer Alternative. Das wäre dann 1:1 so wie von der TabbedPropertiesView vorgelebt.


----------



## Chyper (24. Sep 2009)

Achso. Dann werd ich mir das mit den TabbedPropertiesViews mal anschauen und versuchen das per ExtensionPoint zu realisieren. Danke erstmal!


----------

