X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/a3c56b93813fa25a19da96969a694c22af7f0c30..52db4e57ece35c5cc3a28558066983fd91c67c83:/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/TaxonNavigatorE4.java diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/TaxonNavigatorE4.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/TaxonNavigatorE4.java index 9c7854d55..74284994a 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/TaxonNavigatorE4.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/TaxonNavigatorE4.java @@ -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 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){