Eclipse rcp RCP中的动态收音机菜单项
我试图在RCP应用程序中动态填充一个菜单,其中包含无线电菜单项。目的是这些菜单项对应于应用程序的不同模式 我通过动态贡献创建菜单:Eclipse rcp RCP中的动态收音机菜单项,eclipse-rcp,e4,Eclipse Rcp,E4,我试图在RCP应用程序中动态填充一个菜单,其中包含无线电菜单项。目的是这些菜单项对应于应用程序的不同模式 我通过动态贡献创建菜单: @AboutToShow public void aboutToShow( final List<MMenuElement> items, final EModelService modelService) { // Code to get list of modes for (Mode m : mod
@AboutToShow
public void aboutToShow(
final List<MMenuElement> items,
final EModelService modelService) {
// Code to get list of modes
for (Mode m : modeList) {
final MDirectMenuItem menuItem;
menuItem = modelService.createModelElement(MDirectMenuItem.class);
menuItem.setType(ItemType.RADIO);
menuItem.setLabel(m.getName());
/* Set the "handler" instance */
menuItem.setObject(new ModeMenuHandler(m));
items.add(menuItem);
}
当我单击各个菜单项时,正确地调用了相应的处理程序。但是,菜单项的行为与收音机项不同
如何使动态创建的单选菜单项成为单个单选菜单项组的一部分?这里的问题是,每次显示菜单时,旧菜单项都会被销毁,并再次调用@AboutToShow方法来重新创建菜单。因此,任何旧的无线电选择都将丢失 因此,您需要在每次更改当前选择时保存它,并在再次创建菜单时调用相应菜单项上的setSelectedtrue 或者,如果菜单中的项目数没有改变,您的模型师是固定大小的,您可以使用org.eclipse.e4.workbench.model扩展点的processor元素创建一次菜单。谢谢!在@AboutToShow中做一个setSelectedtrue就成功了。