コンポーネント・フレームワーク

ビューおよびエディターに対してシンプルな API (パーツとも呼ばれる) を提供することにより、コンポーネント・フレームワークでは、既存のパーツをネストし、合成できます。 コンポーネント・フレームワーク API により、クライアントは任意の SWT コンポジット内部へのパーツのインスタンス化が可能になり、パーツがグローバル・オブジェクトと通信するのではなくそのサイトのローカル・インターフェースと通信するようにして頑強性および耐リーク性を改善し、クライアントがサイトで使用可能なインターフェースのセットを拡張できるようにし、さらに、ビューおよびエディターで使用可能な同じ API を使用して、そのクライアント専用の再使用可能なコンポーネントを作成するクライアントのフレームワークを提供します。 また、コンポーネント・フレームワークにより、アトミック・オペレーションがあるパーツの組み立ておよび分解が可能になり、さらに、既存のパーツが新規サイトのインターフェースを使用できます。

NameViewNew ビューの画像

このシンプルな例では、その名前、タイトル、ツールチップ、および画像を設定するビューを示し、コンポーネント・フレームワークを使用してエディターまたはビューを作成する方法を説明します。 例には、コンポーネント 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 クラスを登録することを選択した場合、それを変更することなくエディターとしても使用できます。