TreeViewerその3

さてツリーに対するアクションはどのように処理すればよいでしょうか。ツリーに関するイベントとしては、

といったものがあります。それぞれ、 によってリスナの登録を行い、イベントの処理を行うことができます。

SelectionChangeEventの場合、getSelection()メソッドでISelectionオブジェクトが取得できますが、実際にはIStructuredSelectionを実装していますので、これにキャストします。IStructuredSelectionには選択されたノードに対応するノードの実体(ここでの例の場合はDOMのNodeオブジェクト)のコレクションが含まれていますので、

	ISelection selection = event.getSelection();
	if (selection instanceof IStructuredSelection) {
		IStructuredSelection structuredSelection =
			(IStructuredSelection) selection;
		Iterator iter = structuredSelection.iterator();
		while (iter.hasNext()) {
			Object object = iter.next();
			if (object instanceof Node) {
				Node node = (Node) object;
				// nodeは選択されたノードの一つになる。
			}
		}
	}
によって選択されたノードに対して処理を行うことができます。DoubleClickEventも同様(ただしこのイベントは特定の1ノードが選択された状態で発生しますが)です。

TreeExpansionEventはgetElement()メソッドで開いた(閉じた)ノードに対応するコンテンツのオブジェクト(ここではDOMのNode)を取得することができます。


SWT, JFace  ソフトウェア研究室  PoisonSoft