2017-10-16 9 views
0

Eclipse 4にはエディタの概念はなく、部分のみがあります。だから、私たちは "編集者"のためのファイルをどのように受け取るのですか?私はIEditorPart.initメソッドのe4相当について話しており、IEditorInputが受け取っています。Eclipseプラグインの開発 - 入力付きe4部分:入力のインスタンス化

Tom Schindlがthis exampleを見つけました。彼はパーツコンストラクタに入力を注入することができます。入力オブジェクトが注入可能であるためには、何らかの形でIEclipseContextでインスタンス化する必要があります。 This articleはSchindlの例であり、Eclipseプラットフォームの「ファイルを開く」コマンド(存在する場合)をインターセプトし、「エディタ」パートの入力インスタンスを作成してコンテキストに入れます(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

ありがとう、ありがとう。パーツをパーツに注入するのが気になる! 私の質問の2番目の部分について:e4ではエディタ拡張ポイントが使用されていないので、どのようにファイル拡張子にパーツを関連付けることができますか? – TAsk

関連する問題