Correct for develop reset
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / TaxonNavigator.java
index 36af4805f740a3a63b30023b6d1db892519b8407..273d9ad36383f11750f991bcafab80a3f7fcc5aa 100644 (file)
@@ -11,6 +11,7 @@
 package eu.etaxonomy.taxeditor.navigation.navigator;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Observable;
@@ -31,11 +32,16 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeByRankAndNameComparator;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.DataChangeBridge;
 import eu.etaxonomy.taxeditor.model.IDataChangeBehavior;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.LoginManager;
 
@@ -74,7 +80,33 @@ public class TaxonNavigator extends CommonNavigator implements
        /** {@inheritDoc} */
        @Override
        protected IAdaptable getInitialInput() {
+               Comparator<TaxonNode> comparator;
+               if (PreferencesUtil.getSortNodesNaturally()){
+                       comparator = new TaxonNaturalComparator();
+               } else{
+                       comparator = new TaxonNodeByRankAndNameComparator();
+               }
+               TaxonNodeNavigatorComparator viewerComparator = new TaxonNodeNavigatorComparator(comparator);
+               this.getCommonViewer().setComparator(viewerComparator);
+        setLinkingEnabled(true);
+//             this.getCommonViewer().addSelectionChangedListener(new ISelectionChangedListener() {
+//
+//                     @Override
+//                     public void selectionChanged(SelectionChangedEvent arg0) {
+//                             IStructuredSelection selection = (IStructuredSelection) getCommonViewer().getSelection();
+//
+//                             Object firstElement =  selection.getFirstElement();
+//                             //
+//                             if (!(firstElement instanceof Classification)){
+//                                     //NavigationUtil.selectInNavigator(firstElement, null);
+//                                     NavigationUtil.openEditor(firstElement);
+//                             }
+//
+//                     }
+//             } );
+
                if (CdmStore.isActive()) {
+
                        // TODO when closing and reopening the taxon navigator
                        // we do not preserve state. Closing the view, in contrary to
                        // closing the whole application
@@ -112,7 +144,9 @@ public class TaxonNavigator extends CommonNavigator implements
                if(getConversationHolder() != null){
                        getConversationHolder().bind();
                        //FIXME : Need to make sure this is a stable fix (ticket 3822)
-                       getConversationHolder().commit();
+                       if(!getConversationHolder().isCompleted()){
+                           getConversationHolder().commit();
+                       }
                }
                getCommonViewer().refresh();
        }
@@ -257,7 +291,7 @@ public class TaxonNavigator extends CommonNavigator implements
                                        path += ((CdmBase) segment).getUuid().toString() + " ";
                                        monitor.worked(1);
                                } else {
-                                       NavigationUtil.warn(getClass(),
+                                       MessagingUtils.warn(getClass(),
                                                        "Non-taxon tree path segment " + segment);
                                }
                        }