Eclipse插件开发 - 带输入的e4部分:实例化输入

时间:2017-10-16 15:35:42

标签: eclipse eclipse-plugin e4

Eclipse 4没有任何编辑器的概念,只有部分。那么我们如何收到我们"编辑器的文件"部分?我正在讨论e4等效的IEditorPart.init方法,以及它收到的IEditorInput

我和Tom Schindl偶然发现this example 。他能够在部件构造函数中注入输入。对于可用于注入的输入对象,必须以某种方式在IEclipseContext中实例化它。 This article是指Schindl的示例,并引导我考虑以下方法:拦截"打开文件"从Eclipse平台开始的命令(如果它们存在),为"编辑器创建一个输入实例。部分并将其放在上下文中(IEcpliseContext.set(class, value)),然后使用EPartService打开该部分。

所以问题是:这是创建e4"编辑器的正确方法吗?是否可以实施?

1 个答案:

答案 0 :(得分:0)

将输入数据放在部件的瞬态数据中更容易,因为在正确的位置注入数据很棘手。

对于行为类似于编辑器的东西,您可能会使用部件描述符,以便您可以从单个描述符创建多个部分。

您可以使用以下内容创建零件:

@Inject
EPartService partService;

// Create from part descriptor

MPart part = partService.createPart("part descriptor id");

// Set input in transient data

part.getTransientData().put("inputKey", inputData);

// Add to part stack 

MPartStack partStack = ... stack you want to use

partStack.getChildren().add(part);

// Show

partService.showPart(part, PartState.ACTIVATE);

在零件代码中,您可以通过注入MPart来获取瞬态数据。例如在构造函数中:

@Inject
public MyClass(MPart myPart)
{
  Object input = part.getTransientData().get("inputKey");

  ....
}