(no commit message)
authorn.hoffmann <n.hoffmann@localhost>
Wed, 9 Jun 2010 11:55:13 +0000 (11:55 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 9 Jun 2010 11:55:13 +0000 (11:55 +0000)
15 files changed:
.gitattributes
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/EmptyRoot.java [new file with mode: 0644]
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/OpenTaxonActionProvider.java [deleted file]
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonDropAdapterAssistant.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigator.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNodeContentProvider.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNodeLabelProvider.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNodePropertyTester.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchBar.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultLabelProvider.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultView.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewClassificationWizard.java [moved from taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonomicTreeWizard.java with 71% similarity]
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewClassificationWizardPage.java [moved from taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonomicTreeWizardPage.java with 92% similarity]
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonNodeWizard.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonNodeWizardPage.java

index c959c19b3e59c5ff45e109904ddbe55f2045a9fc..f4d68eb1305ff608a5d4efa14915130e6aa625ae 100644 (file)
@@ -389,7 +389,7 @@ taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/handler/New
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/handler/RefreshTreeHandler.java -text
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/handler/ShowTaxonomicTreeViewHandler.java -text
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/internal/TaxeditorNavigationPlugin.java -text
-taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/OpenTaxonActionProvider.java -text
+taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/EmptyRoot.java -text
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/Root.java -text
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/SynonymContentProvider.java -text
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/SynonymLabelProvider.java -text
@@ -405,10 +405,10 @@ taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/T
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchBar.java -text
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultLabelProvider.java -text
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultView.java -text
+taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewClassificationWizard.java -text
+taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewClassificationWizardPage.java -text
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonNodeWizard.java -text
 taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonNodeWizardPage.java -text
-taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonomicTreeWizard.java -text
-taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonomicTreeWizardPage.java -text
 taxeditor-navigation/src/main/java/log4j.properties -text
 taxeditor-navigation/src/test/java/eu/etaxonomy/taxeditor/navigation/Application.java -text
 taxeditor-navigation/src/test/java/eu/etaxonomy/taxeditor/navigation/ApplicationActionBarAdvisor.java -text
diff --git a/taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/EmptyRoot.java b/taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/EmptyRoot.java
new file mode 100644 (file)
index 0000000..8e79781
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.navigation.navigator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
+
+/**
+ * @author n.hoffmann
+ * @created Mar 23, 2010
+ * @version 1.0
+ */
+public class EmptyRoot extends Root {
+       private static final Logger logger = Logger.getLogger(EmptyRoot.class);
+       
+       public List<TaxonomicTree> getParentBeans() {
+               return new ArrayList<TaxonomicTree>();
+       }
+       
+}
diff --git a/taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/OpenTaxonActionProvider.java b/taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/OpenTaxonActionProvider.java
deleted file mode 100644 (file)
index f6540ca..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-// $Id$\r
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
-package eu.etaxonomy.taxeditor.navigation.navigator;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.jface.action.Action;\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.jface.viewers.StructuredViewer;\r
-import org.eclipse.jface.viewers.TreeSelection;\r
-import org.eclipse.ui.IActionBars;\r
-import org.eclipse.ui.navigator.CommonActionProvider;\r
-import org.eclipse.ui.navigator.ICommonActionConstants;\r
-import org.eclipse.ui.navigator.ICommonActionExtensionSite;\r
-\r
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.taxeditor.navigation.NavigationUtil;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 04.06.2009\r
- * @version 1.0\r
- */\r
-public class OpenTaxonActionProvider extends CommonActionProvider {\r
-       private static final Logger logger = Logger\r
-                       .getLogger(OpenTaxonActionProvider.class);\r
-\r
-       OpenTaxonAction openTaxonAction;\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite)\r
-        */\r
-       public void init(ICommonActionExtensionSite aSite) {\r
-               super.init(aSite);\r
-               openTaxonAction = new OpenTaxonAction(aSite.getStructuredViewer()); \r
-        \r
-       }\r
-\r
-    /* (non-Javadoc)\r
-     * @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)\r
-     */\r
-    public void fillActionBars(IActionBars actionBars) {\r
-        super.fillActionBars(actionBars);\r
-        // forward doubleClick to doubleClickAction\r
-        actionBars.setGlobalActionHandler(ICommonActionConstants.OPEN,\r
-              openTaxonAction);\r
-    }\r
-    \r
-    class OpenTaxonAction extends Action {\r
-\r
-       private StructuredViewer structuredViewer;\r
-\r
-               /**\r
-                * @param structuredViewer\r
-                */\r
-               public OpenTaxonAction(StructuredViewer structuredViewer) {\r
-                       this.structuredViewer = structuredViewer;\r
-               }\r
-\r
-               /* (non-Javadoc)\r
-        * @see org.eclipse.jface.action.Action#run()\r
-        */\r
-       public void run() {\r
-                       ISelection selection = structuredViewer.getSelection();\r
-                       if (selection instanceof TreeSelection) {\r
-                               Object[] selections = ((TreeSelection) selection).toArray();\r
-                               for (Object element : ((TreeSelection) selection).toArray()) {\r
-                                       if (element instanceof TaxonNode) {\r
-                                               NavigationUtil.openEditor((TaxonNode) element);\r
-                                       }                                       \r
-                               }\r
-                       }\r
-               }       \r
-    }\r
-}\r
index 55a65471f0323e3ac7791c05bf3b7da7c5142703..204526304a22795e5a1fccd78569c6b212fdc169 100644 (file)
@@ -110,12 +110,7 @@ public class TaxonDropAdapterAssistant extends CommonDropAdapterAssistant implem
        private IStatus moveTaxon(Set<TaxonNode> taxonNodes, ITreeNode targetITreeNode) {\r
                \r
                TaxonNavigator taxonNavigator;\r
-               try {\r
-                       taxonNavigator = (TaxonNavigator) NavigationUtil.getView(TaxonNavigator.ID);\r
-               } catch (PartInitException e) {\r
-                       logger.error(e);\r
-                       throw new RuntimeException(e);\r
-               }\r
+               taxonNavigator = (TaxonNavigator) NavigationUtil.showView(TaxonNavigator.ID);\r
                \r
                if(targetITreeNode instanceof TaxonNode){\r
                \r
index 7ea32705ce996ae3a00ee163a4efb9422c44817d..0ebba53da6fd4efcf532049be27961f75cdbfedd 100644 (file)
@@ -10,6 +10,7 @@
 \r
 package eu.etaxonomy.taxeditor.navigation.navigator;\r
 \r
+import java.lang.reflect.InvocationTargetException;\r
 import java.util.ArrayList;\r
 import java.util.HashSet;\r
 import java.util.List;\r
@@ -17,16 +18,21 @@ import java.util.Set;
 import java.util.UUID;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.Command;\r
+import org.eclipse.core.commands.common.NotDefinedException;\r
 import org.eclipse.core.runtime.IAdaptable;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;\r
+import org.eclipse.jface.operation.IRunnableWithProgress;\r
+import org.eclipse.jface.viewers.DoubleClickEvent;\r
 import org.eclipse.jface.viewers.TreePath;\r
-import org.eclipse.swt.events.FocusEvent;\r
-import org.eclipse.swt.events.FocusListener;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.IMemento;\r
 import org.eclipse.ui.IViewSite;\r
 import org.eclipse.ui.PartInitException;\r
+import org.eclipse.ui.commands.ICommandService;\r
+import org.eclipse.ui.handlers.IHandlerService;\r
 import org.eclipse.ui.navigator.CommonNavigator;\r
-import org.eclipse.ui.navigator.CommonViewer;\r
 \r
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;\r
@@ -34,6 +40,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;\r
 import eu.etaxonomy.taxeditor.model.DataChangeBridge;\r
 import eu.etaxonomy.taxeditor.model.IDataChangeBehavior;\r
+import eu.etaxonomy.taxeditor.navigation.NavigationUtil;\r
 import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
@@ -50,66 +57,116 @@ public class TaxonNavigator extends CommonNavigator implements IPostOperationEna
 \r
        public static final String ID = "eu.etaxonomy.taxeditor.navigation.navigator"; //$NON-NLS-1$\r
 \r
-       private static final String TREE_PATHS = "treepaths";\r
+       public static final String OPEN_COMMAND_ID = "eu.etaxonomy.taxeditor.navigation.command.editSelection";\r
+       \r
        private static final String TREE_PATH = "treepath";\r
 \r
+       private static final String TREE_PATHS = "treepaths";\r
+\r
        private ConversationHolder conversation;\r
 \r
        private IDataChangeBehavior dataChangeBehavior;\r
 \r
-       private IMemento memento;\r
-       \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.navigator.CommonNavigator#getInitialInput()\r
         */\r
        @Override\r
        protected IAdaptable getInitialInput() {\r
-               conversation = CdmStore.NewTransactionalConversation();\r
-               conversation.registerForDataStoreChanges(this);\r
-               this.getCommonViewer().refresh();\r
-               return new Root();\r
+               if(CdmStore.isActive()){\r
+                       // TODO when closing and reopening the taxon navigator \r
+                       // we do not preserve state. Closing the view, in contrary to closing the whole application\r
+                       // should be handled by the state manager too\r
+                       return new Root();\r
+               }\r
+               return new EmptyRoot();\r
        }\r
        \r
-       public void init(IViewSite site, IMemento memento)\r
+       /**\r
+        * \r
+        */\r
+       public void init(IViewSite site)\r
                        throws PartInitException {\r
-               super.init(site, memento);\r
-               \r
-               this.memento = memento;\r
+               super.init(site);\r
+               if(CdmStore.isActive() && conversation == null){\r
+                       conversation = CdmStore.createConversation();\r
+                       conversation.registerForDataStoreChanges(TaxonNavigator.this);\r
+               }\r
        }\r
        \r
        /**\r
         * Refresh this navigators viewer\r
         */\r
        public void refresh(){\r
+               logger.warn("Refreshing navigator");\r
+               getConversationHolder().bind();\r
                this.getCommonViewer().refresh();\r
        }\r
 \r
-       \r
        /**\r
-        * Restores state from a tree path memento using space-separated\r
-        * Taxon UUIDs.\r
         * \r
         * @param memento\r
         */\r
-       private void restoreState(IMemento memento) {\r
-               if (memento == null) {\r
-                       return;\r
-               }\r
-               Set<TreePath> treePaths = new HashSet<TreePath>();\r
-               memento = memento.getChild(TREE_PATHS);\r
-               if (memento != null) {\r
-                       IMemento[] treePathMementos = memento.getChildren(TREE_PATH);\r
-                       if (treePathMementos.length > 0) {\r
-                               for (IMemento treePathMemento : treePathMementos) {\r
-                                       TreePath treePath = createTreePathFromString(treePathMemento.getID());\r
-                                       if (treePath != null) {\r
-                                               treePaths.add(treePath);\r
+       public void restore(final IMemento memento) {\r
+               \r
+               ProgressMonitorDialog progressMonitorDialog = new ProgressMonitorDialog(NavigationUtil.getShell());\r
+               IRunnableWithProgress runnable = new IRunnableWithProgress() {\r
+                       \r
+                       @Override\r
+                       public void run(IProgressMonitor monitor) throws InvocationTargetException,\r
+                                       InterruptedException {\r
+                               monitor.setTaskName("Restoring Taxon Navigator");\r
+                               int mementoWork = 0;\r
+                               Set<TreePath> treePaths = new HashSet<TreePath>();\r
+                               IMemento[] treePathMementos = null;\r
+                               if (memento != null) {\r
+                                       \r
+                                       \r
+                                       IMemento treePathsMemento = memento.getChild(TREE_PATHS);\r
+                                       \r
+                                       if (treePathsMemento != null) {\r
+                                               treePathMementos = treePathsMemento.getChildren(TREE_PATH);\r
+                                               mementoWork = treePathMementos.length;\r
+                                       }\r
+                               }\r
+                               // begin the monitor with steps for all tree paths and steps for creating \r
+                               // conversation s.o., refreshing the tree and setting the paths \r
+                               monitor.beginTask("Restoring Taxon Navigator", 1 + mementoWork + 5);\r
+                               monitor.worked(1);\r
+                               \r
+                               conversation = CdmStore.createConversation();\r
+                               monitor.worked(1);\r
+                               conversation.registerForDataStoreChanges(TaxonNavigator.this);\r
+                               monitor.worked(1);\r
+                               TaxonNavigator.this.getCommonViewer().setInput(new Root());\r
+                               monitor.worked(1);\r
+                               TaxonNavigator.this.getCommonViewer().refresh();\r
+                               monitor.worked(1);\r
+                               \r
+                               \r
+                               \r
+                               if (treePathMementos != null && treePathMementos.length > 0) {\r
+                                       for (IMemento treePathMemento : treePathMementos) {\r
+                                               TreePath treePath = createTreePathFromString(treePathMemento.getID());\r
+                                               if (!monitor.isCanceled() && treePath != null) {\r
+                                                       treePaths.add(treePath);\r
+                                                       monitor.worked(1);\r
+                                               }\r
                                        }\r
                                }\r
+                               if (treePaths.size() > 0) {\r
+                                       TaxonNavigator.this.getCommonViewer().setExpandedTreePaths(treePaths.toArray(new TreePath[0]));\r
+                                       monitor.worked(1);\r
+                               }\r
+                               monitor.done();\r
                        }\r
-               }\r
-               if (treePaths.size() > 0) {\r
-                       this.getCommonViewer().setExpandedTreePaths(treePaths.toArray(new TreePath[0]));\r
+               };\r
+               \r
+               try {\r
+                       progressMonitorDialog.run(false, true, runnable);\r
+               } catch (InvocationTargetException e) {\r
+                       logger.error("InvocationTargetException when trying to restore navigator", e);\r
+               } catch (InterruptedException e) {\r
+                       logger.error("InterruptedException when trying to restore navigator", e);\r
                }\r
        }\r
 \r
@@ -136,37 +193,57 @@ public class TaxonNavigator extends CommonNavigator implements IPostOperationEna
                return new TreePath(pathList.toArray());\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.ui.navigator.CommonNavigator#saveState(org.eclipse.ui.IMemento)\r
-        */\r
-       public void saveState(IMemento memento) {\r
 \r
-               super.saveState(memento);\r
-               \r
-               memento = memento.createChild(TREE_PATHS);\r
-               TreePath[] treePaths = this.getCommonViewer().getExpandedTreePaths();\r
-               for (TreePath treePath : treePaths) {\r
-                       int pathLength = treePath.getSegmentCount();\r
-                       String path = "";\r
-                       for (int i = 0; i < pathLength; i++) {\r
-                               Object segment = treePath.getSegment(i);\r
-                               if (segment instanceof CdmBase) {\r
-                                       path += ((CdmBase) segment).getUuid().toString() + " ";\r
-                               } else {\r
-                                       logger.warn("Non-taxon tree path segment " + segment);\r
+       @Override\r
+       public void saveState(IMemento aMemento) {\r
+               //\r
+       }\r
+       \r
+       public void saveTreeState(IMemento memento) {\r
+\r
+               if (memento != null) {\r
+                       super.saveState(memento);\r
+                       \r
+                       memento = memento.createChild(TREE_PATHS);\r
+                       TreePath[] treePaths = this.getCommonViewer().getExpandedTreePaths();\r
+                       for (TreePath treePath : treePaths) {\r
+                               int pathLength = treePath.getSegmentCount();\r
+                               String path = "";\r
+                               for (int i = 0; i < pathLength; i++) {\r
+                                       Object segment = treePath.getSegment(i);\r
+                                       if (segment instanceof CdmBase) {\r
+                                               path += ((CdmBase) segment).getUuid().toString() + " ";\r
+                                       } else {\r
+                                               logger.warn("Non-taxon tree path segment " + segment);\r
+                                       }\r
                                }\r
+                               logger.info("Creating memento child for path " + path.trim());\r
+                               memento.createChild(TREE_PATH, path.trim());\r
                        }\r
-                       logger.info("Creating memento child for path " + path.trim());\r
-                       memento.createChild(TREE_PATH, path.trim());\r
+               } else {\r
+                       logger.warn("TreeState could not be saved: Memento is null");\r
                }\r
        }\r
        \r
+       /**\r
+        * Activates the current view.\r
+        */\r
+       private void activateView() {\r
+                  getSite().getPage().activate(this);\r
+       }\r
+       \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.navigator.CommonNavigator#createPartControl(org.eclipse.swt.widgets.Composite)\r
         */\r
        public void createPartControl(Composite aParent) {\r
                super.createPartControl(aParent);\r
-               restoreState(memento);          \r
+               \r
+               // It seems the workbench does not set the focus at the right time. This should fix this.\r
+//             getCommonViewer().addSelectionChangedListener(new ISelectionChangedListener() {\r
+//                public void selectionChanged(SelectionChangedEvent event) {\r
+//                          activateView();\r
+//                }\r
+//             });\r
        }\r
        \r
 \r
@@ -205,7 +282,6 @@ public class TaxonNavigator extends CommonNavigator implements IPostOperationEna
                if(conversation != null){\r
                        conversation.unregisterForDataStoreChanges(this);\r
                }\r
-               conversation.close();\r
        }\r
        \r
        /* (non-Javadoc)\r
@@ -213,8 +289,11 @@ public class TaxonNavigator extends CommonNavigator implements IPostOperationEna
         */\r
        @Override\r
        public void setFocus() {\r
+               //logger.warn("Setting focus to navigator");\r
                super.setFocus();\r
-               getConversationHolder().bind();\r
+               if(getConversationHolder() != null){\r
+                       getConversationHolder().bind();\r
+               }\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -224,4 +303,41 @@ public class TaxonNavigator extends CommonNavigator implements IPostOperationEna
                // nothing to do here\r
                return true;\r
        }\r
+\r
+       public void save(IMemento memento) {\r
+               saveTreeState(memento);\r
+               if(conversation != null){\r
+                       conversation.unregisterForDataStoreChanges(this);\r
+                       conversation = null;\r
+               }\r
+//             this.getCommonViewer().setInput(new EmptyRoot());\r
+       }\r
+\r
+//     @Override\r
+//     public ISelection getSelection() {\r
+//             return getCommonViewer().getSelection();\r
+//     }\r
+       \r
+       /**\r
+        * @see http://www.eclipse.org/forums/index.php?t=msg&goto=512094&\r
+        */\r
+       @Override\r
+       protected void handleDoubleClick(DoubleClickEvent anEvent) {\r
+               \r
+               ICommandService commandService = (ICommandService)getSite().getService(ICommandService.class);\r
+               \r
+               Command command = commandService.getCommand(OPEN_COMMAND_ID); \r
+               if(command.isEnabled()) {\r
+                       IHandlerService handlerService = (IHandlerService)getSite().getService(IHandlerService.class);\r
+                       try {\r
+                               handlerService.executeCommand(OPEN_COMMAND_ID, null);\r
+                       } catch (NotDefinedException e) {\r
+                               throw new RuntimeException("Could not find open command: " + OPEN_COMMAND_ID);\r
+                       } catch (Exception e) {\r
+                               logger.error("An exception occured while trying to open a selection", e);\r
+                       }\r
+               }\r
+               // Pass the double click up to the super-class so it can expand/collapse trees\r
+               super.handleDoubleClick(anEvent);\r
+       }\r
 }
\ No newline at end of file
index fe1563834bf4ff4c17e994dddbb115faa6d89e65..4fa93232c40dc019711c99eeee80214cd50ad0f2 100644 (file)
@@ -33,7 +33,7 @@ public class TaxonNodeContentProvider implements ITreeContentProvider {
                if (parentElement instanceof TaxonNode) {\r
                        children = ((TaxonNode) parentElement).getChildNodes().toArray();\r
                } else if (parentElement instanceof TaxonomicTree) {\r
-                       children = ((TaxonomicTree) parentElement).getRootNodes().toArray();\r
+                       children = ((TaxonomicTree) parentElement).getChildNodes().toArray();\r
                }\r
                return children != null ? children : NO_CHILDREN;\r
        }\r
@@ -46,10 +46,7 @@ public class TaxonNodeContentProvider implements ITreeContentProvider {
        }\r
 \r
        public boolean hasChildren(Object element) {\r
-               \r
-               boolean length = this.getChildren(element).length > 0;\r
-               \r
-               return length;\r
+               return this.getChildren(element).length > 0;\r
        }\r
 \r
        public Object[] getElements(Object inputElement) {\r
index 119ccf16bce15f6d8104cf840f07fab52ee62685..f16e1c87d4bfb8d5ab3a7916964c1cd1afbce0f3 100644 (file)
@@ -31,14 +31,25 @@ public class TaxonNodeLabelProvider extends ColumnLabelProvider
        private static final Logger logger = Logger\r
                        .getLogger(TaxonNodeLabelProvider.class);\r
        \r
+       @Override\r
        public Image getImage(Object element) {\r
                return null;\r
        }\r
 \r
+       @Override\r
        public String getText(Object element) {\r
                if (element instanceof TaxonNode){\r
                        Taxon taxon = ((TaxonNode) element).getTaxon();\r
-                       return taxon.getName() != null ? taxon.getName().getTitleCache() : new String();\r
+                       if(taxon == null){\r
+                               logger.error("The taxon node does not have a taxon attached to it. Please check your import. TaxonNode: " + element);\r
+//                             throw new RuntimeException("The data your are trying to view is corrupt. Please check your import.");\r
+                       }else{\r
+                               try{\r
+                                       return taxon.getName() != null ? taxon.getName().getTitleCache() : new String();\r
+                               }catch(Exception e){\r
+                                       logger.error("", e);\r
+                               }\r
+                       }\r
                }\r
                return new String();\r
        }\r
index 132f11aacc55513f06a79f43cee59f8d36f44e85..6d73071ac5d8d46150dcfc0dc079bfccd3664706 100644 (file)
@@ -18,12 +18,14 @@ public class TaxonNodePropertyTester extends PropertyTester {
                        Object expectedValue) {\r
                if (receiver instanceof TaxonNode && HAS_SYNONYMS.equals(property)) {\r
                        Taxon taxon = ((TaxonNode) receiver).getTaxon();\r
-                       return taxon.hasSynonyms();\r
+                       if(taxon != null){\r
+                               return taxon.hasSynonyms();\r
+                       }\r
                }\r
 \r
                if (receiver instanceof TaxonomicTree && HAS_TAXA.equals(property)) {\r
                        TaxonomicTree taxononomicTree = (TaxonomicTree) receiver;\r
-                       return taxononomicTree.getRootNodes().size() > 0;\r
+                       return taxononomicTree.getChildNodes().size() > 0;\r
                }\r
                \r
                return false;\r
index 17ac7fcb47efde0ef97d07364913b874ab599705..f06216fa78846239a020f37315ccd7d6cd21e662 100644 (file)
@@ -36,9 +36,10 @@ import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
 import org.eclipse.ui.swt.IFocusService;
 
 import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;
-import eu.etaxonomy.taxeditor.model.Resources;
+import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.Resources;
 
 /**
  * @author n.hoffmann
@@ -108,7 +109,7 @@ public class SearchBar extends WorkbenchWindowControlContribution{
                // is applied. I am not sure how to get rid of this.
                text_search = new Text(composite, SWT.BORDER | SWT.SINGLE
                                | SWT.FULL_SELECTION);
-               text_search.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));
+               text_search.setForeground(NavigationUtil.getColor(Resources.SEARCH_VIEW_FOREGROUND));
                text_search.setText(defaultText);
 
                addTextListeners();
@@ -121,7 +122,7 @@ public class SearchBar extends WorkbenchWindowControlContribution{
                text_search.addFocusListener(new FocusListener() {
 
                        public void focusGained(FocusEvent e) {
-                               text_search.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOCUS));
+                               text_search.setForeground(NavigationUtil.getColor(Resources.SEARCH_VIEW_FOCUS));
                                if (defaultText.equals(text_search.getText())) {
                                        text_search.setText("");
                                }
@@ -129,7 +130,7 @@ public class SearchBar extends WorkbenchWindowControlContribution{
 
                        public void focusLost(FocusEvent e) {
                                if (text_search.getText() == "") {
-                                       text_search.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));
+                                       text_search.setForeground(NavigationUtil.getColor(Resources.SEARCH_VIEW_FOREGROUND));
                                        text_search.setText(defaultText);
                                }
                        }
index 105dd04f291433897bbf3aa365891138fe301656..c4ac48821210851a6aef11d9fbe39b536d18ce87 100644 (file)
@@ -21,6 +21,7 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
+import eu.etaxonomy.taxeditor.preference.Resources;
 
 /**
  * @author n.hoffmann
@@ -31,7 +32,7 @@ public class SearchResultLabelProvider extends ColumnLabelProvider implements IL
        
        public String getText(Object element) {
                if(element instanceof TaxonBase<?>){
-                       return ((TaxonBase<?>) element).getName().getTitleCache();
+                       return ((TaxonBase<?>) element).getTitleCache();
                }
                return element.toString();
        }
@@ -50,11 +51,11 @@ public class SearchResultLabelProvider extends ColumnLabelProvider implements IL
        @Override
        public Font getFont(Object element) {
                if(element instanceof Taxon){
-                       return NavigationUtil.getFontRegistry().get("eu.etaxonomy.taxeditor.preferences.searchResult.fontAccepted");
+                       return NavigationUtil.getFont(Resources.FONT_SEARCH_VIEW_ACCEPTED);
                }else if(element instanceof Synonym){
-                       return NavigationUtil.getFontRegistry().get("eu.etaxonomy.taxeditor.preferences.searchResult.fontSynonym");
+                       return NavigationUtil.getFont(Resources.FONT_SEARCH_VIEW_SYNONYM);
                }else{
-                       return NavigationUtil.getFontRegistry().get("eu.etaxonomy.taxeditor.preferences.searchResult.fontDefault");
+                       return NavigationUtil.getFont(Resources.FONT_SEARCH_VIEW_OTHER);
                }
        }
 
index 9a4635d27a463bdf4da8c5a25adb4e8565341849..3753ece3bce5f32f3c107afd1d6cf39bd2a52572 100644 (file)
@@ -22,7 +22,6 @@ import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.ArrayContentProvider;\r
 import org.eclipse.jface.viewers.DoubleClickEvent;\r
 import org.eclipse.jface.viewers.IDoubleClickListener;\r
-import org.eclipse.jface.viewers.StructuredSelection;\r
 import org.eclipse.jface.viewers.TableViewer;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.layout.GridData;\r
@@ -62,8 +61,6 @@ public class SearchResultView extends ViewPart implements IConversationEnabled{
 \r
        private ConversationHolder conversation;\r
 \r
-       private ITaxonServiceConfigurator configurator;\r
-\r
        private Text searchString;\r
 \r
        private Text configurationLabel;\r
@@ -78,7 +75,8 @@ public class SearchResultView extends ViewPart implements IConversationEnabled{
         */\r
        @Override\r
        public void createPartControl(Composite parent) {\r
-               conversation = CdmStore.NewTransactionalConversation();\r
+               \r
+               conversation = CdmStore.createConversation();\r
                \r
                GridLayout layout = new GridLayout();\r
                layout.marginWidth = 0;\r
@@ -88,21 +86,20 @@ public class SearchResultView extends ViewPart implements IConversationEnabled{
                \r
                Composite infoComposite = createInfoComposite(parent);\r
                infoComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));\r
-//             infoComposite.setBackground(Resources.getColor(Resources.PROP_SHEET_RED));\r
                \r
                resultViewer = new TableViewer(parent, SWT.NONE);\r
                resultViewer.setContentProvider(new ArrayContentProvider());\r
                resultViewer.setLabelProvider(new SearchResultLabelProvider());\r
                resultViewer.addDoubleClickListener(new IDoubleClickListener() {\r
                        public void doubleClick(DoubleClickEvent event) {\r
-                               Object selection = ((StructuredSelection) event.getSelection()).getFirstElement();\r
-                               \r
-                               NavigationUtil.openSearch(selection);\r
+                               NavigationUtil.executeEditHandler();\r
                        }\r
                });\r
                \r
                resultViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
                \r
+               getSite().setSelectionProvider(resultViewer);\r
+               \r
                // register context menu\r
                MenuManager menuMgr = new MenuManager();\r
                menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));\r
@@ -144,7 +141,6 @@ public class SearchResultView extends ViewPart implements IConversationEnabled{
        }\r
        \r
        public void performSearch(ITaxonServiceConfigurator configurator){\r
-               this.configurator = configurator;\r
                setPartName("Search: '" + configurator.getSearchString() + "'");\r
                \r
                searchString.setText(configurator.getSearchString());\r
@@ -190,6 +186,7 @@ public class SearchResultView extends ViewPart implements IConversationEnabled{
         */\r
        @Override\r
        public void setFocus() {\r
+               //logger.warn("Setting focus to search result viewer");\r
                conversation.bind();\r
                // pass focus to resultViewer\r
                resultViewer.getControl().setFocus();\r
@@ -263,5 +260,4 @@ public class SearchResultView extends ViewPart implements IConversationEnabled{
                }\r
                \r
        }\r
-\r
 }\r
similarity index 71%
rename from taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonomicTreeWizard.java
rename to taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewClassificationWizard.java
index 0dfbd5c67720f1edff0a86608f61202167785f56..be32b18bd42f00c0200f9e782cf522ee611523d4 100644 (file)
@@ -16,7 +16,6 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PartInitException;
 
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
@@ -27,19 +26,16 @@ import eu.etaxonomy.taxeditor.operations.CreateTaxonomicTreeOperation;
  * @created 23.06.2009
  * @version 1.0
  */
-public class NewTaxonomicTreeWizard extends Wizard implements INewWizard {
+public class NewClassificationWizard extends Wizard implements INewWizard {
        private static final Logger logger = Logger
-                       .getLogger(NewTaxonomicTreeWizard.class);
+                       .getLogger(NewClassificationWizard.class);
 
-       public static final String NEW_TAXONOMIC_TREE = "NEW_TAXONOMIC_TREE";
+       public static final String NEW_CLASSIFICATION = "NEW_CLASSIFICATION";
 
-       private NewTaxonomicTreeWizardPage page;
-       
-       /**
-        * 
-        */
-       public NewTaxonomicTreeWizard() {
-               this.setWindowTitle("New Taxonomic Tree");
+       private NewClassificationWizardPage page;
+               
+       public NewClassificationWizard(){
+               setWindowTitle("New Classification");
        }
        
        /* (non-Javadoc)
@@ -49,7 +45,7 @@ public class NewTaxonomicTreeWizard extends Wizard implements INewWizard {
        public void addPages() {
                super.addPages();
                
-               page = new NewTaxonomicTreeWizardPage(NEW_TAXONOMIC_TREE);
+               page = new NewClassificationWizardPage(NEW_CLASSIFICATION);
                
                addPage(page);
        }
@@ -61,19 +57,14 @@ public class NewTaxonomicTreeWizard extends Wizard implements INewWizard {
        public boolean performFinish() {
 
                TaxonNavigator taxonNavigator;
-               try {
-                       taxonNavigator = (TaxonNavigator) NavigationUtil.getView(TaxonNavigator.ID);
-               } catch (PartInitException e) {
-                       logger.error(e);
-                       throw new RuntimeException(e);
-               }
+               taxonNavigator = (TaxonNavigator) NavigationUtil.showView(TaxonNavigator.ID);
                
-               AbstractOperation operation = new CreateTaxonomicTreeOperation("Create Taxonomic Tree", 
+               AbstractOperation operation = new CreateTaxonomicTreeOperation("Create Classification", 
                                NavigationUtil.getUndoContext(), page.getTreeLabel(), page.getReferenceUuid(), page.getMicroReference(),
                                taxonNavigator, taxonNavigator);
                NavigationUtil.executeOperation(operation);
 
-               NavigationUtil.getNavigator().getCommonViewer().refresh();
+               NavigationUtil.showNavigator().getCommonViewer().refresh();
                
                return true;
        }
similarity index 92%
rename from taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewTaxonomicTreeWizardPage.java
rename to taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/newWizards/NewClassificationWizardPage.java
index e2a01e7b33c741360f1e6c336b88d05af6da2964..ad4b192ac0819c416ecf59569f4189a9a61de1cb 100644 (file)
@@ -19,7 +19,6 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.layout.GridData;
@@ -37,9 +36,9 @@ import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
  * @created 23.06.2009
  * @version 1.0
  */
-public class NewTaxonomicTreeWizardPage extends WizardPage implements ModifyListener {
+public class NewClassificationWizardPage extends WizardPage implements ModifyListener {
        private static final Logger logger = Logger
-                       .getLogger(NewTaxonomicTreeWizardPage.class);
+                       .getLogger(NewClassificationWizardPage.class);
 
        private Text text_treeLabel;
 
@@ -54,11 +53,11 @@ public class NewTaxonomicTreeWizardPage extends WizardPage implements ModifyList
        /**
         * @param pageName
         */
-       protected NewTaxonomicTreeWizardPage(String pageName) {
+       protected NewClassificationWizardPage(String pageName) {
                super(pageName);
-               this.setTitle("Taxonomic Tree");
+               this.setTitle("Classification");
                
-               this.setDescription("Create a new Taxonomic Tree.");
+               this.setDescription("Create a new Classification.");
        }
        
        /* (non-Javadoc)
index 089fe27089b2eec974f879d3e69ce4bb9ef1a10d..322237641bd20f74b04f296d3e3ba5a9e1658e83 100644 (file)
@@ -10,7 +10,6 @@ import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PartInitException;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.taxon.ITreeNode;
@@ -38,17 +37,24 @@ public class NewTaxonNodeWizard extends Wizard implements INewWizard, IPostOpera
        private boolean openEmptyEditor = false;
        
        public NewTaxonNodeWizard() {
-               this.setWindowTitle("New Taxon Node");
+               this.setWindowTitle("New Taxon");
+               selection = getNavigatorSelection();
        }
 
-       
-       
        /**
-        * @param selection
+        * Retrieve the current selection from taxon navigator
+        * 
+        * @return
         */
-       public NewTaxonNodeWizard(StructuredSelection selection) {
-               this();
-               this.selection = selection;
+       private IStructuredSelection getNavigatorSelection() {
+               StructuredSelection selection = null;
+               TaxonNavigator navigator = NavigationUtil.getNavigator(false);
+               
+               if(navigator != null){
+                       selection = (StructuredSelection) navigator.getCommonViewer().getSelection();
+               }
+               
+               return selection;
        }
 
 
@@ -56,17 +62,12 @@ public class NewTaxonNodeWizard extends Wizard implements INewWizard, IPostOpera
        @Override
        public boolean performFinish() {
                TaxonNavigator taxonNavigator;
-               try {
-                       taxonNavigator = (TaxonNavigator) NavigationUtil.getView(TaxonNavigator.ID);
-               } catch (PartInitException e) {
-                       logger.error(e);
-                       throw new RuntimeException(e);
-               }
+               taxonNavigator = (TaxonNavigator) NavigationUtil.showView(TaxonNavigator.ID);
                
                if(page.getTaxonName() == null || page.getTaxonName().getFullTitleCache().length() == 0){
                        openEmptyEditor = true;
                }else{                  
-                       AbstractOperation operation = new CreateTaxonNodeOperation("Create Taxon Node", 
+                       AbstractOperation operation = new CreateTaxonNodeOperation("Create Taxon", 
                                        NavigationUtil.getUndoContext(), page.getParentNode(), page.getTaxonName(), this, taxonNavigator);
                        NavigationUtil.executeOperation(operation);
        
index 51893dcecb29d5a97c62b6c954bfec245a84f1ca..cd36dd88085a09aaffca71abd89f91e16a31af8f 100644 (file)
@@ -49,6 +49,8 @@ public class NewTaxonNodeWizardPage extends WizardPage implements ModifyListener
        
        private static final String BUTTON_TEXT_BROWSE = "Browse";
        
+       private static final String ERROR_MESSAGE_TAXONOMIC_TREE_EMPTY = "Taxonomic Tree must not be empty";
+
        private TaxonomicTree taxonomicTree;
        
        private ParseHandler parseHandler;
@@ -83,7 +85,7 @@ public class NewTaxonNodeWizardPage extends WizardPage implements ModifyListener
         * @param pageName
         */
        protected NewTaxonNodeWizardPage(IStructuredSelection selection) {
-               super("New Taxon Node");
+               super("New Taxon");
                
                if(selection != null && selection.size() == 1){
                        if(selection.getFirstElement() instanceof ITreeNode){
@@ -253,8 +255,9 @@ public class NewTaxonNodeWizardPage extends WizardPage implements ModifyListener
                        if (parentTaxonNode != null) {
                                text_parentTaxonNode.setText(parentTaxonNode.getTaxon().getTitleCache());
                                text_taxonomicTree.setText(parentTaxonNode.getTaxonomicTree().getTitleCache());
+
+                               
                        }
-                       text_taxonomicTree.setText(parentTaxonNode.getTaxonomicTree().getTitleCache());
                        setPageComplete(true);
                }
                
@@ -330,9 +333,21 @@ public class NewTaxonNodeWizardPage extends WizardPage implements ModifyListener
         * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
         */
        public void modifyText(ModifyEvent e) {
+               if (e.getSource().equals(text_taxonomicTree)) {
+                       if (! "".equals(text_taxonomicTree.getText())) {
+                               setErrorMessage(null);
+                       }
+               }
+               
                if (e.getSource().equals(text_taxonName)) {
+                       // Set error message if taxonomic tree was not chosen
+                       if ("".equals(text_taxonomicTree.getText())) {
+                               setErrorMessage(ERROR_MESSAGE_TAXONOMIC_TREE_EMPTY);
+                       }
+                       
                        taxonName = parseHandler.parse();
                }
+               
                updatePage();
        }       
 }