ref #10473: fix creation of name description if no exist
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / descriptive / e4 / handler / CreateDescriptionElementHandlerE4.java
index 3a59c539e3ccd22ef7b029dd5e4ad3b1c8b8f831..4bd34976bb2c77a893d3b599fb74aa17eaf10fe4 100644 (file)
@@ -28,6 +28,7 @@ import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
@@ -70,9 +71,11 @@ public class CreateDescriptionElementHandlerE4 {
         FactualDataPartE4 factualDataPart = null;
         if (activePart.getObject() instanceof FactualDataPartE4 ) {
             factualDataPart = (FactualDataPartE4) activePart.getObject();
-            if(factualDataPart.getSelectionProvidingPart().getObject() instanceof TaxonEditor && object == null) {
-                object = ((TaxonEditor)factualDataPart.getSelectionProvidingPart().getObject()).getTaxon();
-            }
+            object = factualDataPart.getViewer().getInput();
+
+//            if(factualDataPart.getSelectionProvidingPart().getObject() instanceof TaxonEditor && object == null) {
+//                object = ((TaxonEditor)factualDataPart.getSelectionProvidingPart().getObject()).getTaxon();
+//            }
         }
         DescriptionBase description = null;
 
@@ -93,6 +96,13 @@ public class CreateDescriptionElementHandlerE4 {
                 description = TaxonDescription.NewInstance(taxon);
                 description.setDefault(true);
             }
+        }else if (object instanceof TaxonName) {
+            TaxonName taxonName = (TaxonName)object;
+            description = taxonName.getDescriptions().isEmpty()?null: taxonName.getDescriptions().iterator().next();
+            if (description == null) {
+                description = TaxonNameDescription.NewInstance(taxonName);
+                description.setDefault(true);
+            }
         }
         else {
             MessagingUtils.error(getClass(), new IllegalArgumentException("Could not determine the taxon description")); //$NON-NLS-1$