¿Cómo se podría utilizar IDecorationContext API de Eclipse JFace
Pregunta
¿Hay un ejemplo que hay para el uso IDecorationContext
para las decoraciones de la etiqueta?
Por lo visto, la clase IDecorationContext
parece proporcionar algún tipo de soporte de decoración contextual, pero para la vida de mí, no puedo encontrar ningún código de ejemplo utilizando esta función ...
Tiene característica nadie realmente utilizado decoración contexto y si es así, qué casos su uso se resuelve?
PS: Busco a una forma de aplicar decoraciones de imagen a oponerse etiquetas y dependiendo de donde se visualiza el objeto, el tamaño de los iconos de base varía (por ejemplo tradicionales "pequeños" iconos de tabla y artículos de árboles e iconos más grandes para los encabezados de contenido).
Las decoraciones aplicadas a los iconos originales deben elegir las decoraciones de tamaño apropiado en consecuencia.
IDecorationContext
parece ajustarse a la factura de lo que lo necesito para, pero la documentación es tan escasa como se puede esperar de una característica menor de una biblioteca de código abierto y no hay ejemplos que se pueden encontrar.
Google para el "IDecorationContext" no reveló nada interesante tampoco, así que vuelvo a la sabiduría multitud Stackoverflow con la esperanza próxima individuo que consigue la pregunta sería capaz de obtener la respuesta más rápida;)
Solución
Yo no utilizar IDecorationContext, pero se puede ver que utiliza en org.eclipse.jface.viewers.LabelDecorator
.
También se discute en este hilo ( incluso si no hay respuesta, que puede al menos dar un punto de partida)
Mi enfoque actual es extender org.eclipse.ui.decorators utilizando una ILightweightLabelDecorator para añadir una superposición de reemplazar a la respectiva iconos:
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) {
}
}
}
...
}