Затмение-Плагин с подменю. Как работать с JavaProjects и Projects? - PullRequest
1 голос
/ 22 января 2010

Я хочу написать Eclipse-плагин, который выполняет действие с выбранным проектом. Я использовал плагин Шаблон с подменю. Мой plugin.xml выглядит так:

<extension
      point="org.eclipse.ui.popupMenus">
   <objectContribution
         objectClass="org.eclipse.core.internal.resources.Project"
         id="testplugin2.contribution1">
      <menu
            label="Propertie Manager"
            path="additions"
            id="testplugin2.menu1">
         <separator
               name="group1">
         </separator>
      </menu>
      <action
            label="list all *.properties"
            class="testplugin2.popup.actions.ListPropertiesAction"
            menubarPath="testplugin2.menu1/group1"
            enablesFor="1"
            id="testplugin2.projectAction">
      </action>
   </objectContribution>
</extension>

это прекрасно работает для всех, кроме javaProjects. Оказывается, javaProjects не являются проектами. Я хочу, чтобы это действие отображалось при выборе javaProjects или обычных проектов, а не при выборе чего-то другого.

Как сделать так, чтобы подменю отображалось точно, если выбран javaProject или Project?

Ответы [ 3 ]

1 голос
/ 22 января 2010

Я не проверял, но, может быть, это работает:

<objectcontribution ...>
    <visibility>
        <objectClass
            name="org.eclipse.jdt.core.IJavaProject" />
    </visibility>
</objectContribution>

Вы также можете попробовать «включение» вместо «видимость».

страницы справки по затмению во всплывающих меню

0 голосов
/ 14 августа 2014

Убедитесь, что свойство adaptable вашего вклада объекта установлено в true (по умолчанию false ):

adaptable="true"

@ iain предложение для целевого интерфейса также является хорошей практикой.

Только что попробовал ваш пример, и меню показывали, как и ожидалось, для проекта Java.

Всегда имейте в виду доступность к org.eclipse.core.resources.IResource в целом, чтобы обеспечить последовательное отображение и активацию ваших меню, действий (независимо от того, какой проводник или реальный класс объекта отображается).

Наконец, имейте в виду, что точка расширения org.eclipse.ui.popupMenus устарела.

Хотя, по моему опыту, его использование выполняется быстрее и проще, чем рекомендованное org.eclipse.ui.commands , но вам может быть трудно перенести все меню, когда оно удалено (то есть если в какой-то момент удаляется).

Приветствия

0 голосов
/ 25 января 2010

Вы не должны ссылаться на внутренний класс в вашем объектном классе. Вы должны использовать общедоступный интерфейс вместо

objectClass="org.eclipse.core.internal.resources.Project"

Попробуйте

objectClass="org.eclipse.core.IProject"

Я не пробовал это, но IJavaProject должен адаптироваться к IProject, так что это должно работать для обоих.

...