TableTree

Eclipseのビュー作ってて、展開できる表欲しいなと思って、
org.eclipse.jface.viewers.TableTreeViewer と org.eclipse.swt.custom.TableTree
使おうと思ったら非推奨だった。

代わりに、
org.eclipse.jface.viewers.TreeViewer
org.eclipse.swt.widgets.Tree
org.eclipse.swt.widgets.TreeColumn
を使う。

Tree tree = toolkit.createTree(client,
    SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
tree.setHeaderVisible(true);
TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
column1.setText("A");
column1.setWidth(300);
TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
column2.setText("->");
column2.setWidth(30);
TreeColumn column3 = new TreeColumn(tree, SWT.LEFT);
column3.setText("B");
column3.setWidth(300);
viewer = new TreeViewer(tree);
viewer.setContentProvider(new SampleContentProvider());
viewer.setLabelProvider(new SampleLabelProvider());

こんな感じで。


toolkit は org.eclipse.ui.forms.widgets.FormToolkit のオブジェクト。
SampleContentProvider は org.eclipse.jface.viewers.ITreeContentProvider の実装。
SampleLabelProvider は org.eclipse.jface.viewers.ITableLabelProvider の実装。(org.eclipse.jface.viewers.LabelProvider継承)


最初、表の頭の部分が表示されなくて、2時間くらい悩んだが、
Tree に setHeaderVisible(true) 指定するだけだった。


Eclipse Form いいな。Master/Datail もいい感じ。
Providerに要素がObjectで渡ってくるのは、・・・まぁしゃあないか。