はちょうど私の最近の上で共有します同じことをしようとする試みでの実験、Maxが彼のanswerで示唆したことはうまくいくだろうが、内部コード'Discouraged Access'という警告が表示されます)。
もう1つの方法は、アプリケーションのアクションバーアドバイザーによってメニューを作成することです。ただし、この方法ではコードを書く必要があります(プラグインのXML定義にメニューの提供を提供することに反対する)。次の例を考えてみましょう:
public class ApplicationActionBarAdvisor extends ActionBarAdvisor
{
private IContributionItem contributionOpenPerspective;
private IContributionItem contributionShowView;
...
protected void makeActions(IWorkbenchWindow window)
{
...
contributionOpenPerspective = ContributionItemFactory.
PERSPECTIVES_SHORTLIST.create(window);
contributionShowView = ContributionItemFactory.
VIEWS_SHORTLIST.create(window);
...
}
protected void fillMenuBar(IMenuManager menuBar)
{
...
MenuManager windowMenu = new MenuManager("&Window",
IWorkbenchActionConstants.M_WINDOW);
menuBar.add(windowMenu);
MenuManager openPerspectiveMenu = new MenuManager("&Open Perspective");
openPerspectiveMenu.add(perspectivesContribution);
windowMenu.add(openPerspectiveMenu);
MenuManager showViewMenu = new MenuManager("Show &View");
showViewMenu.add(viewsContribution);
windowMenu.add(showViewMenu);
...
}
}
このアプローチの可能性の欠点は、メニューの貢献によって作成された顧問で作成したメニューとメニューの間の相互作用です。 advisor menu items are created before menu contributions以降、メニューの投稿にさらに多くの並べ替えロジックを追加する必要があります。これはほとんどの人にとってはうまくいくかもしれませんが、org.eclipse.ui.menus
からの集中メニュー構造の「感じ」を失うことになります(他のプラグインが自分自身のメニューの寄稿で遊んでいるような錯覚でも)。
また、パースペクティブメニューのビルドも含めました。完全なオプションですが、誰かが同じメニュービルディングを視点で実行しようとしている場合は追加しました。
これを実行した後で、パースペクティブ拡張で ''を追加してワークスペースデータをクリアしたにもかかわらず、メニューに '<該当するビューがありません>'と表示されます。どのようにこれを修正するための任意のアイデア? –