2017-10-16 79 views
0

Eclipse 4没有任何编辑器的概念,只有部分。那么我们如何收到我们的“编辑器”部分的文件呢?我正在谈论的是IEditorPart.init方法的e4等价物,以及它收到的IEditorInputEclipse插件开发 - 带输入的e4部分:实例化输入

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

所以问题是:这是创建e4“编辑器”的正确方法吗?有可能实现?

回答

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"); 

    .... 
} 
+0

谢谢!我们如何从部件内部访问瞬态数据?我究竟能在哪里提出你的代码?我想打开部分作为回应打开与相关的文件扩展名的文件。 – TAsk

+0

添加了用于访问零件中的瞬态数据的代码。 –

+0

我明白了,谢谢。感觉怪异地注入一部分到一个部分! 但是,对于我的问题的第二部分:因为在e4中没有使用编辑器扩展点,我们如何将该部分与文件扩展名相关联,并确保它被打开? – TAsk