我目前正在开展一个项目,我希望能够访问活动的Mwindow。在Eclipse 3.x中,通过活动工作台,这是可能的。但是我怎么能在eclipse 4或e4中实现同样的目标呢?任何关于此的提示将不胜感激。
答案 0 :(得分:0)
通常你可以注射它。
例如,在处理程序中,您可以执行以下操作:
@Execute
public void execute(MWindow window)
您还可以使用EModelService
查找具有特定ID的窗口。
我会说,通常我不太需要实际的MWindow
。
答案 1 :(得分:0)
对于eclipse4 ui,以下内容适用于我:
MApplication application = E4Workbench.getServiceContext().get(MApplication.class);
这一行调用ui模型的根。它包含每个窗口和他们的孩子。与...
MTrimmedWindow mWindow = (MTrimmedWindow) application.getChildren().get(0);
您将收到ui的主窗口。
希望它有所帮助。如果没有 - 请随意给我一个提示,而不是:)
答案 2 :(得分:0)
我正在使用这些代码来在E4中激活Mwindow
IEclipseContext serviceContext = E4Workbench.getServiceContext();
final IEclipseContext appContext = (IEclipseContext) serviceContext.getActiveChild();
EModelService modelService = appContext.get(EModelService.class);
MApplication application = serviceContext.get(MApplication.class);
MWindow mWindow = application.getChildren().get(0);
答案 3 :(得分:0)
我实际上有相同的问题,只是找到了一个简单的解决方案:
((MApplication) application).getSelectedElement();
MApplication单例的子代仅是MWindow元素,但是我不确定如何在此列表中找到活动的子代。在全局处理程序例程中检查了这一行,无论窗口是否通过任务栏,单击标题或特定部分进行了更改,它实际上总是返回最活动的窗口。
干得好,Eclipse团队!像往常一样,找到所有内置的小技巧绝非易事!