Revision 0c7c9656
Added by Patrick Plitzner over 7 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java | ||
---|---|---|
12 | 12 |
import java.util.ArrayList; |
13 | 13 |
import java.util.Arrays; |
14 | 14 |
import java.util.Collection; |
15 |
import java.util.Collections; |
|
16 |
import java.util.Comparator; |
|
15 | 17 |
import java.util.LinkedHashMap; |
16 | 18 |
import java.util.List; |
17 | 19 |
import java.util.Map.Entry; |
... | ... | |
123 | 125 |
private final Class<T> enumType; |
124 | 126 |
|
125 | 127 |
public EnumComboElement(CdmFormFactory formFactory, |
126 |
ICdmFormElement parentElement, Class<T> enumType, int style) { |
|
128 |
ICdmFormElement parentElement, Class<T> enumType, Comparator<T> comparator, int style) {
|
|
127 | 129 |
super(formFactory, parentElement); |
128 | 130 |
this.enumType = enumType; |
129 | 131 |
label.setText(getDefaultLabelString()); |
130 | 132 |
|
131 |
populateTypes(); |
|
133 |
populateTypes(comparator);
|
|
132 | 134 |
|
133 | 135 |
combo.addSelectionListener(this); |
134 | 136 |
} |
... | ... | |
146 | 148 |
return "No Label"; |
147 | 149 |
} |
148 | 150 |
|
149 |
private void populateTypes(){ |
|
150 |
Collection<T> elementsForClass = getElementsForClass(enumType); |
|
151 |
private void populateTypes(Comparator<T> comparator){ |
|
152 |
List<T> elementsForClass = new ArrayList<T>(getElementsForClass(enumType)); |
|
153 |
if(comparator!=null){ |
|
154 |
Collections.sort(elementsForClass, comparator); |
|
155 |
} |
|
151 | 156 |
// special hierarchical order for specimens |
152 | 157 |
if(enumType.equals(SpecimenOrObservationType.class)){ |
153 | 158 |
LinkedHashMap<T, String> orderedTerms = AbstractUtility.orderTerms(elementsForClass); |
... | ... | |
158 | 163 |
} |
159 | 164 |
// default order |
160 | 165 |
else{ |
161 |
for(T enumElement : getElementsForClass(enumType)){
|
|
166 |
for(T enumElement : elementsForClass){
|
|
162 | 167 |
elementTypeList.add(enumElement); |
163 | 168 |
combo.add(((Enum) enumElement).name()); |
164 | 169 |
} |
Also available in: Unified diff
fix #5714 Add possibility for adding a comparator to EnumComboElement