Eclipse 4没有任何编辑器的概念,只有部分。那么我们如何收到我们"编辑器的文件"部分?我正在讨论e4等效的IEditorPart.init
方法,以及它收到的IEditorInput
。
我和Tom Schindl偶然发现this example 。他能够在部件构造函数中注入输入。对于可用于注入的输入对象,必须以某种方式在IEclipseContext
中实例化它。 This article是指Schindl的示例,并引导我考虑以下方法:拦截"打开文件"从Eclipse平台开始的命令(如果它们存在),为"编辑器创建一个输入实例。部分并将其放在上下文中(IEcpliseContext.set(class, value)
),然后使用EPartService
打开该部分。
所以问题是:这是创建e4"编辑器的正确方法吗?是否可以实施?
答案 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");
....
}