Domanda

C'è un esempio là fuori per l'utilizzo di IDecorationContext per le decorazioni di etichette?

Con gli sguardi di esso, classe IDecorationContext sembra fornire una sorta di supporto decorazione contestuale, ma per la vita di me, non riesco a trovare alcun codice di esempio si utilizza questa funzione ...

ha funzione di chiunque contesto decorazione effettivamente utilizzato e, in caso affermativo, a che serve casi ha risolve?


PS: Cerco un modo per applicare decorazioni immagine di opporsi etichette e seconda di dove è visualizzato l'oggetto, la dimensione delle icone di base varia (ad es tradizionali icone "piccole" in tabella e articoli di albero e grandi icone per le intestazioni di contenuto).

Le decorazioni applicate alle icone originali dovrebbero scegliere le decorazioni di dimensioni adeguate di conseguenza.

IDecorationContext sembra adattarsi il conto per quello che mi serve per, ma la documentazione è scarsa, come ci si può aspettare da una caratteristica minore di una libreria open source e non ci sono esempi per essere trovato.

Googling per il "IDecorationContext" non ha rivelato nulla di interessante o, così mi rivolgo a StackOverflow folla saggezza nella speranza prossima ragazzo ottenendo la questione sarebbe in grado di ottenere la loro risposta più veloce;)

È stato utile?

Soluzione

Non ho usato IDecorationContext, ma si può vedere ha usato in org.eclipse.jface.viewers.LabelDecorator .

Si è anche discusso in questa discussione ( anche se non ci sono risposte, che si può almeno dare un punto di partenza)

Il mio approccio attuale è quello di estendere org.eclipse.ui.decorators usando un ILightweightLabelDecorator per aggiungere un overlay sostituire al rispettivo icone:

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

   ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top