Project

General

Profile

« Previous | Next » 

Revision 0c7c9656

Added by Patrick Plitzner over 7 years ago

fix #5714 Add possibility for adding a comparator to EnumComboElement

  • for Sources always have PrimaryTaxonomicSource or PrimaryMediaSource on top depending on IdentifiableSource

View differences:

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