Project

General

Profile

Download (2.91 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

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

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

    
38
		addControl(label);
39

    
40
		section_dateDetails = createDateDetailSection();
41
		addControl(section_dateDetails);
42

    
43
		setTimePeriod(timePeriod);
44

    
45
		formFactory.addPropertyChangeListener(this);
46
	}
47

    
48
	protected abstract DateDetailSection<T> createDateDetailSection();
49

    
50
	protected T timePeriod;
51
	protected Label label;
52
	protected DateDetailSection<T> section_dateDetails;
53

    
54

    
55
	/**
56
	 * <p>
57
	 * setEntity
58
	 * </p>
59
	 *
60
	 * @param timePeriod
61
	 *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
62
	 */
63
	public void setEntity(T timePeriod) {
64
		setTimePeriod(timePeriod);
65
	}
66

    
67
	/** {@inheritDoc} */
68
	@Override
69
	public void propertyChange(PropertyChangeEvent event) {
70
		if (event == null) {
71
			return;
72
		}
73
		Object eventSource = event.getSource();
74

    
75
		if (getElements().contains(eventSource)) {
76
			handleEvent(eventSource);
77
		}
78
	}
79

    
80
	private void handleEvent(Object eventSource) {
81
		if (eventSource == section_dateDetails) {
82
			timePeriod = section_dateDetails.getEntity();
83
			firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
84
		}
85
	}
86

    
87
	/**
88
	 * <p>
89
	 * Setter for the field <code>timePeriod</code>.
90
	 * </p>
91
	 *
92
	 * @param timePeriod
93
	 *            the timePeriod to set
94
	 */
95
	public void setTimePeriod(T timePeriod) {
96
		this.timePeriod = timePeriod;
97
		if (timePeriod != null) {
98
			section_dateDetails.setEntity(timePeriod);
99
		}
100
	}
101

    
102
	/**
103
	 * <p>
104
	 * Getter for the field <code>timePeriod</code>.
105
	 * </p>
106
	 *
107
	 * @return the timePeriod
108
	 */
109
	public T getTimePeriod() {
110
		return timePeriod;
111
	}
112

    
113
	/** {@inheritDoc} */
114
	@Override
115
	public void setBackground(Color color) {
116
		label.setBackground(color);
117
		section_dateDetails.setBackground(color);
118
	}
119

    
120
	@Override
121
	public void setSelected(boolean selected) {
122
		setBackground(selected ? SELECTED : getPersistentBackground());
123
	}
124

    
125
	public void setLabel(String string) {
126
		label.setText(string);
127
	}
128

    
129
}
(44-44/48)