1

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>

デフォルトでは、[ファイル] > [新規] > [その他] メニューには、[オブジェクトの構成ウィザード] を使用した [オブジェクト] フォルダー以外に、[ファイル]、[フォルダー]、[プロジェクト]、および [無題のテキスト ファイル] ウィザードを含む [一般] フォルダーも含まれています。私のアプリケーションでは、これらのウィザードは意味をなさないので、削除したいと思います。どうやってするか?

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

この質問では、(「新規」ウィザードではなく) 「インポート」ウィザードの一部を非表示にすることについて尋ねていますが、解決策は問題にも適用されるはずです。

詳細についてグーグルで検索している場合は、そのメカニズムの拡張ポイントはactivitiesと呼ばれますが、それを参照する Eclipse 用語はcapabilitiesであることに注意してください。

于 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 に答える