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