【问题标题】:How to hide default menus in RCP?如何隐藏 RCP 中的默认菜单?
【发布时间】:2012-11-29 00:32:06
【问题描述】:

我是 Eclipse RCP 插件开发的新手。

我用自己的视角编写了一个插件,并在其中添加了特定于视角的菜单。

我的问题是如何隐藏 Eclipse 中提供的默认菜单,如编辑、导航、搜索、项目?

我尝试使用 '' 并根据菜单贡献将我的视图置于特定条件。

感谢任何帮助。

最好的问候,

曼达尔·帕塔克。

【问题讨论】:

    标签: eclipse eclipse-plugin rcp


    【解决方案1】:

    您需要activities。我当前项目的示例:

    <extension
         point="org.eclipse.ui.activities">
      <activity
            id="arm.activity.disabled"
            name="%arm.activity.disabled.name">
         <enabledWhen>
            <with
                  variable="selection">
               <count
                     value="-1">
               </count>
            </with>
         </enabledWhen>
      </activity>
      <activityPatternBinding
            activityId="arm.activity.disabled"
            pattern="org\.eclipse\.m2e\..*">
      </activityPatternBinding>
      <activityPatternBinding
            activityId="arm.activity.disabled"
            pattern="org\.eclipse\.search\..*">
      </activityPatternBinding>
      <activityPatternBinding
            activityId="arm.activity.disabled"
            pattern="org\.eclipse\.team\..*">
      </activityPatternBinding>
      <activityPatternBinding
            activityId="arm.activity.disabled"
            pattern="org\.eclipse\.compare.*">
      </activityPatternBinding>
      <activityPatternBinding
            activityId="arm.activity.disabled"
            pattern="org\.eclipse\.help\.ui\.PrefPageHelp.*">
      </activityPatternBinding>
      <activityPatternBinding
            activityId="arm.activity.disabled"
            isEqualityPattern="true"
            pattern="org.eclipse.ui.ide/org.eclipse.ui.preferencePages.Workspace">
      </activityPatternBinding>
      <activityPatternBinding
            activityId="arm.activity.disabled"
            isEqualityPattern="true"
            pattern="org.eclipse.ui.ide/org.eclipse.ui.preferencePages.Perspectives">
      </activityPatternBinding>
    </extension>
    

    【讨论】:

    • 你好@Alexey,它对我来说部分有效,但仍然无法隐藏所有菜单。例如,我无法隐藏搜索->远程,但可以隐藏所有其他搜索。同样对于某些菜单,插件间谍没有显示“活动操作定义标识符”,而是显示一些类名称。在那种情况下我们能找到命令名称吗?
    • 是的,找到正确的 ID 有时是个问题。您可以在启动应用程序时设置跟踪选项(请参阅eclipsesource.com/blogs/2009/07/08/…),但我不记得是否有跟踪菜单打开的选项。
    • 项目资源管理器中“重命名”上下文菜单的模式是什么?当我们右键单击一个项目并出现菜单时,我想禁用该列表中的重命名菜单
    • @wearybands 我不知道,您可能想将此作为一个单独的问题提出。
    【解决方案2】:

    一种方法是在您的 rcp 应用程序中,您有一个扩展 ActionBarAdvisor 的类,并且在该类的构造函数中,您可以执行类似的操作,例如删除编辑菜单

    configurer.getMenuManager().remove(IWorkbenchActionConstants.M_EDIT);
    

    所有常见的 Eclipse 菜单(如编辑)都将在上面的类中定义一个常量,对要从应用程序中删除的菜单执行此操作。

    这只是一种方法,我相信可能还有其他方法,但希望这能满足您的需求。

    【讨论】:

    • 感谢您的友好回复。但是对于菜单,我使用了 plugin.xml。那么有没有其他方法可以隐藏菜单(最好使用plug-in.xml)。我尝试使用上面的代码,但我的 Application 类正在实现 IApplication,所以不知道我的 ActionBarAdvisor 将如何被调用。
    • 一个建议是创建一个新的插件项目,选择它将做出 UI 贡献的选项,然后选择创建 rcp 应用程序,然后选择其中一个模板,您将看到 RCP 应用程序的基本结构.我可能是错的,但如果你有一个 IApplication,你必须有一个扩展 ActionBarAdvisor 的类。创建 rcp 示例应用程序是一个很好的起点,然后尝试使用我上面放置的代码,看看是否可以让编辑菜单不显示。
    猜你喜欢
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多