// $Id$
/**
* Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy
+ * European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
- *
+ *
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
+import java.util.Map.Entry;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Label;
-import eu.etaxonomy.cdm.model.common.IDefinedTerm;
import eu.etaxonomy.cdm.model.common.IEnumTerm;
import eu.etaxonomy.cdm.model.common.OriginalSourceType;
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import eu.etaxonomy.cdm.model.reference.ReferenceType;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.preference.Resources;
import eu.etaxonomy.taxeditor.store.StoreUtil;
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
* <p>
* Abstract AbstractEnumComboElement class.
* </p>
- *
+ *
* @author n.hoffmann
* @created Mar 16, 2010
* @version 1.0
private static CdmEnumDataHolder[] cdmEnumDataHolders = {
new CdmEnumDataHolder<NomenclaturalCode>(){
-
+
@Override
public String getName() {
return "Nomenclatural Code";
public Class<NomenclaturalCode> getClazz() {
return NomenclaturalCode.class;
}
-
+
},
new CdmEnumDataHolder<ReferenceType>(){
public Class<ReferenceType> getClazz() {
return ReferenceType.class;
}
-
+
},
new CdmEnumDataHolder<SpecimenOrObservationType>(){
public Class<SpecimenOrObservationType> getClazz() {
return SpecimenOrObservationType.class;
}
-
+
},
new CdmEnumDataHolder<OriginalSourceType>(){
public Class<OriginalSourceType> getClazz() {
return OriginalSourceType.class;
}
-
+
}
-
+
};
-
+
private static final int DEFAULT_VISIBLE_ITEMS = 10;
protected T selection;
protected List<T> elementTypeList = new ArrayList<T>();
- private Label label;
+ private final Label label;
protected Combo combo;
- private Class<T> enumType;
+ private final Class<T> enumType;
/**
* <p>
* Constructor for AbstractEnumComboElement.
* </p>
- *
+ *
* @param formFactory
* a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
* object.
* </p>
*/
private void populateTypes(){
- for(T enumElement : getElementsForClass(enumType)){
- elementTypeList.add(enumElement);
- combo.add(((Enum) enumElement).name());
+ for(Entry<T, String> keyLabelPair : AbstractUtility.orderTerms(getElementsForClass(enumType)).entrySet()){
+ elementTypeList.add(keyLabelPair.getKey());
+ combo.add(keyLabelPair.getValue());
}
}
* <p>
* Setter for the field <code>selection</code>.
* </p>
- *
+ *
* @param selection
* the selection to set
*/
* <p>
* addSelectionListener
* </p>
- *
+ *
* @param listener
* a {@link org.eclipse.swt.events.SelectionListener} object.
*/
* <p>
* removeSelectionListener
* </p>
- *
+ *
* @param listener
* a {@link org.eclipse.swt.events.SelectionListener} object.
*/
}
/** {@inheritDoc} */
- public void setSelected(boolean selected) {
+ @Override
+ public void setSelected(boolean selected) {
setBackground(selected ? SELECTED : getPersistentBackground());
}
* <p>
* Getter for the field <code>selection</code>.
* </p>
- *
+ *
* @return the selection
*/
public T getSelection() {
}
/** {@inheritDoc} */
- public void setEnabled(boolean enabled) {
+ @Override
+ public void setEnabled(boolean enabled) {
combo.setEnabled(enabled);
}
/*
* (non-Javadoc)
- *
+ *
* @see
* org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
* .events.SelectionEvent)
*/
/** {@inheritDoc} */
- public void widgetSelected(SelectionEvent e) {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
selection = elementTypeList.get(combo.getSelectionIndex());
firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
}
/** {@inheritDoc} */
- public void setIrrelevant(boolean irrelevant) {
+ @Override
+ public void setIrrelevant(boolean irrelevant) {
String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
: Resources.COLOR_COMPOSITE_BACKGROUND;
}
/** {@inheritDoc} */
- public void widgetDefaultSelected(SelectionEvent e) {
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
}
-
+
public void setVisibleItemCount(int visibleItems){
combo.setVisibleItemCount(visibleItems);
}
-
+
private Collection<T> getElementsForClass(Class<T> clazz){
CdmEnumDataHolder<T> dataHolder = getCdmEnumDataHolderForClass(clazz);
if (dataHolder != null) {
- return dataHolder.getElements();
+ return dataHolder.getElements();
}
return null;
}
-
+
private CdmEnumDataHolder<T> getCdmEnumDataHolderForClass(Class<T> clazz){
for (CdmEnumDataHolder dataHolder : cdmEnumDataHolders) {
if (dataHolder.getClazz().equals(clazz)){
}
return null;
}
-
+
private interface CdmEnumDataHolder<T> {
Class<T> getClazz();
String getName();