我试图在 Eclipse e4 应用程序中获取视图部件的实例,但我找不到 PlatformUI 类。自 Eclipse 3 以来名称是否已更改,还是位于不同的包中?
2 回答
查看Eclipse e4 Parts时:
像371405这样的错误可能很有启发性:
org.eclipse.ui.presentations
这个 API 在 4.2 中不再工作,我们也从未打算让它工作。
它与 4.2 中的可插拔渲染故事不兼容。以前可以由演示扩展做出的决定现在由渲染器决定。需要弃用的受影响 API:
- 整个 API 包:
org.eclipse.ui.presentations
- 延伸点:
org.eclipse.ui.presentationFactories
org.eclipse.ui.IWorkbenchPreferenceConstants#PRESENTATION_FACTORY_ID org.eclipse.ui.IWorkbenchWindowConfigurer#getPresentationFactory org.eclipse.ui.IWorkbenchWindowConfigurer#setPresentationFactory
教程的其余部分解释了如何声明“部分”(编辑器或视图)
这曾经有效:
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("some view");
使用像 PlatformUI 这样的单例是一种不好的做法,也是在 e4 中引入Context的原因之一。请参阅有关 Context 的演示文稿。
Paul Webster(IBM Eclipse 平台团队成员)评论:
在 Eclipse4 中,您将使用按 ID
org.eclipse.e4.ui.workbench.modeling.EPartService.findPart(String)
查找。包含在其对象属性中的注入部分 。MPart
MPart
作为Workbench_Services页面的详细信息:
在 e4 中,将不存在工作台页面的概念。部件服务 API本质上是现有 3.x和接口
的合并。IPartService
WorkbenchPage
请注意,这并不理想,如错误 372488所示(在此线程之后):
一个
MPart
for anMPartDescriptor
是用 来创建的EPartService.createPart(descriptor_id)
,其中descriptor_id 是 的标识符MPartDescriptor
。
这部分可以再次找到EPartService.findPart(descriptor_id)
-如果只有一个。
MPart
问题是,一个人可能需要为一对一创建多个MPartDescriptor
。
编辑器可能是一个例子:一个人可能想要编辑同一种类型的不同实例。
MPart
为给定创建多个MPartDescriptor
是可能的,但是没有方便的方法来找到这些部分。
EPartService.findPart(descriptor_id)
将返回MPart
为特定创建的第一个MPartDescriptor
,即使有多个。
因此,对于给定的 MPartDescriptor,存在三个问题:
EPartService.findPart(id)
不说不止一个MPart
。- 没有方便的方法来获取
MParts
此描述符的所有内容。- 没有 API 方式来获取
MPart
给定描述符和“内容”或“参考”的特定信息。目前要走的路是使用
EPartService.getParts()
which 不幸地返回所有MPart
s,而不仅仅是那些对应于一个特定的 sMPartDescriptor
。
然后需要检查是否有一个MPart
针对MPartDescriptor
具有特定“内容”的特定内容。因此,缺少一些可以找到 具有特定“内容”或“参考”
MPart
的给定的东西。MPartDescriptor
只是有同样的问题。找到此线程并尝试使用后:
MPart mPart = epartService.findPart("MyPart");
MyPart myPart = (MyPart)mPart.getObject();
然后我得到了我的观点。