+package eu.etaxonomy.taxeditor.navigation.navigator;
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+
+
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+
+import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.IdentifiableSourceElement;
+
+public class TaxonNodeNavigatorComparator extends ViewerComparator{
+
+
+ public TaxonNodeNavigatorComparator(Comparator<TaxonBase> comparator){
+ super(comparator);
+ }
+
+
+
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2){
+ if (e1 instanceof Classification && e2 instanceof Classification){
+ return ((Classification)e1).getTitleCache().compareTo(((Classification)e2).getTitleCache());
+ } else{
+ if (this.getComparator() instanceof TaxonNaturalComparator){
+ return this.getComparator().compare((TaxonNode)e1, (TaxonNode)e2);
+ }else{
+ return this.getComparator().compare(((TaxonNode)e1).getTaxon(),((TaxonNode)e2).getTaxon());
+ }
+ }
+ }
+}