Revision 97278383
Added by Patrick Plitzner over 7 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java | ||
---|---|---|
10 | 10 |
import java.util.List; |
11 | 11 |
|
12 | 12 |
import org.eclipse.jface.util.PropertyChangeEvent; |
13 |
import org.eclipse.jface.viewers.ComboViewer; |
|
14 | 13 |
import org.eclipse.swt.SWT; |
15 |
import org.eclipse.swt.events.DisposeEvent; |
|
16 |
import org.eclipse.swt.events.DisposeListener; |
|
17 | 14 |
import org.eclipse.swt.events.SelectionEvent; |
18 |
import org.eclipse.swt.events.SelectionListener; |
|
19 |
import org.eclipse.swt.graphics.Color; |
|
20 |
import org.eclipse.swt.widgets.Combo; |
|
21 |
import org.eclipse.swt.widgets.Label; |
|
22 | 15 |
import org.eclipse.swt.widgets.Listener; |
23 |
import org.eclipse.ui.forms.widgets.TableWrapData; |
|
24 | 16 |
|
25 | 17 |
import eu.etaxonomy.cdm.model.common.DefinedTermBase; |
26 | 18 |
import eu.etaxonomy.cdm.model.common.TermType; |
... | ... | |
28 | 20 |
import eu.etaxonomy.taxeditor.model.MessagingUtils; |
29 | 21 |
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys; |
30 | 22 |
import eu.etaxonomy.taxeditor.preference.PreferencesUtil; |
31 |
import eu.etaxonomy.taxeditor.preference.Resources; |
|
32 | 23 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
33 |
import eu.etaxonomy.taxeditor.store.StoreUtil; |
|
34 | 24 |
import eu.etaxonomy.taxeditor.store.TermManager; |
35 |
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement; |
|
36 | 25 |
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; |
37 | 26 |
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent; |
38 | 27 |
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 | 28 |
|
43 | 29 |
/** |
44 |
* <p> |
|
45 |
* Abstract AbstractTermComboElement class. |
|
46 |
* </p> |
|
47 |
* |
|
48 | 30 |
* @author n.hoffmann |
49 | 31 |
* @created Nov 5, 2009 |
50 | 32 |
* @version 1.0 |
51 | 33 |
* @param <T> |
52 | 34 |
*/ |
53 | 35 |
public class TermComboElement<T extends DefinedTermBase> |
54 |
extends AbstractCdmFormElement implements SelectionListener, |
|
55 |
DisposeListener, IEnableableFormElement, ISelectable { |
|
56 |
|
|
57 |
private static final int DEFAULT_VISIBLE_ITEMS = 10; |
|
58 |
|
|
59 |
private T selection; |
|
36 |
extends AbstractComboElement<T> { |
|
60 | 37 |
|
61 | 38 |
private T emptyElement; |
62 | 39 |
private static String EMPTY_ELEMENT_LABEL = ""; |
63 | 40 |
|
64 |
protected Label label; |
|
65 |
private final Combo combo; |
|
66 |
|
|
67 | 41 |
private ArrayList<T> terms; |
68 | 42 |
|
69 | 43 |
private Comparator<T> termComparator; |
... | ... | |
105 | 79 |
this.addEmptyElement = addEmptyElement; |
106 | 80 |
|
107 | 81 |
if (labelString != null) { |
108 |
label = formFactory.createLabel(getLayoutComposite(), labelString); |
|
109 |
addControl(label); |
|
82 |
label.setText(labelString); |
|
110 | 83 |
} |
111 | 84 |
|
112 |
// create combo |
|
113 |
ComboViewer viewer = new ComboViewer(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY ); |
|
114 |
combo = viewer.getCombo(); |
|
115 |
addControl(combo); |
|
116 |
TableWrapData fill_HORIZONTALLY = LayoutConstants.FILL_HORIZONTALLY(); |
|
117 |
combo.setLayoutData(fill_HORIZONTALLY); |
|
118 |
fill_HORIZONTALLY.maxWidth = 50; |
|
119 |
combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS); |
|
120 |
|
|
121 |
|
|
122 | 85 |
if(termType!=null){ |
123 | 86 |
//TODO try to remove generic T and avoid classes to be used |
124 | 87 |
populateTerms((List<T>) getTermManager().getPreferredTerms(termType)); |
... | ... | |
139 | 102 |
} |
140 | 103 |
} |
141 | 104 |
|
142 |
/** |
|
143 |
* <p> |
|
144 |
* Getter for the field <code>selection</code>. |
|
145 |
* </p> |
|
146 |
* |
|
147 |
* @return a T object. |
|
148 |
*/ |
|
149 |
public T getSelection() { |
|
150 |
return selection; |
|
151 |
} |
|
152 |
|
|
153 | 105 |
/** |
154 | 106 |
* <p>Sets the selection of the combo to the given T object.</p> |
155 | 107 |
* <p>Passing <code>null</code> to this method will set the selection to |
... | ... | |
158 | 110 |
* @param selection |
159 | 111 |
* a T object or <code>null</code> to clear the selection |
160 | 112 |
*/ |
161 |
public void setSelection(T selection) { |
|
113 |
@Override |
|
114 |
public void setSelection(T selection) { |
|
162 | 115 |
this.selection = selection; |
163 | 116 |
|
164 | 117 |
Listener[] listeners = combo.getListeners(SWT.Selection); |
... | ... | |
243 | 196 |
combo.select(index); |
244 | 197 |
} |
245 | 198 |
|
246 |
/* |
|
247 |
* (non-Javadoc) |
|
248 |
* @see eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean) |
|
249 |
*/ |
|
250 |
/** {@inheritDoc} */ |
|
251 |
@Override |
|
252 |
public void setEnabled(boolean enabled) { |
|
253 |
combo.setEnabled(enabled); |
|
254 |
} |
|
255 |
|
|
256 |
/* (non-Javadoc) |
|
257 |
* @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled() |
|
258 |
*/ |
|
259 |
@Override |
|
260 |
public boolean isEnabled() { |
|
261 |
return combo.isEnabled(); |
|
262 |
} |
|
263 |
|
|
264 |
/** |
|
265 |
* <p> |
|
266 |
* preferredTerms |
|
267 |
* </p> |
|
268 |
* |
|
269 |
* @return a {@link java.util.List} object. |
|
270 |
*/ |
|
271 | 199 |
protected List<T> getPreferredTerms(){ |
272 | 200 |
List<T> preferredTerms = new ArrayList<T>(); |
273 | 201 |
if (customPreferredTerms != null){ |
... | ... | |
326 | 254 |
populateTerms(preferredTerms); |
327 | 255 |
} |
328 | 256 |
|
329 |
/** |
|
330 |
* <p> |
|
331 |
* addSelectionListener |
|
332 |
* </p> |
|
333 |
* |
|
334 |
* @param listener |
|
335 |
* a {@link org.eclipse.swt.events.SelectionListener} object. |
|
336 |
*/ |
|
337 |
public void addSelectionListener(SelectionListener listener) { |
|
338 |
combo.addSelectionListener(listener); |
|
339 |
} |
|
340 |
|
|
341 |
/** |
|
342 |
* <p> |
|
343 |
* removeSelectionListener |
|
344 |
* </p> |
|
345 |
* |
|
346 |
* @param listener |
|
347 |
* a {@link org.eclipse.swt.events.SelectionListener} object. |
|
348 |
*/ |
|
349 |
public void removeSelectionListener(SelectionListener listener) { |
|
350 |
combo.removeSelectionListener(listener); |
|
351 |
} |
|
352 |
|
|
353 |
/* |
|
354 |
* (non-Javadoc) |
|
355 |
* |
|
356 |
* @see |
|
357 |
* org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt |
|
358 |
* .events.SelectionEvent) |
|
359 |
*/ |
|
360 | 257 |
/** {@inheritDoc} */ |
361 | 258 |
@Override |
362 | 259 |
public void widgetSelected(SelectionEvent e) { |
... | ... | |
364 | 261 |
firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e)); |
365 | 262 |
} |
366 | 263 |
|
367 |
/* |
|
368 |
* (non-Javadoc) |
|
369 |
* |
|
370 |
* @see java.beans.PropertyChangeListener#propertyChange(java.beans. |
|
371 |
* PropertyChangeEvent) |
|
372 |
*/ |
|
373 | 264 |
/** {@inheritDoc} */ |
374 | 265 |
@Override |
375 | 266 |
public void propertyChange(PropertyChangeEvent event) { |
... | ... | |
381 | 272 |
} |
382 | 273 |
} |
383 | 274 |
|
384 |
/** {@inheritDoc} */ |
|
385 |
@Override |
|
386 |
public void setSelected(boolean selected) { |
|
387 |
setBackground(selected ? SELECTED : getPersistentBackground()); |
|
388 |
} |
|
389 |
|
|
390 |
/** {@inheritDoc} */ |
|
391 |
@Override |
|
392 |
public void widgetDisposed(DisposeEvent e) { |
|
393 |
PreferencesUtil.getPreferenceStore().removePropertyChangeListener(this); |
|
394 |
} |
|
395 |
|
|
396 |
// not used |
|
397 |
/** {@inheritDoc} */ |
|
398 |
@Override |
|
399 |
public void widgetDefaultSelected(SelectionEvent e) { |
|
400 |
} |
|
401 |
|
|
402 |
/** {@inheritDoc} */ |
|
403 |
@Override |
|
404 |
public void setIrrelevant(boolean irrelevant) { |
|
405 |
String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT |
|
406 |
: Resources.COLOR_COMPOSITE_BACKGROUND; |
|
407 |
|
|
408 |
Color color = StoreUtil.getColor(colorId); |
|
409 |
combo.setBackground(color); |
|
410 |
} |
|
411 |
|
|
412 |
/** {@inheritDoc} */ |
|
413 |
@Override |
|
414 |
public void setBackground(Color color) { |
|
415 |
if (label != null) { |
|
416 |
label.setBackground(color); |
|
417 |
} |
|
418 |
} |
|
419 |
|
|
420 |
/** |
|
421 |
* |
|
422 |
*/ |
|
423 | 275 |
protected TermManager getTermManager() { |
424 | 276 |
return CdmStore.getTermManager(); |
425 | 277 |
} |
426 | 278 |
|
427 |
/** |
|
428 |
* |
|
429 |
* @return |
|
430 |
*/ |
|
431 | 279 |
public int getVisibleItemCount(){ |
432 | 280 |
return combo.getVisibleItemCount(); |
433 | 281 |
} |
434 | 282 |
|
435 |
/** |
|
436 |
* |
|
437 |
* @param count |
|
438 |
*/ |
|
439 |
public void setVisibleItemCount(int count){ |
|
440 |
combo.setVisibleItemCount(count); |
|
441 |
} |
|
442 |
|
|
443 | 283 |
/** |
444 | 284 |
* <p>A {@link List} of term objects may be passed to this combo box. In this case, the default behaviour |
445 | 285 |
* of displaying the preferred terms for the T type will be overridden and the combo will only display the |
Also available in: Unified diff
ref #5305 Refactored combo elements