p2izing the editor
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor.prototype2 / src / eu / etaxonomy / taxeditor / prototype2 / view / PropertySheetViewer.java
1 package eu.etaxonomy.taxeditor.prototype2.view;
2
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;
12
13 import eu.etaxonomy.taxeditor.prototype2.model.PropertySheetNode;
14
15 /**
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
19 *
20 * @author p.ciardelli
21 *
22 */
23 public class PropertySheetViewer extends TreeViewer {
24
25 final private TreeViewerColumn propertyFieldColumn;
26 private TreeViewerColumn propertyValueColumn;
27 private DataBindingContext bindingContext = new DataBindingContext();
28
29 public PropertySheetViewer(Composite parent) {
30 // Note: SWT.FULL_SELECTION hides lines connecting nodes
31 super(parent, SWT.BORDER | SWT.FULL_SELECTION);
32
33 this.getTree().setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true));
34 // this.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
35
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();
42 }
43 });
44
45 // create a column for property values
46 propertyValueColumn = new TreeViewerColumn(this, SWT.NONE);
47 propertyValueColumn.getColumn().setMoveable(true);
48
49 this.getTree().setLinesVisible(true);
50 this.getTree().setHeaderVisible(true);
51 // this.getTree().getVerticalBar().setEnabled(true);
52 this.getTree().getVerticalBar().setEnabled(false);
53
54 this.getTree().setSize(200, 300);
55 propertyValueColumn.getColumn().setWidth(100);
56 propertyFieldColumn.getColumn().setWidth(100);
57
58 // try {
59 // TableColumnLayout layout = new TableColumnLayout();
60 // this.getTree().setLayout(layout);
61 //
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();
67 // }
68
69 propertyFieldColumn.getColumn().addListener(SWT.Selection, new Listener() {
70 public void handleEvent(Event event) {
71 propertyFieldColumn.getColumn().pack();
72 }
73 });
74 propertyValueColumn.getColumn().addListener(SWT.Selection, new Listener() {
75 public void handleEvent(Event event) {
76 propertyValueColumn.getColumn().pack();
77 }
78 });
79 this.getTree().addListener(SWT.MeasureItem, new Listener() {
80 public void handleEvent(Event event) {
81 // event.width *= 2;
82 }
83 });
84
85 }
86
87 public TreeViewerColumn getPropertyFieldColumn() {
88 return propertyFieldColumn;
89 }
90
91 public TreeViewerColumn getPropertyValueColumn() {
92 return propertyValueColumn;
93 }
94
95 public DataBindingContext getBindingContext() {
96 return bindingContext;
97 }
98 }