Fixes #2681
authorl.morris <l.morris@localhost>
Mon, 23 Jan 2012 14:35:41 +0000 (14:35 +0000)
committerl.morris <l.morris@localhost>
Mon, 23 Jan 2012 14:35:41 +0000 (14:35 +0000)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/handler/CreateConceptRelationHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionElementsHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredCdmResourceSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonBaseSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/TaxonomicScopeSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonSelectionElement.java

index 7168f5bd1242c14f0ecc6fc59293fb08d219590c..4ba5ee029d6087a31a849a90c466519bf42f4056 100644 (file)
@@ -46,7 +46,9 @@ public class CreateConceptRelationHandler extends AbstractHandler {
                TaxonNameEditor editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(
                                Page.NAME);
                
-               Taxon relatedConcept = TaxonBaseSelectionDialog.selectTaxon(HandlerUtil.getActiveShell(event), editor.getConversationHolder());
+               Taxon taxonToBeFiltered = editor.getTaxon();
+               
+               Taxon relatedConcept = TaxonBaseSelectionDialog.selectTaxon(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), taxonToBeFiltered);
                                
                if(relatedConcept == null){
                        return Status.CANCEL_STATUS;
index 48cc72107964f3f91e56dd88116d32577c5c3dbe..8448919f41af6f39061b216c37b1e0834a039cd1 100644 (file)
@@ -35,6 +35,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonBaseSelectionDialog;
 
+
 /**
  * @author n.hoffmann
  * @created Feb 8, 2011
@@ -66,7 +67,7 @@ public class MoveDescriptionElementsHandler extends AbstractHandler {
                                }
                        }
                        
-                       Taxon targetTaxon = TaxonBaseSelectionDialog.selectTaxon(HandlerUtil.getActiveShell(event), EditorUtil.getActiveMultiPageTaxonEditor().getConversationHolder());
+                       Taxon targetTaxon = TaxonBaseSelectionDialog.selectTaxon(HandlerUtil.getActiveShell(event), EditorUtil.getActiveMultiPageTaxonEditor().getConversationHolder(), null);
                                                
                        TaxonDescription targetDescription = TaxonDescription.NewInstance(targetTaxon);
                        targetDescription.setTitleCache(String.format("Copied from %s", EditorUtil.getActiveMultiPageTaxonEditor().getTaxon()), true);
index c51b626e53d463af01d0dd69b7aa78a66ed398b1..4f024bd3c8ae041a3047f3a08c874ade6aed3193 100644 (file)
@@ -67,6 +67,8 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
        private Set<T> transientCdmObjects = new HashSet<T>();
        private String settings;        
        
+       protected T cdmBaseToBeFiltered;
+       
        /**
         * <p>Constructor for AbstractFilteredCdmResourceSelectionDialog.</p>
         *
@@ -217,6 +219,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
        @Override
        public void refresh() {
                initModel();
+               filterExcludedObjects();
                super.refresh();
        }
        
@@ -488,4 +491,22 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
        
        /** {@inheritDoc} */
        public void update(CdmDataChangeMap changeEvents) {}
+
+       /**
+        * Don't want to add a taxon or synonym to itself so filter the list to remove the taxon in question
+        * so it is not available to add as a concept relation
+        */
+       private void filterExcludedObjects() {
+               if (model != null && cdmBaseToBeFiltered != null) {
+                       
+                       UuidAndTitleCache uuidAndTitleCacheToRemove = null;
+                                               
+                       for (UuidAndTitleCache uuidAndTitleCache : model){
+                               if ((cdmBaseToBeFiltered.getUuid()).equals(uuidAndTitleCache.getUuid())) {
+                                       uuidAndTitleCacheToRemove = uuidAndTitleCache;
+                               }                               
+                       }
+                       model.remove(uuidAndTitleCacheToRemove);
+               }
+       }
 }
