在我们的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);`
答案 0 :(得分:1)
在创建和设置主菜单(以及您希望在窗口中显示的任何其他内容)之前,请不要将窗口添加到应用程序子项。
将窗口添加到应用程序子列表时,会立即呈现它。因此,如果您尚未设置主菜单,则不会显示。
如果您的窗口设计已修复,您可以通过在Application.e4xmi中设计窗口来避免所有这些代码。只需关闭'to be rendered'标志,使其最初不显示,然后执行:
MTrimmedWindow window = (MTrimmedWindow)modelService.find("window id", app);
window.setToBeRendered(true);
显示窗口。