Вы можете сделать это, хотя это не так просто, как может показаться.Главное меню в Eclipse очень динамично.Подменю создаются, например, ленивыми, или переключение редактора может привести к появлению новых меню сверху.Вы должны постоянно регистрировать / отменять регистрацию своих слушателей.
Если вы создаете представление, вы можете использовать данный родительский композит, чтобы получить главное меню и зарегистрировать ваших слушателей.Но, как я уже сказал, вы должны постоянно регистрировать / отменять регистрацию слушателей, иначе у вас будут утечки памяти, несколько зарегистрированных слушателей ...
Вот пример, показывающий, выполняет ли регистрация.Это не делает отслеживание новых предметов / исчезающих предметов (сделать это как домашнее задание;)).
public class ViewPart1 extends ViewPart {
@Override
public void createPartControl(Composite parent) {
Shell shell = parent.getParent().getShell();
Menu menu = shell.getMenuBar();
addListeners(menu);
}
private void addListeners(Menu menu) {
menu.addListener(SWT.Show, showListener);
for (MenuItem item : menu.getItems()) {
Menu subMenu = item.getMenu();
if (subMenu != null) {
addListeners(subMenu);
}
}
}
Listener showListener = new Listener() {
public void handleEvent(Event event) {
Menu menu = (Menu) event.widget;
MenuItem item = menu.getParentItem();
if (item != null) {
System.out.println(item.getText());
}
}
};
@Override
public void setFocus() {
}
}