1

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

<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>

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

4

3 回答 3

7

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

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});
    }
}
于 2012-07-04T07:36:38.730 回答
1

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

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

于 2012-07-03T17:14:59.773 回答
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");
        }
    }
}
于 2012-07-03T14:01:43.483 回答