2016-01-13 72 views
0

由于从Eclipse 3.0迁移到4.4,有必要隐藏不必要的菜单条目,如“打开文件”和“密钥帮助”。Eclipse RCP:Action“RESET_PERSPECTIVE”显示先前隐藏的菜单条目

我在我的postWindowOpen方法

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"); 
     } 
    } 
} 

能正常工作至今调用hideActionSet隐藏这些。但是,当重新安排我的观点,然后重新设定观点,然后改变到另一个观点时,不必要的菜单条目再次出现。

我试着通过在我的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"); 
     } 
    } 
} 
+1

你可以看看使用'org.eclipse.ui.activities'扩展点隐藏的东西,而不是代码。 –

+0

谢谢。我尝试了这种方法,我可以隐藏一些菜单条目,比如我的应用程序使用模式“。*”的about对话框。当我使用“org.eclipse.ui.actionSet.openFiles”模式时,它不会隐藏在重置和更改透视图后突然出现的开放式menue条目... –

回答

0

谢谢你,它的工作。我只是习惯了错误的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