将菜单添加到 In E4 MWindow

Adding menu to In E4 MWindow

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

`

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);`

在您创建并设置主菜单(以及您希望 window 中包含的任何其他内容)之前,不要将 window 添加到子应用程序中。

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

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

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

window.setToBeRendered(true);

显示window。