Project

General

Profile

« Previous | Next » 

Revision 97278383

Added by Patrick Plitzner over 7 years ago

ref #5305 Refactored combo elements

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java
17 17
import java.util.List;
18 18
import java.util.Map.Entry;
19 19

  
20
import org.eclipse.swt.SWT;
21 20
import org.eclipse.swt.events.SelectionEvent;
22
import org.eclipse.swt.events.SelectionListener;
23
import org.eclipse.swt.graphics.Color;
24
import org.eclipse.swt.widgets.Combo;
25
import org.eclipse.swt.widgets.Label;
26 21

  
27 22
import eu.etaxonomy.cdm.model.common.IEnumTerm;
28 23
import eu.etaxonomy.cdm.model.common.OriginalSourceType;
......
30 25
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
31 26
import eu.etaxonomy.cdm.model.reference.ReferenceType;
32 27
import eu.etaxonomy.taxeditor.model.AbstractUtility;
33
import eu.etaxonomy.taxeditor.preference.Resources;
34
import eu.etaxonomy.taxeditor.store.StoreUtil;
35
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
36 28
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
37 29
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
38 30
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
39
import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
40
import eu.etaxonomy.taxeditor.ui.element.ISelectable;
41
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
42 31

  
43 32
/**
44
 * <p>
45
 * Abstract AbstractEnumComboElement class.
46
 * </p>
47
 *
48 33
 * @author n.hoffmann
49 34
 * @created Mar 16, 2010
50 35
 * @version 1.0
51 36
 */
52 37
public class EnumComboElement<T extends IEnumTerm<T>> extends
53
		AbstractCdmFormElement implements SelectionListener,
54
		IEnableableFormElement, ISelectable {
38
		AbstractComboElement<T>  {
55 39

  
56 40
	//TODO RL
57 41
	public void setVisible(boolean b){
58 42
		combo.setVisible(b);
59 43
	}
60 44

  
61
	
45

  
62 46
	private static CdmEnumDataHolder[] cdmEnumDataHolders = {
63 47
		new CdmEnumDataHolder<NomenclaturalCode>(){
64 48

  
......
135 119

  
136 120
	};
137 121

  
138
	private static final int DEFAULT_VISIBLE_ITEMS = 10;
139

  
140
	protected T selection;
141

  
142 122
	protected List<T> elementTypeList = new ArrayList<T>();
143 123

  
144
	private final Label label;
145
	protected Combo combo;
146

  
147 124
	private final Class<T> enumType;
148 125

  
149
	/**
150
	 * <p>
151
	 * Constructor for AbstractEnumComboElement.
152
	 * </p>
153
	 *
154
	 * @param formFactory
155
	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
156
	 *            object.
157
	 * @param parentElement
158
	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
159
	 *            object.
160
	 * @param labelString
161
	 *            a {@link java.lang.String} object.
162
	 * @param <T>
163
	 *            a T object.
164
	 */
165 126
	public EnumComboElement(CdmFormFactory formFactory,
166 127
			ICdmFormElement parentElement, Class<T> enumType, int style) {
167 128
		super(formFactory, parentElement);
168 129
		this.enumType = enumType;
169
		label = formFactory.createLabel(getLayoutComposite(), getDefaultLabelString());
170
		addControl(label);
171

  
172
		// create combo
173
		combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY);
174
		addControl(combo);
175
		combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
176
		setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
130
		label.setText(getDefaultLabelString());
177 131

  
178 132
		populateTypes();
179 133

  
......
193 147
		return "No Label";
194 148
	}
195 149

  
196
	/**
197
	 * <p>
198
	 * populateTypes
199
	 * </p>
200
	 */
201 150
    private void populateTypes(){
202 151
        Collection<T> elementsForClass = getElementsForClass(enumType);
203 152
        // special hierarchical order for specimens
......
217 166
        }
218 167
	}
219 168

  
220
	/**
221
	 * <p>
222
	 * Setter for the field <code>selection</code>.
223
	 * </p>
224
	 *
225
	 * @param selection
226
	 *            the selection to set
227
	 */
228
	public void setSelection(T selection) {
169
	@Override
170
    public void setSelection(T selection) {
229 171
		this.selection = selection;
230 172
		combo.select(elementTypeList.indexOf(selection));
231 173
	}
232

  
233
	/**
234
	 * <p>
235
	 * addSelectionListener
236
	 * </p>
237
	 *
238
	 * @param listener
239
	 *            a {@link org.eclipse.swt.events.SelectionListener} object.
240
	 */
241
	public void addSelectionListener(SelectionListener listener) {
242
		combo.addSelectionListener(listener);
243
	}
244

  
245
	/**
246
	 * <p>
247
	 * removeSelectionListener
248
	 * </p>
249
	 *
250
	 * @param listener
251
	 *            a {@link org.eclipse.swt.events.SelectionListener} object.
252
	 */
253
	public void removeSelectionListener(SelectionListener listener) {
254
		combo.removeSelectionListener(listener);
255
	}
256

  
257
	/** {@inheritDoc} */
258
	@Override
259
    public void setSelected(boolean selected) {
260
		setBackground(selected ? SELECTED : getPersistentBackground());
261
	}
262

  
263
	/**
264
	 * <p>
265
	 * Getter for the field <code>selection</code>.
266
	 * </p>
267
	 *
268
	 * @return the selection
269
	 */
270
	public T getSelection() {
271
		return selection;
272
	}
273

  
274
	/** {@inheritDoc} */
275
	@Override
276
    public void setEnabled(boolean enabled) {
277
		combo.setEnabled(enabled);
278
	}
279

  
280
	/* (non-Javadoc)
281
	 * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
282
	 */
283
	@Override
284
	public boolean isEnabled() {
285
	    return combo.isEnabled();
286
	}
287

  
288
	/*
289
	 * (non-Javadoc)
290
	 *
291
	 * @see
292
	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
293
	 * .events.SelectionEvent)
294
	 */
295 174
	/** {@inheritDoc} */
296 175
	@Override
297 176
    public void widgetSelected(SelectionEvent e) {
......
299 178
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
300 179
	}
301 180

  
302
	/** {@inheritDoc} */
303
	@Override
304
    public void setIrrelevant(boolean irrelevant) {
305
		String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
306
				: Resources.COLOR_COMPOSITE_BACKGROUND;
307

  
308
		Color color = StoreUtil.getColor(colorId);
309
		combo.setBackground(color);
310
	}
311

  
312
	/** {@inheritDoc} */
313
	@Override
314
	public void setBackground(Color color) {
315
		label.setBackground(color);
316
	}
317

  
318
	/** {@inheritDoc} */
319
	@Override
320
    public void widgetDefaultSelected(SelectionEvent e) {
321
	}
322

  
323
	public void setVisibleItemCount(int visibleItems){
324
		combo.setVisibleItemCount(visibleItems);
325
	}
326

  
327 181
	private Collection<T> getElementsForClass(Class<T> clazz){
328 182
		CdmEnumDataHolder<T> dataHolder = getCdmEnumDataHolderForClass(clazz);
329 183
		if (dataHolder != null) {

Also available in: Unified diff