4

我需要完全控制透视菜单。

我已经入侵了平台以禁用 CONTEXT 菜单:

private void disablePerspectiveToolbarMenu() {
    PerspectiveBarManager perspectiveBarManager =
        ((WorkbenchWindow) PlatformUI.getWorkbench().getActiveWorkbenchWindow()).getPerspectiveBar();
    if (perspectiveBarManager!=null){
        ToolBar toolBar = perspectiveBarManager.getControl();
        Listener[] listeners = toolBar.getListeners(SWT.MenuDetect);
        if (listeners != null){
            for (Listener listener : listeners){
                toolBar.removeListener(SWT.MenuDetect, listener);
            }
        }
    }
}

但我还需要控制 PERSPECTIVE MENU 的默认内容。有一个始终存在的选项可以访问透视列表外壳。我需要从菜单中删除该选项。

遗憾的是,透视菜单完全不受用户控制。我只需要将视角添加到菜单中,仅此而已!

谢谢。

在此处输入图像描述

4

2 回答 2

2

有 3 种潜在的选择可以摆脱 Other:

  1. 在您的 RCP 应用程序中设置 org.eclipse.ui.IWorkbenchPreferenceConstants.SHOW_OTHER_IN_PERSPECTIVE_MENU 首选项。false这可以通过在plugin_customization.ini您的产品定义中包含一个文件来完成。

  2. 修补 RCP 应用程序中的工作台。看看 org.eclipse.ui.internal.PerspectiveBarNewContributionItemorg.eclipse.ui.actions.ContributionItemFactory.PERSPECTIVES_SHORTLIST

  3. 不要在您的 RCP 应用程序中包含默认透视栏。相反,使用 org.eclipse.ui.menus、工具栏和 openPerspective 命令创建透视栏。
于 2011-04-29T13:35:38.310 回答
2

我做了一些研究,但解决方案没有像我预期的那样工作。最后我发现了我的错误。

要在 plugin_customization.ini 中设置属性,我尝试过:

    org.eclipse.ui.IWorkbenchPreferenceConstants.SHOW_OTHER_IN_PERSPECTIVE_MENU=false

但这不是正确的表示法!!!请查看我最终添加到 plugin_customization.xml 的正确解决方案

    org.eclipse.ui/SHOW_OTHER_IN_PERSPECTIVE_MENU=false

所以接口的名称或指定属性的类不是符号的一部分!

于 2014-09-01T08:31:11.097 回答