Wie würde man IDecorationContext api von Eclipse-JFace verwenden
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;)
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) {
}
}
}
...
}