如何从文件>中删除默认向导RCP应用程序中的新菜单?

时间:2012-07-03 08:42:06

标签: eclipse eclipse-plugin eclipse-rcp

我想在File>中添加一些我的向导通过将org.eclipse.ui.newWizards扩展点添加到plugin.xml文件中,我的RCP应用程序的新菜单。

<extension point="org.eclipse.ui.newWizards">
<category
    id="com.my.testapp.ui.objects"
    name="Objects"/>
<wizard
    category="com.my.testapp.ui.objects"
    class="com.my.testapp.ui.wizard.create.COWizard"
    icon="icons/co.gif"
    id="com.my.testapp.ui.wizard.co"
    name="Configure Object"
    preferredPerspectives="com.my.testapp.ui.perspective"/>
</wizard>
</extension>

默认文件&gt;新&gt;除配置对象向导的“我的对象”文件夹之外的其他菜单还包含具有以下向导的“常规”文件夹:“文件”,“文件夹”,“项目”和“无标题文本文件”。在我的应用程序中,这些向导没有意义我想摆脱它们。怎么做?

3 个答案:

答案 0 :(得分:7)

提供here的解决方案(感谢@bananeweizen和@stracka)删除默认导入向导也可以应用于此问题。 因此,解决方案是将以下代码添加到postWindowOpen()类的ApplicationWorkbenchWindowAdvisor方法,以便从文件&gt;中删除默认的“常规”类别。新&gt;其他菜单。

AbstractExtensionWizardRegistry wizardRegistry = (AbstractExtensionWizardRegistry)PlatformUI.getWorkbench().getNewWizardRegistry();
IWizardCategory[] categories = PlatformUI.getWorkbench().getNewWizardRegistry().getRootCategory().getCategories();
for(IWizardDescriptor wizard : getAllWizards(categories)){
    if(wizard.getCategory().getId().matches("org.eclipse.ui.Basic")){
        WorkbenchWizardElement wizardElement = (WorkbenchWizardElement) wizard;
        wizardRegistry.removeExtension(wizardElement.getConfigurationElement().getDeclaringExtension(), new Object[]{wizardElement});
    }
}

答案 1 :(得分:1)

虽然this question要求隐藏一些“导入”向导(而不是“新建”向导),但解决方案也应该适用于您的问题。

如果您正在搜索更多详细信息,请注意该机制的扩展点称为活动,但引用它的Eclipse术语是功能

答案 2 :(得分:0)

您是否尝试删除相关的操作集?我从来没有删除你所指的项目,但是我删除了默认的“搜索”操作,“注释”操作和“导航”操作等内容,因为我通常不支持这些功能。应用

一旦你弄清楚这些操作所包含的软件包,通常需要进行一些研究和挖掘,你可以将它们隐藏在 ApplicationWorkbenchWindowAdvisor的 postWindowOpen()方法中班,像这样:

public void postWindowOpen() { 
    // remove unwanted UI contributions that eclipse makes by default
    IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
    for (int i = 0; i < windows.length; ++i) {
        IWorkbenchPage page = windows[i].getActivePage();
        if (page != null) {
            // hide 'Search' commands
            page.hideActionSet("org.eclipse.search.searchActionSet");

            // hide 'Annotation' commands
            page.hideActionSet("org.eclipse.ui.edit.text.actionSet.annotationNavigation");

            // hide 'Forward/Back' type navigation commands
            page.hideActionSet("org.eclipse.ui.edit.text.actionSet.navigation");
        }
    }
}