org.eclipse.ui.menus

特記事項: Eclipse 3.2 の org.eclipse.ui.menus 拡張ポイントの実装は部分的なものとなっています。現在は、メニュー定義、ツールバー定義、または拡張機能をサポートしていません (既存のコントリビューション拡張機能を、これらに使用してください)。しかし、これが「トリム」ウィジェットをワークベンチにコントリビュートできる唯一のメカニズムです。このセクションでは、これをこの目的で使用する方法について説明します。

「トリム」ウィジェットは、ワークベンチ・ウィンドウの外部境界上のロケーション (「トリム領域」と呼ばれる ) に位置するコントロールです。最も一般的な例は、汎用の「状況表示行」です。これは、ウィンドウの下部に沿ってある、ほとんどすべての GUI の場所です。拡張ポイント org.eclipse.ui.menus により、プラグインはビューをワークベンチへ追加することができます。トリムをコントリビュートするプラグインは、plugin.xml ファイルにトリムを登録して、トリムに関する構成情報 (その実装クラス、トリムが存在するトリム・グループ (トリム・バー) など) と、レイアウト情報 (トリムがレイアウト実行時にトリム領域内で使用可能な「追加」スペースを使用するかどうかなど) を指定する必要があります。 

コントリビュート・トリムのインターフェースは、 IWorkbenchWidget に定義されますが、プラグインでは、最初からインターフェースを実装する代わりに、 AbstractWorkbenchTrimWidget クラスを拡張するようにすることができます (実際、そのようにすることをお勧めします)。

README ツールの例の場合、ストリングと、トリムが現在どちらのサイドに格納されているかの標識のみを表示する、極めて単純なトリム・ウィジェットをコントリビュートしました。

このトリムの断片をコントリビュートするために使用される拡張ポイント定義について見てみます。

拡張の最初のセクション (「group」定義) は、単にグループの ID の定義と、「status」グループの先頭 (すなわち、下部トリム領域の先頭) にあるグループの「location」の定義を行っています。 2 番目のセクション (「widget」定義) では、ウィジェットの実装「class」の指定と、前に定義したグループ内に配置されているウィジェットの「location」の定義を行っています。

どちらの場合も、バーの「type」は、trim (これが現在サポートされている唯一のタイプです) として定義されていることに注意してください。

実際の readmetool の例をインストールしたら、 ReadmeTrimWidget の fill メソッドの実装をよく見てください。これは、ウィジェットを例の中にあるツールバーまたはメニューに追加する際に使用される他の fill メソッドとは、異なっています。トリムはある領域から別の領域へドラッグできるためです。また、トリムはトリムが配置されている「サイド」も受け渡しします。これにより、実装者は方向などを変更することで、ウィジェットの表示をそのロケーションに基づいて調整することができます。現在の実装では、単に現在のロケーションを反映するように表示テキストを変更します。また、「dispose」/「fill」のライフ・サイクルの取り扱いにも注意してください。ワークベンチの変更 (すなわち、パースペクティブの変更や、トリムの新しいサイドへのドラッグ) によって生成される dispose および fill に対して、繰り返し呼び出しが実行されます。

このサンプルのコードに反映されないことの 1 つは、ウィジェット・コントロールの computeSize メソッドに関するトリムの適正な実装に対する、トリム・レイアウト・マネージャーの信頼です。ウィジェットは、その「推奨」サイズを計算して戻すことができなければなりません。この値は、レイアウト管理実装の最初から最後まで使用され、例えば、特定のトリム領域に必要なスペース量の判別に使用されます。 computeSize の正しい実装方法に関する注意事項は、 SWT のドキュメンテーションを参照してください。