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で渡ってくるのは、・・・まぁしゃあないか。