Project

General

Profile

Download (2.5 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.ui.element;
2

    
3
import org.eclipse.jface.util.PropertyChangeEvent;
4
import org.eclipse.swt.graphics.Color;
5
import org.eclipse.swt.widgets.Label;
6

    
7
import eu.etaxonomy.cdm.model.common.TimePeriod;
8

    
9
public abstract class TimePeriodElementBase<T extends TimePeriod>
10
		extends AbstractCdmFormElement
11
		implements ISelectable {
12

    
13
    protected T timePeriod;
14
    protected Label label;
15
    protected DateDetailSection<T> section_dateDetails;
16

    
17
	/**
18
	 * <p>
19
	 * Constructor for TimePeriodElement.
20
	 * </p>
21
	 *
22
	 * @param style
23
	 *            a int.
24
	 * @param formFactory
25
	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
26
	 *            object.
27
	 * @param parentElement
28
	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
29
	 *            object.
30
	 * @param labelString
31
	 *            a {@link java.lang.String} object.
32
	 * @param timePeriod
33
	 *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
34
	 */
35
	public TimePeriodElementBase(CdmFormFactory formFactory,
36
			ICdmFormElement parentElement, String labelString,
37
			T timePeriod, final int style) {
38
		super(formFactory, parentElement);
39
		label = formFactory.createLabel(getLayoutComposite(), labelString);
40

    
41
		addControl(label);
42

    
43
		section_dateDetails = createDateDetailSection();
44
		addControl(section_dateDetails);
45

    
46
		setTimePeriod(timePeriod);
47

    
48
		formFactory.addPropertyChangeListener(this);
49
	}
50

    
51

    
52
	protected abstract DateDetailSection<T> createDateDetailSection();
53

    
54
	public void setEntity(T timePeriod) {
55
		setTimePeriod(timePeriod);
56
	}
57

    
58
	@Override
59
	public void propertyChange(PropertyChangeEvent event) {
60
		if (event == null) {
61
			return;
62
		}
63
		Object eventSource = event.getSource();
64

    
65
		if (getElements().contains(eventSource)) {
66
			handleEvent(eventSource);
67
		}
68
	}
69

    
70
	private void handleEvent(Object eventSource) {
71
		if (eventSource == section_dateDetails) {
72
			timePeriod = section_dateDetails.getEntity();
73
			firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
74
		}
75
	}
76

    
77
	public void setTimePeriod(T timePeriod) {
78
		this.timePeriod = timePeriod;
79
		if (timePeriod != null) {
80
			section_dateDetails.setEntity(timePeriod);
81
		}
82
	}
83

    
84
	public T getTimePeriod() {
85
		return timePeriod;
86
	}
87

    
88
	@Override
89
	public void setBackground(Color color) {
90
		label.setBackground(color);
91
		section_dateDetails.setBackground(color);
92
	}
93

    
94
	@Override
95
	public void setSelected(boolean selected) {
96
		setBackground(selected ? SELECTED : getPersistentBackground());
97
	}
98

    
99
	public void setLabel(String string) {
100
		label.setText(string);
101
	}
102

    
103
}
(49-49/53)