# RCP: Problem bei deklarativem LightWeightDecorator



## Ralf Ueberfuhr (13. Feb 2008)

Hallo,

ich habe einen deklarativen Decorator. Dieser dekoriert Elemente in einem Navigator. Im speziellen Fall sind das Datenbankverbindungen, aus denen ich Daten auslese und im Navigator anzeige. Kann keine DB-Verbindung aufgebaut werden, so soll der Decorator ein Symbol anzeigen.

Also die Reihenfolge:
1. Benutzer klickt auf Navigator-Symbol
2. DB-Verbindung scheitert
3. Decorator ändert das Symbol.

Mein Problem besteht bei drittens, denn wenn ich auf dem DecoratorManager ein update() ausführen möchte, findet er den Decorator nicht (Interna des DecoratorManagers: Er findet die Deklaration, aber das Feld decorator ist nicht gesetzt.). Der Decorator mit dieser ID ist aber enabled.

*Jetzt das Wundersame:*
Wenn ich den View nach einem Test schließe und wieder öffne, dann klappt das, zumindest hat er dann den DeclarativeDecorator.

Auch wenn ich nach dem gescheiterten Verbindungsaufbau auf das Symbol klicke, dekoriert er es.

Ich möchte aber ein Update auf alle Objekte in der Workbench, die diesen Decorator haben, aufrufen. (Kann ja auch aßerhalb des aktuellen Views sein) Wie funktioniert das?


----------



## Wildcard (13. Feb 2008)

Du redest jetzt aber nicht von org.eclipse.ui.views.ResourceNavigator, oder?
Der zeigt doch eigentlich nur IResource Objekte an  ???:L


----------



## Ralf Ueberfuhr (13. Feb 2008)

Nein. Ich nutze das Common Navigator Framework.


----------



## Wildcard (13. Feb 2008)

Und du feuerst auch ein passendes Event?
Mit Decorations hatte ich schon länger nichts zu tun. Etwas relevanter Code könnte vielleicht helfen.


----------



## Ralf Ueberfuhr (13. Feb 2008)

Ich habe nun eine Lösung gefunden, um sein solches Event zu feuern - indem ich das zu updatende Element selektiere. Jedoch ist das nicht der Königsweg. Gerne möchte ich die Methode IDecoratorManager#update(decoratorId) benutzen. Diese greift aber auf IDecoratorManager#getBaseLabelProvider(decoratorId) zu.

Dabei werden aber die Views nicht geupdated. Genau das möchte ich aber.


----------



## Wildcard (13. Feb 2008)

Bis ich dazu komme es selbst zu versuchen, kann ich dir nur raten die mal die Implementierung von zB. dem CVS Plugin anzusehen. Dort scheint es ja zu funktionieren.


----------

