将菜单添加到In E4 MWindow

时间:2016-01-27 10:47:12

标签: eclipse e4

在我们的Eclipse E4(纯e4)应用程序中,我必须打开一个新窗口并在新窗口中显示一些视图(这与主窗口完全不同)。在新窗口中,我尝试以编程方式添加菜单(文件 - >导入)。我写了下面的代码,但新窗口没有显示菜单。我缺少什么?

`

MTrimmedWindow window = MBasicFactory.INSTANCE.createTrimmedWindow();
....

MMenu menuBar = MenuFactoryImpl.eINSTANCE.createMenu();
menuBar.setLabel("Test");
window.setMainMenu(menuBar);

MMenu fileMenu = MenuFactoryImpl.eINSTANCE.createMenu();
fileMenu.setElementId("file");
fileMenu.setLabel("File");
menuBar.getChildren().add(fileMenu);

MMenuItem item1 = MenuFactoryImpl.eINSTANCE.createDirectMenuItem();
item1.setElementId("item1");
item1.setLabel("item1");
fileMenu.getChildren().add(item1);`

1 个答案:

答案 0 :(得分:1)

在创建和设置主菜单(以及您希望在窗口中显示的任何其他内容)之前,请不要将窗口添加到应用程序子项。

将窗口添加到应用程序子列表时,会立即呈现它。因此,如果您尚未设置主菜单,则不会显示。

如果您的窗口设计已修复,您可以通过在Application.e4xmi中设计窗口来避免所有这些代码。只需关闭'to be rendered'标志,使其最初不显示,然后执行:

MTrimmedWindow window = (MTrimmedWindow)modelService.find("window id", app);

window.setToBeRendered(true);

显示窗口。