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;
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;
/** {@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();
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
+ }
+
}
}
}
}
}
if(!viewer.getTree().isDisposed()){
+ if (CdmStore.isActive()){
+ viewer.setInput(getInitialInput());
+ }
viewer.refresh();
}
@Override
public void onChange(CdmChangeEvent event) {
+ Object[] expandedElements = viewer.getExpandedElements();
refresh();
for(CdmBase cb : event.getChangedObjects()) {
if(cb instanceof TaxonNode) {
viewer.refresh();
}
}
+ viewer.setExpandedElements(expandedElements);
}
@Override
*/
@Override
public void contextRefresh(IProgressMonitor monitor) {
+// viewer.refresh();
}
/**
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){