index 062fcc1f39d9200e59f6b309fbc944e8fac26904..99e5890e83e29da2616fd2f3863ebce081685680 100644 (file)
-// $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.ui.dialog.selection;
-
-import java.util.UUID;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-
-/**
- * <p>FilteredTaxonBaseSelectionDialog class.</p>
- *
- * @author n.hoffmann
- * @created Sep 21, 2009
- * @version 1.0
- */
-public class TaxonBaseSelectionDialog extends
-               AbstractFilteredCdmResourceSelectionDialog<TaxonBase> {
-               
-       /**
-        * <p>select</p>
-        *
-        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
-        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
-        * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.
-        */
-       public static TaxonBase selectTaxonBase(Shell shell, ConversationHolder conversation) {
-               TaxonBaseSelectionDialog dialog = new TaxonBaseSelectionDialog(TaxonBase.class, shell, conversation,
-                               "Choose a taxon", false, null);
-               return getSelectionFromDialog(dialog);
-       }
-       
-       /**
-        * <p>select</p>
-        *
-        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
-        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
-        * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.
-        */
-       public static Taxon selectTaxon(Shell shell, ConversationHolder conversation) {
-               TaxonBaseSelectionDialog dialog = new TaxonBaseSelectionDialog(Taxon.class, shell, conversation,
-                               "Choose a taxon", false, null);
-               return (Taxon) getSelectionFromDialog(dialog);
-       }
-       
-       /**
-        * <p>select</p>
-        *
-        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
-        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
-        * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.
-        */
-       public static Synonym selectSynonym(Shell shell, ConversationHolder conversation) {
-               TaxonBaseSelectionDialog dialog = new TaxonBaseSelectionDialog(Synonym.class, shell, conversation,
-                               "Choose a taxon", false, null);
-               return (Synonym) getSelectionFromDialog(dialog);
-       }
-
-       private final Class<? extends TaxonBase> clazz;
-       
-       /**
-        * <p>Constructor for FilteredTaxonBaseSelectionDialog.</p>
-        *
-        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
-        * @param title a {@link java.lang.String} object.
-        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
-        * @param multi a boolean.
-        * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.
-        */
-       protected TaxonBaseSelectionDialog(Class<? extends TaxonBase> clazz, Shell shell, ConversationHolder conversation, String title, boolean multi, TaxonBase taxon) {
-               super(shell, conversation, title, multi, ReferenceSelectionDialog.class.getCanonicalName(), taxon);
-               this.clazz = clazz;
-       }
-
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite)
-        */
-       /** {@inheritDoc} */
-       @Override
-       protected Control createExtendedContentArea(Composite parent) {
-               return null;
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
-        */
-       /** {@inheritDoc} */
-       @Override
-       protected TaxonBase getPersistentObject(UUID uuid) {
-               return CdmStore.getService(ITaxonService.class).load(uuid);
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
-        */
-       /** {@inheritDoc} */
-       @Override
-       protected void initModel() {
-               if(clazz == TaxonBase.class){
-                       model = CdmStore.getService(ITaxonService.class).getUuidAndTitleCache();
-               }
-               else if(clazz == Taxon.class){
-                       model = CdmStore.getService(ITaxonService.class).getUuidAndTitleCacheTaxon();
-               }
-               else if(clazz == Synonym.class){
-                       model = CdmStore.getService(ITaxonService.class).getUuidAndTitleCacheSynonym();
-               }
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
-               return null;
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       protected String getNewWizardLinkText() {
-               return null;
-       }
-}
+// $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.ui.dialog.selection;\r
+\r
+import java.util.UUID;\r
+\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.swt.widgets.Shell;\r
+\r
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
+import eu.etaxonomy.cdm.api.service.ITaxonService;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+/**\r
+ * <p>FilteredTaxonBaseSelectionDialog class.</p>\r
+ *\r
+ * @author n.hoffmann\r
+ * @created Sep 21, 2009\r
+ * @version 1.0\r
+ */\r
+public class TaxonBaseSelectionDialog extends\r
+               AbstractFilteredCdmResourceSelectionDialog<TaxonBase> {\r
+       \r
+               \r
+       /**\r
+        * <p>select</p>\r
+        *\r
+        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.\r
+        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.\r
+        * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.\r
+        */\r
+       public static TaxonBase selectTaxonBase(Shell shell, ConversationHolder conversation) {\r
+               AbstractFilteredCdmResourceSelectionDialog<TaxonBase> dialog = new TaxonBaseSelectionDialog(TaxonBase.class, shell, conversation,\r
+                               "Choose a taxon", false, null, null);\r
+               return getSelectionFromDialog(dialog);\r
+       }\r
+       \r
+       /**\r
+        * <p>select</p>\r
+        *\r
+        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.\r
+        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.\r
+        * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.\r
+        */\r
+       public static Taxon selectTaxon(Shell shell, ConversationHolder conversation, Taxon taxonToBeFiltered) {\r
+               \r
+\r
+               AbstractFilteredCdmResourceSelectionDialog<TaxonBase> dialog = new TaxonBaseSelectionDialog(Taxon.class, shell, conversation,\r
+                               "Choose a taxon", false, null, taxonToBeFiltered);\r
+               return (Taxon) getSelectionFromDialog(dialog);\r
+       }\r
+       \r
+       /**\r
+        * <p>select</p>\r
+        *\r
+        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.\r
+        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.\r
+        * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.\r
+        */\r
+       public static Synonym selectSynonym(Shell shell, ConversationHolder conversation) {\r
+               AbstractFilteredCdmResourceSelectionDialog<TaxonBase> dialog = new TaxonBaseSelectionDialog(Synonym.class, shell, conversation,\r
+                               "Choose a taxon", false, null, null);\r
+               return (Synonym) getSelectionFromDialog(dialog);\r
+       }\r
+\r
+       private final Class<? extends TaxonBase> clazz;\r
+       \r
+       /**\r
+        * <p>Constructor for FilteredTaxonBaseSelectionDialog.</p>\r
+        *\r
+        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.\r
+        * @param title a {@link java.lang.String} object.\r
+        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.\r
+        * @param multi a boolean.\r
+        * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.\r
+        */\r
+       protected TaxonBaseSelectionDialog(Class<? extends TaxonBase> clazz, Shell shell, ConversationHolder conversation, String title, boolean multi, TaxonBase taxon, TaxonBase taxonToBeFiltered) {\r
+               super(shell, conversation, title, multi, ReferenceSelectionDialog.class.getCanonicalName(), taxon);\r
+               this.cdmBaseToBeFiltered = taxonToBeFiltered;\r
+\r
+               \r
+               \r
+               this.clazz = clazz;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite)\r
+        */\r
+       /** {@inheritDoc} */\r
+       @Override\r
+       protected Control createExtendedContentArea(Composite parent) {\r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)\r
+        */\r
+       /** {@inheritDoc} */\r
+       @Override\r
+       protected TaxonBase getPersistentObject(UUID uuid) {\r
+               return CdmStore.getService(ITaxonService.class).load(uuid);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()\r
+        */\r
+       /** {@inheritDoc} */\r
+       @Override\r
+       protected void initModel() {\r
+               if(clazz == TaxonBase.class){\r
+                       model = CdmStore.getService(ITaxonService.class).getUuidAndTitleCache();\r
+               }\r
+               else if(clazz == Taxon.class){\r
+                                               \r
+                       model = CdmStore.getService(ITaxonService.class).getUuidAndTitleCacheTaxon();\r
+                       \r
+               }\r
+               else if(clazz == Synonym.class){\r
+                       model = CdmStore.getService(ITaxonService.class).getUuidAndTitleCacheSynonym();\r
+               }\r
+       }\r
+\r
+       /** {@inheritDoc} */\r
+       @Override\r
+       protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {\r
+               return null;\r
+       }\r
+\r
+       /** {@inheritDoc} */\r
+       @Override\r
+       protected String getNewWizardLinkText() {\r
+               return null;\r
+       }\r
+}\r
index 4b5227e84cfd196be09582718b56456c90dcc54e..bd732e883626de28a36240e9a8220ba17b53668c 100644 (file)
@@ -62,7 +62,7 @@ public class TaxonomicScopeSection extends
        @Override
        public Taxon createNewElement() {
                Taxon selection = TaxonBaseSelectionDialog.selectTaxon(getShell(),
-                               getConversationHolder());
+                               getConversationHolder(), null);
 
                return selection;
        }
index 156f18a362abc224039208c6ac1e8fd2477ab673..8b0d65f0eefc6e7a493b084eb691299cc271c03f 100644 (file)
@@ -54,7 +54,7 @@ public class TaxonSelectionElement extends AbstractSelectionElement<Taxon> {
        @Override
        public void widgetSelected(SelectionEvent e) {
                Taxon newSelection = TaxonBaseSelectionDialog.selectTaxon(getShell(),
-                               getConversationHolder());
+                               getConversationHolder(), null);
                setSelectionInternal(newSelection);
        }