拡張可能コンポジットおよびセクション・コントロール

ExpandableComposite は、Group コントロールと同様に振る舞い、トグルが制御するページの部分を縮小する機能があります。

	ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), 
					ExpandableComposite.TREE_NODE|
					ExpandableComposite.CLIENT_INDENT);
	ec.setText("Expandable Composite title");
	String ctext = "We will now create a somewhat long text so that "+
	"we can use it as content for the expandable composite. "+
	"Expandable composite is used to hide or show the text using the "+
	"toggle control";
	Label client = toolkit.createLabel(ec, ctext, SWT.WRAP);
	ec.setClient(client);
	ec.addExpansionListener(new ExpansionAdapter() {
		public void expansionStateChanged(ExpansionEvent e) {
			form.reflow(true);
		}
	});

ExpandableComposite コントロールは、外観および振る舞いに影響する多数のスタイルを受け入れます。 スタイル TREE_NODE は、 ノードを展開および縮小させるツリー・ウィジェットで使用するトグル・コントロールを作成し、TWISTIE は三角形のトグルを作成します。EXPANDED を使用すると、最初は展開された状態のコントロールを作成します。 スタイル COMPACT を使用すると、コントロールは、タイトル行のみに適合する縮小状態の幅を報告します (すなわち、縮小されている場合は、水平方向に可能な限り小さくなります)。 最後に、CLIENT_INDENT は、クライアントをインデントしてタイトルに位置合わせします (このスタイルを使用しない場合は、クライアントはトグル・コントロールに位置合わせされます)。

拡張可能コンポジット自体は、トグル・コントロールおよびタイトルのレンダリングを行います。 展開または縮小のコントロールは、クライアントとして設定されています。 クライアントが拡張可能なコンポジットの直接の子であるという要件に注意してください。

拡張可能なコンポジットは、拡張状態変更が変わると ExpansionEvent オブジェクトを発行します。 状態変更時に書式をリフローするには、拡張リスナーをコントロールに追加することが必要です。 これは、拡張によって拡張可能なコンポジット・サイズが変更され、その変更が、次に親がレイアウトされるまで有効にならないためです (したがって、強制的に親をレイアウトする必要があります)。

Section は、追加機能を追加する拡張可能なコンポジットのサブクラスです。 通常このサブクラスは、1 つの書式を多数のセクションに区分するために使用します。 それぞれのセクションには、独自のタイトルおよびオプション記述がつきます。Section.TITLE_BAR または Section.SHORT_TITLE_BAR スタイルが使用されている場合、 タイトル領域周辺をさらに装飾することでグループ化が強調されます。

ExpandableComposite とは異なり、Section は自動的に拡張状態変更時にリフローを処理します。 拡張状態の通知で役に立つその他の使用方法は、セクションが拡張されるまで遅延されるセクション・コンテンツの遅延生成です。