带有子菜单的Eclipse-Plugin。如何处理JavaProjects和Projects?

时间:2010-01-22 16:38:36

标签: java eclipse-plugin

我想编写一个Eclipse插件,它使用选定的Project执行Action。我使用插件模板和子菜单。我的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不是Projects。我希望在选择javaProjects或普通项目时显示此Action,而不是在选择其他内容时显示。

如果选择了javaProject或Project,如何使子菜单准确显示?

3 个答案:

答案 0 :(得分:1)

我没有测试它,但也许这有效:

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

您也可以尝试“启用”而不是“可见性”。

eclipse help pages on popup menus

答案 1 :(得分:0)

您不应该引用对象类中的内部类。您应该使用公共界面

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

尝试

objectClass="org.eclipse.core.IProject"

我没有试过这个,但IJavaProject应该适应IProject,所以这对两者都有效。

答案 2 :(得分:0)

确保对象贡献的自适应属性设置为 true (默认为 false ):

adaptable="true"

@iain建议定位界面也是很好的做法。

刚试过你的例子,菜单在Java项目中按预期显示。

始终牢记对 org.eclipse.core.resources.IResource 的可附加性,以确保您的菜单,操作始终如一地显示和启用(无论是正在呈现的资源管理器或实际对象类) 。

最后,请注意不推荐使用 org.eclipse.ui.popupMenus 扩展点。

虽然根据我使用它的经验比推荐的 org.eclipse.ui.commands 更快更容易,但是当删除它时,您可能最终难以迁移所有菜单(即, if 在某些时候将其删除。)

干杯,