package eu.etaxonomy.taxeditor.ui.section.supplemental;
-import java.util.Comparator;
-
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionListener;
import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.OriginalSourceTypeComparator;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
}
- /**
- * Sorts source type combo alphabetically <b>except</b> for PrimaryTaxonomicSource resp.
- * PrimaryMediaSource which are always on top depending on the IdentifiableSource;
- * <br>
- * The last two are always "Other" followed by "Unknown"
- * @author pplitzner
- * @date Jan 6, 2017
- *
- */
- private class OriginalSourceTypeComparator implements Comparator<OriginalSourceType>{
-
- private OriginalSourceBase entity;
- public OriginalSourceTypeComparator(OriginalSourceBase entity) {
- this.entity = entity;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int compare(OriginalSourceType o1, OriginalSourceType o2) {
- if(o1==null){
- if(o2==null){
- return 0;
- }
- else{
- return -1;
- }
- }
- if(o2==null){
- return 1;
- }
- //both are either taxonomic or media
- else if(o1.equals(OriginalSourceType.PrimaryTaxonomicSource)
- && o2.equals(OriginalSourceType.PrimaryMediaSource)){
- if(entity.getType().equals(OriginalSourceType.PrimaryMediaSource)){
- return 1;
- }
- else{
- return -1;
- }
- }
- else if(o2.equals(OriginalSourceType.PrimaryTaxonomicSource)
- && o1.equals(OriginalSourceType.PrimaryMediaSource)){
- if(entity.getType().equals(OriginalSourceType.PrimaryMediaSource)){
- return -1;
- }
- else{
- return 1;
- }
- }
- //one is not taxonomic or media
- else if(o1.equals(OriginalSourceType.PrimaryTaxonomicSource)
- ||o1.equals(OriginalSourceType.PrimaryMediaSource)){
- return -1;
-
- }
- else if(o2.equals(OriginalSourceType.PrimaryTaxonomicSource)
- || o2.equals(OriginalSourceType.PrimaryMediaSource)){
- return 1;
- }
- //The last two are always "Other" followed by "Unknown"
- else if(o1.equals(OriginalSourceType.Other)){
- if(o2.equals(OriginalSourceType.Unknown)){
- return -11;
- }
- else{
- return 1;
- }
- }
- if(o2.equals(OriginalSourceType.Other)){
- return 1;
- }
- else{
- String message1 = o1.getKey();
- String message2 = o2.getKey();
- return message1.compareTo(message2);
- }
- }
-
- }
}