Просто чтобы поделиться своим недавним экспериментом по попытке сделать то же самое, то, что Макс предложил в своем ответе , сработает, но заставит вас использовать внутренний код (в результате чего ' Discouraged Access * 1004)* 'предупреждение).
Другой подход - создать меню с помощью советника на панели действий приложений.Несмотря на то, что при таком подходе вам придется писать код (вместо того, чтобы использовать вклад в меню в определении 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);
...
}
}
Возможным недостатком этого подхода является взаимодействие между меню, созданным в советнике, и меню, созданным вкладами в меню.Поскольку элементы меню советника создаются до добавления в меню , вам остается заняться добавлением дополнительной логики сортировки в свои вкладки меню.Это может быть хорошо для большинства людей, однако вы теряете «ощущение» централизованной структуры меню с org.eclipse.ui.menus
(даже если это иллюзия, когда другие плагины вступают в игру со своими собственными дополнениями к меню).
Я также включил создание перспективного меню;вариант полностью, но я добавил его, если кто-то пытается выполнить такое же построение меню с перспективами.