cdmlib version change
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / forms / KeyValueViewerElement.java
1
2 package eu.etaxonomy.taxeditor.ui.forms;
3
4 import java.util.Map;
5 import java.util.Map.Entry;
6
7 import org.eclipse.jface.viewers.IStructuredContentProvider;
8 import org.eclipse.jface.viewers.ITableLabelProvider;
9 import org.eclipse.jface.viewers.LabelProvider;
10 import org.eclipse.jface.viewers.TableViewer;
11 import org.eclipse.jface.viewers.TableViewerColumn;
12 import org.eclipse.jface.viewers.Viewer;
13 import org.eclipse.swt.SWT;
14 import org.eclipse.swt.graphics.Image;
15 import org.eclipse.swt.widgets.Label;
16 import org.eclipse.swt.widgets.Table;
17 import org.eclipse.ui.forms.widgets.TableWrapData;
18
19 /**
20 * <p>KeyValueViewerElement class.</p>
21 *
22 * @author n.hoffmann
23 * @version $Id: $
24 */
25 public class KeyValueViewerElement extends AbstractCdmFormElement {
26
27 private TableViewer tableViewer;
28
29 private Label label;
30
31 /**
32 * <p>Constructor for KeyValueViewerElement.</p>
33 *
34 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory} object.
35 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement} object.
36 * @param keyHeading a {@link java.lang.String} object.
37 * @param valueHeading a {@link java.lang.String} object.
38 * @param map a {@link java.util.Map} object.
39 */
40 public KeyValueViewerElement(CdmFormFactory formFactory,
41 ICdmFormElement formElement, String keyHeading, String valueHeading, Map<Object, Object> map) {
42 super(formFactory, formElement);
43
44 label = formFactory.createLabel(getLayoutComposite(), "Meta Data");
45 label.setLayoutData(CdmFormFactory.FILL(2, 1));
46 addControl(label);
47
48 tableViewer = new TableViewer(formElement.getLayoutComposite(), SWT.MULTI | SWT.H_SCROLL
49 | SWT.V_SCROLL | SWT.FULL_SELECTION);
50 addControl(tableViewer.getControl());
51
52 createColumns(tableViewer, keyHeading, valueHeading);
53
54 TableWrapData layoutData = CdmFormFactory.FILL(2, 1);
55 layoutData.heightHint = 100;
56
57 tableViewer.getControl().setLayoutData(layoutData);
58
59 tableViewer.setContentProvider(new KeyValueContentProvider());
60 tableViewer.setLabelProvider(new KeyValueLabelProvider());
61
62 if(map != null){
63 setInput(map);
64 }
65
66 }
67
68 // This will create the columns for the table
69 private void createColumns(TableViewer viewer, String keyHeading, String valueHeading) {
70 Table table = viewer.getTable();
71 String[] titles = {keyHeading, valueHeading};
72 int[] bounds = { 100, 100};
73
74 for (int i = 0; i < titles.length; i++) {
75 TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
76 column.getColumn().setText(titles[i]);
77 column.getColumn().setWidth(bounds[i]);
78 column.getColumn().setResizable(true);
79 column.getColumn().setMoveable(true);
80 }
81 table.setHeaderVisible(true);
82 table.setLinesVisible(true);
83 }
84
85
86 /**
87 * <p>setInput</p>
88 *
89 * @param map a {@link java.util.Map} object.
90 */
91 public void setInput(Map<? extends Object, ? extends Object> map) {
92 tableViewer.setInput(map);
93 tableViewer.refresh();
94 }
95
96 private class KeyValueContentProvider implements IStructuredContentProvider{
97
98 public Object[] getElements(Object inputElement) {
99 if(inputElement instanceof Map){
100 return ((Map) inputElement).entrySet().toArray();
101 }
102 return null;
103 }
104
105 public void dispose() {}
106
107 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
108
109 }
110
111 private class KeyValueLabelProvider extends LabelProvider implements ITableLabelProvider{
112
113 public Image getColumnImage(Object element, int columnIndex) {
114 return null;
115 }
116
117 public String getColumnText(Object element, int columnIndex) {
118 if(element instanceof Entry){
119
120 Entry entry = (Entry) element;
121
122 switch(columnIndex){
123 case 0:
124 return entry.getKey().toString();
125 case 1:
126 return entry.getValue().toString();
127 }
128 }
129 return element.toString();
130 }
131 }
132 }