-// $Id$
/**
* Copyright (C) 2007 EDIT
* European Distributed Institute of Taxonomy
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IViewSite;
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.common.ICdmBase;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeByNameComparator;
import eu.etaxonomy.cdm.model.taxon.TaxonNodeByRankAndNameComparator;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.model.DataChangeBridge;
Comparator<TaxonNode> comparator;
if (PreferencesUtil.getSortNodesNaturally()){
comparator = new TaxonNaturalComparator();
- } else{
+ } else if (PreferencesUtil.getSortNodesStrictlyAlphabetically()){
+ comparator = new TaxonNodeByNameComparator();
+ }else {
comparator = new TaxonNodeByRankAndNameComparator();
}
TaxonNodeNavigatorComparator viewerComparator = new TaxonNodeNavigatorComparator(comparator);
conversation = CdmStore.createConversation();
conversation.registerForDataStoreChanges(TaxonNavigator.this);
}
- if (CdmStore.isActive() && cdmEntitySession == null) {
+ if (CdmStore.isActive()) {
cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
CdmApplicationState.getCurrentDataChangeService().register(this);
}
getConversationHolder().commit();
}
}
- getCommonViewer().refresh();
+ if(!getCommonViewer().getTree().isDisposed()){
+ getCommonViewer().refresh();
+ }
}
/**
* Refresh this navigators viewer
*/
- public void refresh(Set objects) {
+ public void refresh(Set<?> objects) {
for(Object obj : objects) {
getCommonViewer().refresh(obj);
}
/** {@inheritDoc} */
@Override
- protected void handleDoubleClick(DoubleClickEvent anEvent) {
- NavigationUtil.executeEditHandler();
+ protected void handleDoubleClick(DoubleClickEvent event) {
+ ISelection selection = event.getSelection();
+ if(selection instanceof IStructuredSelection){
+ Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+ if(firstElement instanceof ICdmBase){
+ NavigationUtil.openEditor((ICdmBase) firstElement);
+ }
+ }
// If the double click is passed up to the super-class it will
// expand/collapse trees.
// We do not want that