Я пытаюсь настроить видимость команды в контекстном меню, используя выражение visibleWhen в menuContribution.Я пытаюсь сделать команду видимой в контекстном меню, только если вы:
- Щелкните правой кнопкой мыши определенные типы файлов (ресурсы) в представлении ресурсов (или представлении пакета)
- Щелкните правой кнопкой мыши соответствующий редактор с открытым типом файла.Он может обнаружить, что мой редактор открыт или что у редактора открыт определенный ресурс.
Я выполнил первое, используя 'visibleWhen'> 'selection (with)'> 'iterate'> 'org.eclipse.core.resources.IResource (adapt) ', затем проверяет расширение файла для ресурса.Код указан ниже.Однако я не уверен, как заставить ту же команду появляться, только когда вы щелкнете правой кнопкой мыши по правильному редактору, в котором открыт файл с правильными расширениями - ext1, ext2.
Проверка, активен ли мой редакторрешает вторую проблему, но, похоже, не помогает, так как, если я нажму на файлы, которые не принадлежат моему типу, она все равно покажет команду в контекстном меню.
Любые рекомендации?«Плагины Eclipse (3-е издание)» показывают пример контекстного меню редактора, но в нем используются действия, и я хочу придерживаться команд.
Спасибо !!
<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>