Eclipse RCP:操作 "RESET_PERSPECTIVE" 显示以前隐藏的菜单项

Eclipse RCP: Action "RESET_PERSPECTIVE" shows previously hidden menu entries

由于从 Eclipse 3.0 迁移到 4.4,有必要隐藏不必要的菜单项,例如 "open file" 和 "key assist"。

我通过在我的 postWindowOpen 方法中调用 hideActionSet 来隐藏它们

public void postWindowOpen(IWorkbenchWindowConfigurer configurer)
{       
    IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();

    for(int i = 0; i < windows.length; ++i)
    {
        IWorkbenchPage page = windows[i].getActivePage();
        if(page != null)
        {
            page.hideActionSet("org.eclipse.ui.actionSet.keyBindings");
                page.hideActionSet("org.eclipse.ui.actionSet.openFiles");
        }
    }
}

目前为止一切正常。但是当重新排列我的视角,然后重置视角,然后换到另一个视角时,不必要的菜单项又出现了。

我尝试通过在我的 perspectiveActivatedperspectiveChanged 方法中调用相同的代码来解决这个问题。 hideActionSet方法都达到了,但是没有效果。

以下是这两种方法:

public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) 
{
    if( perspective.getId().equals(m_PerspektivenID) || m_PerspektivenID.equals(STANDARDAKTION))
    {
        setEnabled( true );
    }
    else
    {
        setEnabled( false );
    }

    if(page != null)
    {
        page.hideActionSet("org.eclipse.ui.actionSet.keyBindings");
        page.hideActionSet("org.eclipse.ui.actionSet.openFiles");
    }
}

public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) 
{
    if(changeId.equals(IWorkbenchPage.CHANGE_RESET_COMPLETE))
    {
        if(page != null)
        {
            page.hideActionSet("org.eclipse.ui.actionSet.openFiles");
            page.hideActionSet("org.eclipse.ui.actionSet.keyBindings");
        }
    }
}

谢谢,成功了。我只是习惯了错误的ID。当您使用方法 hideActionSet 时,您必须使用 ID org.eclipse.ui.actionSet.openFiles,但是当您想要使用活动隐藏它们时,您必须使用 org.eclipse.ui.edit.text.openLocalFile.

总之:

  • hideActionSet隐藏:使用The active contribution item identifier
  • 隐藏活动:使用The active action definition identifier