我正在将现有的Eclipse插件移植到e4。在非移植的IViewPart
中,我想访问该视图的相应e4 MPart
但无法让以下内容可靠地运行:
EPartService partService = (EPartService) PlatformUI.getWorkbench().getService(EPartService.class);
MPart part = partService.findPart(getSite().getId());
放在createPartControlComposite)
我有时会得到IllegalStateException
(“应用程序没有活动窗口”)。
答案 0 :(得分:1)
避免使用工作台中的零件服务,因为这只有在有活动窗口时才有效。
而是使用当前窗口的部件服务(可能不是活动的)。您可以使用以下方法在IViewPart中获取:
EPartService partService = getSite().getService(EPartService.class);
MPart part = partService.findPart(getSite().getId());