サンプル - Java エディター
概要
Java エディター・サンプルは、カスタム・テキスト・エディターで使用できる
標準の機能を説明します。
また、ファイル拡張子 (この場合は .jav) にエディターを登録する
方法と、そのエディターで使用するためにカスタム・ドキュメント・プロバイダーを定義する方法も
説明します。このサンプルは、デモンストレーション専用です。
Java 編集サポートは Eclipse Java Tooling によって提供されます。
このサンプルのコードは、org.eclipse.ui.examples.javaeditor
プラグイン内にあります。
コードを探査するには、ご自分のワークスペースにプラグインをインポートすることをお勧めします。
エディターのサンプルで説明されているフィーチャー
-
構文の強調表示
-
コンテンツ・タイプに依存するコンテンツ・アシスト (Javadoc および Java コード)
-
コンテンツ・アウトライナーとエディター間の通信、すなわち
コンテンツ・アウトライナーを選択するとエディターで強調表示範囲を指定できます。
-
2 つの異なるプレゼンテーション・モード
-
可視範囲標識を使用した強調表示のマーキング
-
強調表示範囲内のテキストのみを表示するようにエディターを制限する (すなわち、
Java クラスの単一メソッドのみを表示する)
-
マーカー処理
-
文書共用
説明されていないフィーチャー
-
コンテンツ・フォーマット設定
-
コンテンツ・アウトライン・ページの動的調和
Java エディター・サンプルの実行
-
プロジェクトの作成
-
新規に作成されたプロジェクト内にファイル拡張子 ".jav" でファイルを作成します。
Java エディターのサンプルは、自動的に開かれます。
-
Java コードを挿入します。Java コードは動的に色が付けられます。エディター・サンプルは、
Javadooc ガイドラインに従った複数行コメントと同様に、
複数行コメント、単一行コメント、Java 言語予約語、ストリングおよび文字定数、
通常の Java コードなどの言語エレメントを異なる色で表示します。
そのような Javadoc コメント内では、Javadoc キーワード (緑) と HTML タグ (グレー) にはそれぞれ異なる色が付けられています。
-
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 を参照してください。
サンプルのコード編成
Java エディター・サンプル・コードは、以下の 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 つのパッケージで共用される便利なクラスです。