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;)

¿Fue útil?

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) {
         }
      }
   }

   ...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top