ビューおよびエディターに対してシンプルな API (パーツとも呼ばれる) を提供することにより、コンポーネント・フレームワークでは、既存のパーツをネストし、合成できます。 コンポーネント・フレームワーク API により、クライアントは任意の SWT コンポジット内部へのパーツのインスタンス化が可能になり、パーツがグローバル・オブジェクトと通信するのではなくそのサイトのローカル・インターフェースと通信するようにして頑強性および耐リーク性を改善し、クライアントがサイトで使用可能なインターフェースのセットを拡張できるようにし、さらに、ビューおよびエディターで使用可能な同じ API を使用して、そのクライアント専用の再使用可能なコンポーネントを作成するクライアントのフレームワークを提供します。 また、コンポーネント・フレームワークにより、アトミック・オペレーションがあるパーツの組み立ておよび分解が可能になり、さらに、既存のパーツが新規サイトのインターフェースを使用できます。
このシンプルな例では、その名前、タイトル、ツールチップ、および画像を設定するビューを示し、コンポーネント・フレームワークを使用してエディターまたはビューを作成する方法を説明します。
例には、コンポーネント API を使用したソースが示されています。
新規パーツは、そのコンストラクター内で引数を取得し、特定のインターフェースを実装する必要がなく、特定のベース・クラスから継承する必要もありません。
/**
* Sample view that sets its name, tooltip, image, and content description.
The view
* uses a custom image supplied by its plug-in.
*
* @since 3.1
*/
public class NameViewNew {
/**
* Component constructor. Do not invoke directly.
*/
public NameViewNew(Composite parent, INameable name, IPluginImages
images) {
name.setName("Name View (New)");
name.setContentDescription("content description");
name.setTooltip("This is a tooltip");
name.setImage(images.getImage("icons/sample.gif"));
// Create some bogus view contents
Label content = new Label(parent, SWT.NONE);
content.setText("View contents go here");
}
}
ビューのコンストラクターに付与された引数は、すでにそのコンテキストを認知していることに注意してください。
例えば、IPluginImages インターフェースには、ビューが属するプラグインを伝える必要がありません。
同様に、インターフェースは、リークに対して耐性があります。
この例では、ビューのイメージが、INameable の実装により自動的に割り振られ、さらに割り振り解除されます。
そのため、ビュー自身が dispose メソッドを実装する必要はありません。
興味深いことに、ビューおよびエディターの API はまったく同一です。
つまり、org.eclipse.ui.editors 拡張ポイントに NameViewNew クラスを登録することを選択した場合、それを変更することなくエディターとしても使用できます。