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