我有一个上下文菜单,其中有一个名为子菜单的子部分,其中包含一些项目,每个项目都是一个Action。
我想要做的是让用户能够选择多个项目而无需重新打开菜单和子菜单,直到他点击为止。
类似的问题已得到解决和解决,但我很困惑如何保持子菜单也打开。
此处a link!
public void test() {
final TableViewer tableViewer = new TableViewer(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
MenuManager menuMgr = new MenuManager("#PopupMenu");
menuMgr.setRemoveAllWhenShown(false);
final Menu menu = menuMgr.createContextMenu(tableViewer.getControl());
tableViewer.getControl().setMenu(menu);
menuMgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
manager.add(new Separator("Actions")); // Where manager is a IMenuManager which is passed as a parameter of menuAboutToShow of addMenuListener
final MenuManager submenu = new MenuManager("Show actions");
manager.add(submenu);
for (final TableColumn tc : tableViewer.getTable().getColumns()) {
Action action = new Action(tc.getToolTipText(), Action.AS_CHECK_BOX) {
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isChecked() {
return tc.getWidth() != 0;
}
@Override
public void run() {
if (mainMenuPoint == null)
return;
Display.getDefault().asyncExec(new Runnable() {
public void run() {
menu.setLocation(mainMenuPoint);
menu.setVisible(true);
Display.getDefault().asyncExec(new Runnable() {
public void run() {
submenu.setVisible(true);
}
});
}
});
}
};
submenu.add(action);
}
}
});
}
此代码保持打开第一个菜单,但不打开子菜单。
非常感谢任何帮助:)