1 package eu
.etaxonomy
.taxeditor
.prototype2
.view
;
3 import org
.eclipse
.core
.databinding
.DataBindingContext
;
4 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
5 import org
.eclipse
.jface
.viewers
.ILabelProvider
;
6 import org
.eclipse
.jface
.viewers
.IViewerLabelProvider
;
7 import org
.eclipse
.jface
.viewers
.TreeViewer
;
8 import org
.eclipse
.jface
.viewers
.TreeViewerColumn
;
9 import org
.eclipse
.jface
.viewers
.ViewerLabel
;
10 import org
.eclipse
.swt
.SWT
;
11 import org
.eclipse
.swt
.layout
.GridData
;
12 import org
.eclipse
.swt
.widgets
.Composite
;
13 import org
.eclipse
.swt
.widgets
.TreeColumn
;
15 import eu
.etaxonomy
.taxeditor
.prototype2
.model
.PropertySheetNode
;
18 * Creates a tree viewer with two columns, one for field names the other
19 * for their values. Note: labels and editing support for values column,
20 * contentprovider and input for viewer must be set by the calling method
25 public class PropertySheetViewer
extends TreeViewer
{
27 private TreeViewerColumn propertyFieldColumn
;
28 private TreeViewerColumn propertyValueColumn
;
29 private DataBindingContext bindingContext
= null;
31 public PropertySheetViewer(Composite parent
) {
32 // Note: SWT.FULL_SELECTION hides lines connecting nodes
33 super(parent
, SWT
.BORDER
| SWT
.FULL_SELECTION
);
35 this.getTree().setLayoutData(new GridData(SWT
.LEFT
, SWT
.FILL
, false, true));
36 this.getTree().setLinesVisible(true);
37 this.getTree().setHeaderVisible(false);
38 this.getTree().getVerticalBar().setEnabled(true);
40 // create a column for property fields
41 propertyFieldColumn
= new TreeViewerColumn(this, SWT
.NONE
);
42 propertyFieldColumn
.getColumn().setWidth(100);
43 propertyFieldColumn
.getColumn().setMoveable(true);
44 propertyFieldColumn
.setLabelProvider(new ColumnLabelProvider() {
45 public String
getText(Object element
) {
46 return ((PropertySheetNode
) element
).getPropertyField();
50 // create a column for property values
51 propertyValueColumn
= new TreeViewerColumn(this, SWT
.NONE
);
52 propertyValueColumn
.getColumn().setWidth(100);
53 propertyValueColumn
.getColumn().setMoveable(true);
55 this.getTree().setSize(150, 300);
56 // propertyFieldColumn.getColumn().pack();
57 // propertyValueColumn.getColumn().pack();
58 // this.getTree().redraw();
61 public TreeViewerColumn
getPropertyFieldColumn() {
62 return propertyFieldColumn
;
65 public TreeViewerColumn
getPropertyValueColumn() {
66 return propertyValueColumn
;
69 public DataBindingContext
getBindingContext() {
70 return bindingContext
;
73 public void setBindingContext(DataBindingContext bindingContext
) {
74 this.bindingContext
= bindingContext
;