Project

General

Profile

Download (3.7 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(22-22/35)