펼칠 수 있는 컴포지트 및 섹션 제어

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 스타일은 노드를 펼치고 접기 위한 트리 위지트(widget)에 사용되는 토글 제어를 작성하는 반면, TWISTIE는 삼각형 스타일의 토글을 작성합니다. EXPANDED를 사용하면 초기에 펼쳐진 상태에서 제어가 작성됩니다. 스타일 COMPACT를 사용할 경우, 제어는 제목줄에만 맞도록 접혀진 상태로 너비를 보고합니다(즉, 접힌 경우 가능한 한 가로로 최소화됩니다). 마지막으로, CLIENT_INDENT는 제목에 맞추도록 클라이언트를 들여쓰기합니다(그렇지 않으면 클라이언트는 토글 제어에 맞춰집니다).

펼칠 수 있는 컴포지트 자체가 토글 제어 및 제목을 렌더링해야 합니다. 펼치거나 접기 위한 제어는 클라이언트로 설정됩니다. 클라이언트는 펼칠 수 있는 컴포지트 바로 아래에 있는 하위 요소여야 합니다.

펼칠 수 있는 컴포지트는 펼침 상태가 변경될 때 ExpansionEvent 오브젝트를 가동시킵니다. 펼침 리스너를 제어에 추가하는 것은 상태 변경 시 양식을 리플로우하기 위해 필요합니다. 이는 펼칠 경우 펼칠 수 있는 컴포지트 크기는 변경되지만 그 변경은 다음에 상위 요소가 레이아웃될 때까지 적용되지 않기 때문입니다(따라서 사용자가 강제 실행해야 합니다).

Section은 추가적 기능을 추가하는 펼칠 수 있는 컴포지트의 서브클래스입니다. 일반적으로 양식을 여러 섹션으로 나누기 위해 사용됩니다. 각각의 섹션에는 고유한 제목과 선택적 설명이 있습니다. Section.TITLE_BAR 또는 Section.SHORT_TITLE_BAR 스타일을 사용할 경우, 제목 영역 주변을 데코레이션하면 그룹화가 더 향상됩니다.

ExpandableComposite와는 달리, Section은 펼침 상태 변경 시 자동으로 리플로우를 처리합니다. 펼침 상태 알림의 다른 흥미로운 사용으로는 섹션을 펼칠 때까지 지연되는 섹션 컨텐츠의 느린 작성이 있습니다.