Frage

Gibt es ein Beispiel gibt für die Verwendung von IDecorationContext für Bezeichnungsdekorationen?

Mit den Blicken von ihm, IDecorationContext Klasse scheint eine Art von Kontext Dekoration Unterstützung, sondern für das Leben von mir, ich kann keine Beispielcode Verwendung dieser Funktion finden ...

Hat jemand tatsächlich verwendet Dekoration Kontext Feature und wenn ja, welche Anwendungsfälle hat es lösen?


PS: ich nach einem Weg suchen Bild Dekorationen anwenden Etiketten zum Objekt und je nachdem, wo das Objekt angezeigt wird, die Basissymbolgröße variiert (zB traditionelle „kleine“ Symbole in Tabellen- und Baumelemente und größere Symbole für Content-Header).

Die auf die ursprünglichen Symbole angewendet Dekorationen entsprechend geeignete Größe Dekorationen wählen sollten.

IDecorationContext scheint die Rechnung zu passen, was ich brauche es für, aber die Dokumentation ist so spärlich wie man sich von einem kleineren Merkmale einer Open-Source-Bibliothek erwarten kann, und es gibt keine Beispiele gefunden werden.

Googeln für die „IDecorationContext“ hat nichts interessant entweder offenbart, so wende ich mich an Stackoverflow Menge Weisheit in der Hoffnung, die Frage nächster Mann wäre in der Lage bekommt ihre Antwort schneller zu bekommen;)

War es hilfreich?

Lösung

Ich habe nicht IDecorationContext verwenden, aber man kann es verwendet in org.eclipse.jface.viewers.LabelDecorator .

Es ist auch in diesen Thread diskutiert ( selbst wenn es keine Antwort gibt, dass Sie einen Ausgangspunkt zumindest geben)

Mein aktueller Ansatz ist org.eclipse.ui.decorators zu erweitern ein mit ILightweightLabelDecorator hinzufügen eine ersetzen Overlay auf die jeweilige Symbole:

public class ProjectLabelDecorator extends LabelProvider 
   implements ILightweightLabelDecorator {

   ...

   public void decorate(Object element, IDecoration decoration) {
      if (element instanceof IFolder) {
         IFolder folder = (IFolder) element;
     try {
            if (folder.getProject().hasNature("rttdt.nature")) {
                if (ProjectNature.isTestcase(folder)) {
                   IDecorationContext context = 
                      decoration.getDecorationContext();
                   if (context instanceof DecorationContext) {
                      ((DecorationContext) context).putProperty(
                         IDecoration.ENABLE_REPLACE, Boolean.TRUE);
                   }
                   decoration.addOverlay(fTestcaseOverlay,
                      IDecoration.REPLACE);
                }
         } catch (CoreException e) {
         }
      }
   }

   ...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top