サンプル - Java エディター
概要
Java エディター・サンプルは、カスタム・テキスト・エディターで使用できる
標準の機能を説明します。
また、ファイル拡張子 (この場合は .jav) にエディターを登録する
方法と、そのエディターで使用するためにカスタム文書プロバイダーを定義する方法も
説明します。このサンプルは、デモンストレーション専用です。
Java 編集サポートは Eclipse Java Tooling によって提供されます。
エディターのサンプルで説明されているフィーチャー
-
構文の強調表示
-
コンテンツ・タイプに依存するコンテンツ・アシスト (JavaDoc および Java コード)
-
コンテンツ・アウトライナーとエディター間の通信、すなわち
コンテンツ・アウトライナーを選択するとエディターで強調表示範囲を指定できます。
-
2 つの異なるプレゼンテーション・モード
-
可視範囲標識を使用した強調表示のマーキング
-
強調表示範囲内のテキストのみを表示するようにエディターを制限する (すなわち、
Java クラスの単一メソッドのみを表示する)
-
マーカー処理
-
文書共用
説明されないフィーチャー
-
コンテンツ・フォーマット設定
-
コンテンツ・アウトライン・ページの動的調和
エディター・サンプルの実行
-
プロジェクトの作成
-
新規に作成されたプロジェクト内にファイル拡張子 ".jav" でファイルを作成します。
Java エディターのサンプルは、自動的に開かれます。
-
Java コードを挿入します。Java コードは動的に色が付けられます。エディター・サンプルは、
JavaDoc ガイドラインに従った複数行コメントと同様に、
複数行コメント、単一行コメント、Java 言語予約語、ストリングおよび文字定数、
通常の Java コードなどの言語エレメントを異なる色で表示します。
JavaDoc コメント内では、JavaDoc
キーワードとタグは違う色が付けられています。
-
Java コメントの外に "/*" を挿入して、新規の Java 複数行コメントを開きます。
挿入された "/*" と最初の "*/" または
テキストの末尾の間のすべてのテキストは、その色が赤に変更されます。「*」 をもう 1 つ付加してください。
これで、通常の複数行コメントに JavaDoc を含んでいると見なされるので、
赤の範囲は色が緑に変更されます。CTRL-SPACE を使用してコード・アシストを起動します。
コンテンツ・アシストの機能は、コードを作成する際にユーザーを援助します。
そのため、起動時に、コンテンツ・アシストは、
起動場所でのすべての起こりうる有効な終了をリストしているはずです。
JavaDoc 内では、エディター・サンプルは常にすべての
JavaDoc キーワードを提案します。
-
Java コメントの外側で、CTRL+SHIFT+SPACE を使用してコンテンツのヒントを呼び出します。
5 つの提案がリストされます。1 つを選択し、ENTER を押します。小さな移動する赤い
ウィンドウが、現在行の上に表示され、選択された提案を表示します。
コンテンツのヒントの目的はユーザーが意図を表すことを可能にすることです。
すなわち、メソッドの呼び出しを入力し、
前後関係を表現することによってユーザーをガイドします。
エディター・サンプルでは、提案は最初の呼び出しロケーションの周りの
有効な 5 つの文字であると見なされます。
コンテンツのヒントが表示されている間に、
CTRL+SPACE を使用してコンテンツ・アシストを呼び出します。この状態で
呼び出されたコンテンツ・アシストは、
コンテンツのヒント内でユーザーの表現した意図を表示する助けになるはずです。
通常の Java コード内では、
エディター・サンプルは常にすべての Java キーワードを提案します。
-
Java コードを保管します。保管するとコンテンツ・アウトライナーが更新されます。コンテンツ・アウトライナー
は、エディター内で、それぞれが等しく、Java コードの 10 分の 1 のサイズのセグメントを表す
10 項目を含んでいます。コンテンツ・アウトラインのこのスタイルは、
強調表示範囲のセマンティクスが任意に定義できることを示すために選択されています。
(次のステップを参照。)
-
コンテンツ・アウトライナー内のエントリーの 1 つを選択します。対応する行は、
エディターの左の垂直けい線に、青いバーでマークされます。
-
ここで Java エディターのセグメント化されたプレゼンテーション・モードに切り替えます。
そのためには、必ず、
デスクトップ・ツールバーで、吹き出しヘルプが
「セグメント化されたソース・ビューアーを使用可能/使用不可にする」
になっているそのボタンにフォーカスをあて、押してください。
この機能は単一メソッド・ビューなどの簡単なメソッド・ビューで使用してください。
-
コンテンツ・アウトライナーで別のエントリーを選択します。ここで、
エディターは選択されたセグメントのみを表示します。
コンテンツ・アウトライナーのエントリーを選択解除すると、
完全な Java コードが再表示されます。
-
コンテンツ・アウトライナーのエントリーを選択し、
可視テキストの部分を選択し、
その選択についてのタスクを追加します。タスク・リストにそのタスクが表示されます。
可視コードを変更します。タスク・リストで、直前に作成されたタスクを選択し、
「ファイルへジャンプ」ボタンを押します。
タスクは、直前に適用された変更を正確に反映し、可視領域で選択されます。
-
コンテンツ・アウトライナーで他のエントリーを選択します。タスク・リストから直前に追加された
タスクを明らかにします。エディターの強調表示範囲は、
明示されたタスクの範囲を囲むために自動的に大きくされます。
-
新規のワークスペースを開きます。新規のワークスペース内で、
オリジナルのワークスペース内と同じファイル用に Java エディターを開きます。
エディター・コンテンツを変更します。オリジナルのワークスペースに
スイッチバックします。エディターは、他のワークスペースで作成された変更を示します。
同じファイルを表示している 2 つのエディターは活発にリンクされています。
カスタム・テキスト・エディター作成用の規則
次のステップは、カスタム・テキスト・エディターを開発するために常に必要です。
-
文書プロバイダーを作成します。文書プロバイダー (IDocumentProvider を参照) は、
エディター入力エレメントのテキスト表記を含む文書 (IDocument を参照) を提供し、
管理します。
エレメントとテキスト表記間の変換をどのようにするか、
および複数エディター間で文書プロバイダーを共用すべきかどうかを
決定することは重要です。Java エディター・サンプルの
FileDocumentProvider クラスを参照してください。
-
文書分割機能を作成します。文書分割機能 (IDocumentPartitioner を参照)
は、文書をばらばらな領域に分割します。分割機能は、
それぞれの領域を、分割機能が事前定義したコンテンツ・タイプのセットの、
1 つのコンテンツ・タイプに割り当てます。
それぞれの文書を変更したら、文書の区分化が更新されなければなりません。
Java エディター・サンプルの
JavaPartitioner クラスを参照してください。
JavaPartitioner は複数行コメント・タイプ、JavaDoc コメント・タイプ、およびその他のタイプの領域を
判別します。文書プロバイダーによって作成されたそれぞれの
文書で、文書プロバイダーがオンに設定されていることを必ず確認してください。
-
どのソース・ビューアー・プラグインを提供すべきかを判別します。
サポートされるプラグインには、自動インデント・ストラテジー、
ダブルクリック・ストラテジー、コンテンツ・フォーマッター、およびテキスト表示リコンサイラーがあります。続く説明はテキスト表示リコンサイラーにのみ適用されます (IPresentationReconciler を参照)。
Java エディター・サンプルでは、テキスト表示リコンサイラーが
構文強調表示をインプリメントするために使用されます。
-
すべてのソース・ビューアー・プラグイン用に、
それぞれのサポートされるコンテンツ・タイプの適切な拡張子を作成します。
上記のとおり、文書分割機能はサポートされる
コンテンツ・タイプを定義します。IPresentationReconciler のデフォルトの
インプリメンテーションは拡張子として、IPresentationDamagers と IPresentationRepairers を
サポートします。
これらの拡張子は、特定のコンテンツ・タイプに固有であると見なされます。
そのため、カスタム・エディターの場合は、
ユーザーは最初にサポートされるコンテンツ・タイプのサブセットを選択しなければなりません。
選択されたサブセットのメンバーになるタイプの領域には、例えば強調表示された構文があります。これらのタイプのそれぞれに、
拡張子がインプリメントされなければなりません。
エディター・サンプルの JavaDamagerRepairer と JavaDocDamagerRepairer を
参照してください。
-
以前に作成されたプラグインと拡張子を使用して、ソース・ビューアー構成を作成します。
エディター・サンプルの JavaSourceViewerConfiguration を参照してください。
-
TextEditor または AbstractTextEditor クラスを、
開発された文書分割機能とソース・ビューアー構成で
カスタマイズします。アクションを追加または置き換え、
エディターのコンテキスト・メニューの構造を調整します。実際のバージョンでは、
このカスタマイズをサブクラスで行なわなければなりません。エディター・サンプルの JavaEditor を
参照してください。
-
エディター関連アクションをデスクトップ・ツールバーとメニューに
置くために、該当するアクション・バー・コントリビューターをセットアップします。
エディター・サンプルの JavaActionContributor を参照してください。
-
エディターのプラグインの XML 構成ファイルを拡張し、
特定のファイル拡張子のセットについて事前定義されたエディターの拡張ポイント
で、エディターを登録します。
XML ファイルにもアクション・バー・コントリビューターをセットアップします。
このサンプルの plugin.xml を参照してください。
サンプルのコード編成
サンプル・コードは 4 つのパッケージで編成されています。
-
org.eclipse.ui.examples.javaeditor は、エディター固有のクラスをすべて含んでいます。
-
org.eclipse.ui.examples.javaeditor.java は、
Java 固有の文書分割機能と同様に、
JavaDamagerRepairer などの Java 固有のソース・ビューアー・プラグインをすべて含んでいます。
-
org.eclipse.ui.examples.javaeditor.javadoc は、
JavaDocDamagerRepairer などの JavaDoc 固有のソース・ビューアー・プラグインをすべて含んでいます。
org.eclipse.ui.examples.javaeditor.util は、
その他の 3 つのパッケージで共用される便利なクラスです。