如何访问兼容层 IViewPart (e4) MPart

How to access an compatibility layer IViewPart’s (e4) MPart

我正在将现有的 Eclipse 插件移植到 e4。从非移植 IViewPart 我想访问视图对应的 e4 MPart 但无法使以下内容可靠地工作:

EPartService partService = (EPartService) PlatformUI.getWorkbench().getService(EPartService.class);
MPart part = partService.findPart(getSite().getId());

置于createPartControlComposite) 我有时会收到 IllegalStateException(“应用程序没有活动的 window”)。

避免使用来自 workbench 的部分服务,因为这仅在存在活动 window 时有效。

改为使用当前 window 的零件服务(可能未激活)。您可以使用以下方法在 IViewPart 中获取此内容:

EPartService partService = getSite().getService(EPartService.class);

MPart part = partService.findPart(getSite().getId());