Decoradores

Identificador: org.eclipse.ui.decorators

Desde: Release 2.0

Descrição: Este ponto de extensão é utilizado para incluir decoradores em exibições que inscrevem um gerenciador de decorador. Como no 2.1, haverá um conceito de decorador lightweight que identificará o gerenciamento de imagens para o decorador. Também possível declarar um decorador lightweight que simplesmente substituirá um ícone, quando ativado, que não requer nenhuma implementação do plug-in.

A ativação e/ou visibilidade de uma ação pode ser definida utilizando os elementos enablement e visibility respectivamente. Esses dois elementos contêm uma expressão booleana que é avaliada para determinar a ativação e/ou visibilidade de uma ação.

A sintaxe dos elementos enablement e visibility é a mesma. Ambos contêm apenas um subelemento de expressão booleana. No caso mais simples, esse subelemento será um elemento objectClass, objectState, pluginState ou systemProperty. No caso mais complexo, os elementos and, or e not poderão ser combinados para formar uma expressão booleana. Os elementos and e or devem conter 2 subelementos. O elemento not deve conter apenas 1 subelemento.

Marcação da Configuração:

   <!ELEMENT extension (decorator*)>

   <!ATTLIST extension
     point CDATA #REQUIRED
     id    CDATA #IMPLIED
     name  CDATA #IMPLIED
   >

   <!ELEMENT decorator (description? , enablement?)>

   <!ATTLIST decorator
      id          CDATA #REQUIRED
      label       CDATA #REQUIRED
     class       CDATA #IMPLIED
     objectClass CDATA #IMPLIED
     adaptable   (true | false)
     state       (true | false)
     quadrant    (TOP_LEFT|TOP_RIGHT|BOTTOM_RIGHT|BOTTOM_LEFT)
     lightweight (true|false)
      icon        CDATA #IMPLIED
     location    (TOP_LEFT|TOP_RIGHT|BOTTOM_LEFT|BOTTOM_RIGHT|UNDERLAY)
   >

   <!ELEMENT description (#CDATA)>

   Um subelemento opcional cujo corpo deve conter um texto, fornecendo uma breve descrição do decorador. Isso será mostrado na página Preferência de decoradores, portanto, recomenda-se que esteja incluído. O valor padrão é uma Cadeia vazia.

   <!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Este elemento é utilizado para definir a ativação da ação.

   <!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Este elemento é utilizado para definir a visibilidade da ação.

   <!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Este elemento representa uma operação booleana AND como resultado da avaliação de duas expressões de subelementos.

   <!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Este elemento representa uma operação booleana OR como resultado da avaliação de duas expressões de subelemento.

   <!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>

   Este elemento representa uma operação booleana NOT como resultado da avaliação de expressões de subelementos.

   <!ELEMENT objectClass EMPTY>

   Este elemento é utilizado para avaliar a classe ou interface de cada objeto na seleção atual. Se cada objeto na seleção implementar a classe ou a interface especificada, a expressão será avaliada como true.

   <!ATTLIST objectClass
     name CDATA #REQUIRED
   >

   <!ELEMENT objectState EMPTY>

   Este elemento é utilizado para avaliar o estado de atributo de cada objeto na seleção atual. Se cada objeto na seleção tiver o estado de atributo especificado, a expressão será avaliada como true. Para avaliar esse tipo de expressão, cada objeto na seleção deve implementar ou adaptar-se à interface org.eclipse.ui.IActionFilter.

   <!ATTLIST objectState
     name  CDATA #REQUIRED
     value CDATA #REQUIRED
   >

   <!ELEMENT pluginState EMPTY>

   Este elemento é utilizado para avaliar o estado de um plug-in. O estado do plug-in pode ser um dos seguintes: installed ou activated.

   <!ATTLIST pluginState
      id    CDATA #REQUIRED
     value (installed|activated) "installed"
   >

   <!ELEMENT systemProperty EMPTY>

   Este elemento é utilizado para avaliar o estado de algumas propriedades do sistema. O valor da propriedade é recuperado de java.lang.System.

   <!ATTLIST systemProperty
     name  CDATA #REQUIRED
     value CDATA #REQUIRED
   >
Exemplos: A seguir, exemplos de decoradores:

Um decorador completo. O desenvolvedor de plug-ins deve identificar seu próprio suporte de imagens.

 <extension point="org.eclipse.ui.decorators"> 
        <decorator
            id="com.xyz.decorator" 
            label="XYZ Decorator" 
            state="true" 
            class="com.xyz.DecoratorContributor">
            <enablement>
                <objectClass name="org.eclipse.core.resources.IResource"/> 
            </enablement>
        </decorator>
    </extension> 

Um decorador lightweight. Há uma classe concreta, mas como ele está em um ILightweightLabelDecorator, só precisa fornecer texto e um ImageDescriptor, não precisando de nenhuma identificação de recurso.

 <extension point="org.eclipse.ui.decorators"> 
        <decorator
            id="com.xyz.lightweight.decorator" 
            label="XYZ Lightweight Decorator"                 
            state="false" 
            class="com.xyz.LightweightDecoratorContributor" 
            lightweight="true" >
            <enablement>
                <objectClass name="org.eclipse.core.resources.IResource"/> 
            </enablement>
        </decorator>
    </extension> 

Um decorador lightweight informativo. Não há nenhuma classe concreta, portanto, ele fornece um ícone e um quadrante para aplicar esse ícone.

 <extension point="org.eclipse.ui.decorators"> 
        <decorator
            id="com.xyz.lightweight.declarative.decorator" 
            label="XYZ Lightweight Declarative Decorator" 
            state="false" 
            lightweight="true" 
            icon="icons/full/declarative.gif" 
            location="TOP_LEFT"> 
            <enablement>
                <objectClass name="org.eclipse.core.resources.IResource"/> 
            </enablement>
        </decorator>
    </extension>

Informações de API: O valor do atributo class deve ser o nome completo de uma classe que implementa org.eclipse.jface.viewers.ILabelDecorator (se lightweight for false) ou org.eclipse.jface.viewers.ILightweightLabelDecorator. Essa classe é carregada o mais tarde possível para evitar o carregamento de todo o plug-in antes que isso seja realmente necessário. Decoradores informativos não exigem a ativação de plug-ins e devem ser utilizados sempre que possível. Decoradores não-lightweight serão eventualmente recusados.

Implementação Fornecida: Os plug-ins podem utilizar este ponto de extensão para incluir novos decoradores para serem aplicados em exibições que utilizam o gerenciador de decoradores como seus decoradores de rótulo. Para utilizar o gerenciador de decoradores, utilize o resultado de IViewPart.getDecoratorManager() como decorador de uma instância de DecoratingLabelProvider. Atualmente, isso está sendo utilizado pelo Navegador de Recursos.

Copyright (c) 2002,2003 IBM Corporation e outros. Todos os direitos reservados. Este programa e os materiais que o acompanham são disponibilizados sob os termos da Common Public License v1.0 que acompanha esta distribuição e estão disponíveis no endereço http://www.eclipse.org/legal/cpl-v10.html