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
.TreeViewer
;
6 import org
.eclipse
.jface
.viewers
.TreeViewerColumn
;
7 import org
.eclipse
.swt
.SWT
;
8 import org
.eclipse
.swt
.layout
.GridData
;
9 import org
.eclipse
.swt
.widgets
.Composite
;
10 import org
.eclipse
.swt
.widgets
.Event
;
11 import org
.eclipse
.swt
.widgets
.Listener
;
13 import eu
.etaxonomy
.taxeditor
.prototype2
.model
.PropertySheetNode
;
16 * Creates a tree viewer with two columns, one for field names the other
17 * for their values. Note: labels and editing support for values column,
18 * content provider and input for viewer must be set by the calling method
23 public class PropertySheetViewer
extends TreeViewer
{
25 final private TreeViewerColumn propertyFieldColumn
;
26 private TreeViewerColumn propertyValueColumn
;
27 private DataBindingContext bindingContext
= new DataBindingContext();
29 public PropertySheetViewer(Composite parent
) {
30 // Note: SWT.FULL_SELECTION hides lines connecting nodes
31 super(parent
, SWT
.BORDER
| SWT
.FULL_SELECTION
);
33 this.getTree().setLayoutData(new GridData(SWT
.RIGHT
, SWT
.FILL
, false, true));
34 // this.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
36 // create a column for property fields
37 propertyFieldColumn
= new TreeViewerColumn(this, SWT
.NONE
);
38 propertyFieldColumn
.getColumn().setMoveable(true);
39 propertyFieldColumn
.setLabelProvider(new ColumnLabelProvider() {
40 public String
getText(Object element
) {
41 return ((PropertySheetNode
) element
).getPropertyField();
45 // create a column for property values
46 propertyValueColumn
= new TreeViewerColumn(this, SWT
.NONE
);
47 propertyValueColumn
.getColumn().setMoveable(true);
49 this.getTree().setLinesVisible(true);
50 this.getTree().setHeaderVisible(true);
51 // this.getTree().getVerticalBar().setEnabled(true);
52 this.getTree().getVerticalBar().setEnabled(false);
54 this.getTree().setSize(200, 300);
55 propertyValueColumn
.getColumn().setWidth(100);
56 propertyFieldColumn
.getColumn().setWidth(100);
59 // TableColumnLayout layout = new TableColumnLayout();
60 // this.getTree().setLayout(layout);
62 // layout.setColumnData( propertyFieldColumn.getColumn(), new ColumnWeightData( 30 ) );
63 // layout.setColumnData( propertyValueColumn.getColumn(), new ColumnWeightData( 60 ) );
64 // } catch (RuntimeException e) {
65 // // TODO Auto-generated catch block
66 // e.printStackTrace();
69 propertyFieldColumn
.getColumn().addListener(SWT
.Selection
, new Listener() {
70 public void handleEvent(Event event
) {
71 propertyFieldColumn
.getColumn().pack();
74 propertyValueColumn
.getColumn().addListener(SWT
.Selection
, new Listener() {
75 public void handleEvent(Event event
) {
76 propertyValueColumn
.getColumn().pack();
79 this.getTree().addListener(SWT
.MeasureItem
, new Listener() {
80 public void handleEvent(Event event
) {
87 public TreeViewerColumn
getPropertyFieldColumn() {
88 return propertyFieldColumn
;
91 public TreeViewerColumn
getPropertyValueColumn() {
92 return propertyValueColumn
;
95 public DataBindingContext
getBindingContext() {
96 return bindingContext
;