Expressões Booleanas e Filtros de Ações

Quando um plug-in contribui com uma ação para a UI do workbench utilizando um dos pontos de extensão do menu, ele pode especificar as condições sob as quais o item de menu fica visível e/ou ativado no menu.  Além de fornecer condições simples de ativação, como contagens de seleção e classes de seleção, os plug-ins podem utilizar expressões booleanas para ativar ou tornar visível uma ação.

Expressões Booleanas

As expressões booleanas podem conter operadores booleanos (NOT, AND, OR) simples e expressões predefinidas que podem avaliar as seguintes condições:

Por exemplo, os seguintes fragmentos representam expressões de ativação que poderiam ser utilizadas em uma ação hipotética em um conjunto de ações:

<action id="org.eclipse.examples.actionEnablement.class" 
       label="Elemento Vermelho"
       menubarPath="additions"
       class="org.eclipse.examples.actionEnablement.ObjectTestAction">
       <enablement> 
	 <and>
	   <objectClass name="org.eclipse.examples.actionEnablement.TestElement"/> 
           <objectState name="name" value="red"/> 
	 </and>
       </enablement> 
</action> 
<action id="org.eclipse.examples.actionEnablement.property" 
       label="Property" 
       menubarPath="additions"
       class="org.eclipse.examples.actionEnablement.PropertyTestAction">
       <enablement> 
           <systemProperty name="MyTestProperty" value="puppy"/> 
       </enablement> 
</action> 
<action id="org.eclipse.examples.actionEnablement.pluginState" 
       label="Installed"
       menubarPath="additions"
       class="org.eclipse.examples.actionEnablement.PluginTestAction">
       <enablement> 
           <pluginState id="x.y.z.anotherPlugin" value="installed"/> 
       </enablement> 
</action> 

Consulte a documentação de referência dos pontos de extensão a seguir para obter exemplos mais elaborados dessas expressões e uma descrição completa do XML.

A tabela a seguir lista os pontos de extensão que contribuem com ações e resume como os atributos e expressões booleanas da marcação XML podem ser utilizados para afetar a ativação.

Nome do ponto de extensão

Atributos que afetam a ativação

Expressões Booleanas

viewActions,

editorActions,

actionSets

enablesFor - especifica a contagem de seleção que deve ser atendida para que a ação seja ativada

selection class - a classe que os objetos selecionados devem subdividir em classes ou implementar para ativar a ação

selection name - um filtro de caractere curinga que pode ser aplicado aos objetos na seleção.

visibility - uma expressão booleana.  Controla se o item de menu está visível no menu.

enablement - uma expressão booleana.  Controla se o item de menu está ativado no menu.  O atributo enablesFor, selection class e name, devem ser atendidos antes que a expressão enablement seja aplicada.

popupMenus

(Apenas para contribuições de objetos.)

objectClass - especifica a classe que os objetos na seleção devem subdividir em classes ou implementar

(Para as contribuições de objetos e de visualizadores)

enablesFor - especifica a contagem de seleção que deve ser atendida para que a ação seja ativada

selection class - a classe que os objetos selecionados devem subdividir em classes ou implementar para ativar a ação

selection name - um filtro de caractere curinga que pode ser aplicado aos objetos na seleção.

 

(Para as contribuições de objetos e de visualizadores)

visibility - uma expressão booleana.  Controla se o item de menu está visível no menu.

enablement - uma expressão booleana.  Controla se o item de menu está ativado no menu.  O atributo enablesFor, selection class e name, devem ser atendidos antes que a expressão enablement seja aplicada.

Utilizando o objectState com os Tipos de Conteúdo

A habilidade de definir os tipos de conteúdo (consulte Tipos de conteúdo) pode ser combinada com expressões booleanas para definir condições de ativação ou de visibilidade muito específicas com base no tipo de conteúdo de um recurso. Por exemplo, o seguinte snippet torna um item de menu pop-up visível somente se o conteúdo do arquivo selecionado corresponder aos tipos de conteúdo especializado do plug-in.

<extension point="org.eclipse.ui.popupMenus">
     <objectContribution
      id="com.example.objectContributions"
      objectClass="org.eclipse.core.resources.IFile"
      nameFilter="*.xml">
         <visibility>
            <or>
               <objectState
                  name="contentTypeId"
                  value="com.example.employeeRecordContentType"/>
               <objectState
                  name="contentTypeId"
                  value="com.example.customerRecordContentType"/>
            </or>
         </visibility>
         <action id="com.example.action1"
         ...
O atributo contentTypeId pode ser utilizado em uma expressão objectState para verificar o tipo de conteúdo do arquivo xml selecionado. Isso permite que um plug-in aplique uma verificação de conteúdo muito específica antes de ativar ou mostrar ações do menu relacionadas aos tipos específicos de arquivos. Consulte Tipos de conteúdo para obter detalhes adicionais sobre a extensão do tipo de conteúdo.

Avisos legais.