エディターは、オブジェクト (しばしばファイル) の編集が可能なワークベンチの一部分です。 エディターは、プラットフォーム・ワークベンチ UI へ堅固に統合されている場合を除き、 ファイル・システム編集ツールと同じ方法で稼働します。エディターは、常に入力オブジェクト ( IEditorInput) と関連しています。 入力オブジェクトは、編集される文書またはファイルとして考えることができます。 エディターでの変更内容は、ユーザーがそれを保存するまでは有効になりません。
ワークベンチ・ページ内の特定エディター入力に対して、1 つのエディターのみ開くことができます。 たとえば、ユーザーがワークベンチ内の readme.txt を編集している場合、 同じパースペクティブでそれを再び開くと、同じエディターがアクティブになります (異なるワークベンチ・ウィンドウまたはパースペクティブから、 同じファイルについて、別のエディターを開くことができます)。 ただし、ビューとは異なり、同じエディター・タイプ (テキスト・エディターなど) が、 1 つのワークベンチ・ページ内で異なる入力のために何度も開く可能性があります。
ワークベンチへエディターを追加するために、 ワークベンチ拡張ポイント org.eclipse.ui.editors が、 プラグインによって使用されます。エディターを組み込むプラグインは、 エディターの構成情報と共に、plugin.xml ファイル内にエディター拡張を登録しなければなりません。 インプリメンテーション class、およびワークベンチ・メニューとラベルで使用される name および icon などのいくつかのエディター情報は、ビュー情報と類似しています。 さらに、エディター拡張により、ファイル拡張子またはエディターが理解するファイル・タイプのファイル名パターンが指定されます。 また、エディターは contributorClass を定義することができます。 これは、エディターがアクティブのときにワークベンチ・メニューおよびツールバーへアクションを追加するクラスです。
エディター用のインターフェースは、 IEditorPart で定義されますが、プラグインは、 IEditorPart を最初からインプリメントするのではなく、 EditorPart クラスを 拡張するよう選択することができます。
注: ファイルを編集するため、 またはエディターとして既存の java コードを呼び出すために使用されるランチャー・クラスを提供するために、 外部プログラムを起動するようエディター拡張を構成することもできます。ここでは、 ワークベンチと実際に堅固に統合され、 IEditorPart を使用して インプリメントされたこれらのエディターに焦点を置いて説明します。
README ツールでは、独自のコンテンツ・アウトライナー・ページをワークベンチ・アウトライン・ビューへ組み込むことを 主な目的として、カスタム・エディターを提供します。
エディター拡張の構成は、以下のように定義されます。
<extension
point = "org.eclipse.ui.editors">
<editor
id = "org.eclipse.ui.examples.readmetool.ReadmeEditor"
name="Readme File Editor"
icon="icons/basic/obj16/editor.gif"
class="org.eclipse.ui.examples.readmetool.ReadmeEditor"
extensions="readme"
contributorClass="org.eclipse.ui.examples.readmetool.ReadmeEditorActionBarContributor">
</editor>
</extension>
ここには、id、name、icon、および class の なじみのある構成マークアップが見られます。また、contributorClass という新しいものもあります。
コントリビューター・クラスは、アクションに関連したエディターを ワークベンチ・メニューおよびツールバーへ追加します。これは、 IEditorActionBarContributor インターフェースをインプリメントしなければなりません。 特定のワークベンチ・ページが同じタイプの複数のエディターを持つことができるため、 コントリビューターは、エディター自体から分離されています。 エディター・タイプの各インスタンスにアクションおよびイメージを作成させるのではなく、 単一のコントリビューターが、特定タイプのすべてのエディターによって共用されます。
ReadmeEditorActionBarContributor では、 "Editor Action1"、"Editor Action2"、 および "Editor Action3" の 3 つのアクションを組み込みます。 これらは、コンストラクターでセットアップされます。
public ReadmeEditorActionBarContributor() {
...
action1 = new EditorAction("&Editor Action1");
action1.setToolTipText("Readme Editor Action1");
action1.setImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE);
...
action2 = new EditorAction("&Editor Action2");
action2.setToolTipText("Readme Editor Action2");
action2.setImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE);
...
action3 = new EditorAction("&Editor Action3");
action3.setToolTipText("Readme Editor Action3");
action3.setImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE);
...
}
アクションの名前およびアイコンは、plugin.xml 内ではなく、 コード内にセットアップされます。この情報は、ビュー・アクションのマークアップで説明した viewActions 情報と 類似していることに注意してください。 同じエディターの異なるインスタンスの間でアクション共用を管理しなければならないため、 アクションはコード内でセットアップされます。
コンストラクター内で作成されるため、アクションはエディターの特定のインスタンスから独立しています。 エディターがアクティブになり、アクションがワークベンチ・メニューおよびツールバーにインストールされる必要がある場合、 setActiveEditor メッセージがコントリビューターへ送られます。 コントリビューターは、エディター・アクションを特定のエディターへ接続します。
public void setActiveEditor(IEditorPart editor) {
...
action1.setActiveEditor(editor);
action2.setActiveEditor(editor);
action3.setActiveEditor(editor);
...
}
このように、README エディターがアクティブなとき、アクションがワークベンチ・メニューおよびツールバーに表示されます。
これらのメニューおよびツールバー項目は、エディターがアクティブな場合にのみ表示されます。 メニューおよびツールバーの項目のロケーションは、指定することができます。 詳しくは、メニューおよびツールバー・パス を参照してください。
README エディターの ReadmeEditor 自体はあまり複雑ではありません。これは、README ファイルが 編集中に、カスタマイズ済みコンテンツ・アウトライナー・ページをアウトライン・ビューへ組み込むことができるように、 TextEditor クラスを拡張します。 これによって、テキスト・エディター内の振る舞いが変わることはありません。
エディターには、多くの場合、エディターのコンテンツの構造ビューを提供し、 ユーザーがエディターのコンテンツをナビゲートするのを支援する、対応するコンテンツ・アウトライナーがあります。 詳しくは、コンテンツ・アウトライナー を参照してください。
テキスト・エディターおよび JFace テキスト のテキスト・エディターの インプリメンテーションについて説明します。