2 package eu
.etaxonomy
.taxeditor
.ui
.element
;
5 import java
.util
.Map
.Entry
;
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
;
19 import eu
.etaxonomy
.taxeditor
.ui
.campanula
.compatibility
.ICdmFormElement
;
23 * <p>KeyValueViewerElement class.</p>
28 public class KeyValueViewerElement
extends AbstractCdmFormElement
{
30 private TableViewer tableViewer
;
35 * <p>Constructor for KeyValueViewerElement.</p>
37 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
38 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
39 * @param keyHeading a {@link java.lang.String} object.
40 * @param valueHeading a {@link java.lang.String} object.
41 * @param map a {@link java.util.Map} object.
43 public KeyValueViewerElement(CdmFormFactory formFactory
,
44 ICdmFormElement formElement
, String keyHeading
, String valueHeading
, Map
<Object
, Object
> map
) {
45 super(formFactory
, formElement
);
47 label
= formFactory
.createLabel(getLayoutComposite(), "Meta Data");
48 label
.setLayoutData(LayoutConstants
.FILL(2, 1));
51 tableViewer
= new TableViewer(formElement
.getLayoutComposite(), SWT
.MULTI
| SWT
.H_SCROLL
52 | SWT
.V_SCROLL
| SWT
.FULL_SELECTION
);
53 addControl(tableViewer
.getControl());
55 createColumns(tableViewer
, keyHeading
, valueHeading
);
57 TableWrapData layoutData
= LayoutConstants
.FILL(2, 1);
58 layoutData
.heightHint
= 100;
60 tableViewer
.getControl().setLayoutData(layoutData
);
62 tableViewer
.setContentProvider(new KeyValueContentProvider());
63 tableViewer
.setLabelProvider(new KeyValueLabelProvider());
71 // This will create the columns for the table
72 private void createColumns(TableViewer viewer
, String keyHeading
, String valueHeading
) {
73 Table table
= viewer
.getTable();
74 String
[] titles
= {keyHeading
, valueHeading
};
75 int[] bounds
= { 100, 100};
77 for (int i
= 0; i
< titles
.length
; i
++) {
78 TableViewerColumn column
= new TableViewerColumn(viewer
, SWT
.NONE
);
79 column
.getColumn().setText(titles
[i
]);
80 column
.getColumn().setWidth(bounds
[i
]);
81 column
.getColumn().setResizable(true);
82 column
.getColumn().setMoveable(true);
84 table
.setHeaderVisible(true);
85 table
.setLinesVisible(true);
92 * @param map a {@link java.util.Map} object.
94 public void setInput(Map
<?
extends Object
, ?
extends Object
> map
) {
95 tableViewer
.setInput(map
);
96 tableViewer
.refresh();
99 private class KeyValueContentProvider
implements IStructuredContentProvider
{
101 public Object
[] getElements(Object inputElement
) {
102 if(inputElement
instanceof Map
){
103 return ((Map
) inputElement
).entrySet().toArray();
108 public void dispose() {}
110 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {}
114 private class KeyValueLabelProvider
extends LabelProvider
implements ITableLabelProvider
{
116 public Image
getColumnImage(Object element
, int columnIndex
) {
120 public String
getColumnText(Object element
, int columnIndex
) {
121 if(element
instanceof Entry
){
123 Entry entry
= (Entry
) element
;
127 return entry
.getKey().toString();
129 return entry
.getValue().toString();
132 return element
.toString();