revert contextRefresh implementation
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / e4 / TaxonNavigatorE4.java
index 9c7854d55395dd0f423efed40abd9fd576831c4f..74284994ae746922325ceb6ef9c1281f539eac8d 100644 (file)
@@ -67,14 +67,14 @@ 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.api.service.ITaxonNodeService;
-import eu.etaxonomy.cdm.api.service.TaxonNodeDtoByNameComparator;
-import eu.etaxonomy.cdm.api.service.TaxonNodeDtoByRankAndNameComparator;
-import eu.etaxonomy.cdm.api.service.TaxonNodeDtoNaturalComparator;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByNameComparator;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByRankAndNameComparator;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoNaturalComparator;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
 import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
@@ -90,6 +90,7 @@ import eu.etaxonomy.taxeditor.navigation.navigator.EmptyRoot;
 import eu.etaxonomy.taxeditor.navigation.navigator.Root;
 import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNodeNavigatorComparator;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.preference.NavigatorOrderEnum;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
@@ -218,9 +219,16 @@ public class TaxonNavigatorE4 implements
        /** {@inheritDoc} */
        protected IAdaptable getInitialInput() {
                Comparator<TaxonNodeDto> comparator;
-               if (PreferencesUtil.getSortNodesNaturally()){
+               NavigatorOrderEnum orderValue = NavigatorOrderEnum.RankAndNameOrder;
+               try{
+                   orderValue = PreferencesUtil.getSortNodes();
+               }catch(IllegalArgumentException e){
+
+               }
+
+               if (orderValue.equals(NavigatorOrderEnum.NaturalOrder)){
                        comparator = new TaxonNodeDtoNaturalComparator();
-               } else if (PreferencesUtil.getSortNodesStrictlyAlphabetically()){
+               } else if (orderValue.equals(NavigatorOrderEnum.AlphabeticalOrder)){
                        comparator = new TaxonNodeDtoByNameComparator();
                }else {
                        comparator = new TaxonNodeDtoByRankAndNameComparator();
@@ -296,10 +304,17 @@ public class TaxonNavigatorE4 implements
                    if (editor instanceof TaxonNameEditorE4){
                        taxonNode = new TaxonNodeDto( ((TaxonNameEditorE4)editor).getEditorInput().getTaxonNode());
                    }else{
-                       taxonNode = new TaxonNodeDto(editor.getTaxon().getTaxonNodes().iterator().next());
+                       if (editor.getTaxon().getTaxonNodes() != null && !editor.getTaxon().getTaxonNodes().isEmpty()){
+                           taxonNode = new TaxonNodeDto(editor.getTaxon().getTaxonNodes().iterator().next());
+                       }
                    }
-                   viewer.reveal(taxonNode);
-                   viewer.setSelection(new StructuredSelection(taxonNode));
+                if (taxonNode != null){
+                    viewer.reveal(taxonNode);
+                    viewer.setSelection(new StructuredSelection(taxonNode));
+                }else{
+                    //TODO: show message in status bar
+                }
+
                }
            }
        }
@@ -324,6 +339,9 @@ public class TaxonNavigatorE4 implements
                        }
                }
                if(!viewer.getTree().isDisposed()){
+                   if (CdmStore.isActive()){
+                       viewer.setInput(getInitialInput());
+                   }
                    viewer.refresh();
                }
 
@@ -543,6 +561,7 @@ public class TaxonNavigatorE4 implements
 
     @Override
     public void onChange(CdmChangeEvent event) {
+        Object[] expandedElements = viewer.getExpandedElements();
         refresh();
         for(CdmBase cb : event.getChangedObjects()) {
                if(cb instanceof TaxonNode) {
@@ -561,6 +580,7 @@ public class TaxonNavigatorE4 implements
                 viewer.refresh();
             }
         }
+        viewer.setExpandedElements(expandedElements);
     }
 
     @Override
@@ -604,6 +624,7 @@ public class TaxonNavigatorE4 implements
      */
     @Override
     public void contextRefresh(IProgressMonitor monitor) {
+//        viewer.refresh();
     }
 
     /**
@@ -613,6 +634,19 @@ public class TaxonNavigatorE4 implements
     public void workbenchShutdown(IMemento memento, IProgressMonitor monitor) {
     }
 
+    @Inject
+    @Optional
+    private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_NAVIGATOR)TaxonNodeDto dto){
+        if(dto!= null){
+            Object[] expandedElements = viewer.getExpandedElements();
+            refresh();
+            viewer.reveal(dto);
+            viewer.setExpandedElements(expandedElements);
+            viewer.setSelection(new StructuredSelection(dto));
+
+        }
+    }
+
     @Inject
     @Optional
     private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_NAVIGATOR)boolean refresh){