visibleCuando el comando aparezca en el menú contextual

Estoy tratando de configurar la visibilidad de un comando dentro del menú contextual usando la expresión 'visibleWhen' dentro de una contribución de menú. Lo que intento hacer es hacer que el comando sea visible en el menú contextual solo si usted:

Haga clic con el botón derecho en ciertos tipos de archivos (recursos) en la vista de recursos (o vista de paquete) Haga clic con el botón derecho en el editor apropiado que tenga abierto el tipo de archivo. Puede detectar que mi editor está abierto o que el editor tiene un cierto recurso abierto.

He realizado el primer uso de 'visibleWhen'> 'selection (with)'> 'iterate'> 'org.eclipse.core.resources.IResource (adapt)' y luego verifico la extensión del archivo para el recurso. El código se encuentra a continuación. Sin embargo, no estoy seguro de cómo hacer que aparezca el mismo comando solo cuando hace clic con el botón derecho en el editor correcto que tiene un archivo abierto con las extensiones correctas: ext1, ext2.

Verificar si mi editor está activo resuelve el segundo problema pero no parece ayudar, ya que si hago clic en archivos que no son de mi tipo, seguirá mostrando el comando en el menú contextual.

¿Alguna recomendación? El "Plug-ins de Eclipse (3ª edición)" muestra algunos ejemplos para el menú contextual del editor, pero utiliza acciones y quiero seguir con los comandos.

¡¡Gracias!

  <menuContribution
        allPopups="false"
        locationURI="popup:org.eclipse.ui.popup.any?before=additions">
     <separator
           name="com.test.ide.separator1"
           visible="true">
     </separator>
     <menu
           icon="icons/sample.gif"
           label="Test Menu">
        <command
              commandId="com.test.commands.testCommand1"
              icon="icons/sample.gif"
              label="testCommand1"
              style="push"
              tooltip="This is a test command">
           <visibleWhen
                 checkEnabled="false">
              <with
                    variable="selection">
                 <iterate
                       ifEmpty="false"
                       operator="or">
                    <adapt
                          type="org.eclipse.core.resources.IResource">
                       <or>
                          <test
                                property="org.eclipse.core.resources.extension"
                                value="ext1">
                          </test>
                          <test
                                property="org.eclipse.core.resources.extension"
                                value="ext2">
                          </test>
                       </or>
                    </adapt>
                 </iterate>
              </with>
           </visibleWhen>
        </command>
     </menu>
  </menuContribution>

Respuestas a la pregunta(3)

Su respuesta a la pregunta