ref #6455 Fix editing and saving of DU facades in bulk editor
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 2 May 2018 12:33:42 +0000 (14:33 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 2 May 2018 12:33:50 +0000 (14:33 +0200)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/details/DetailsViewerE4.java

index 95315d64d11b6e15fb2e4f8f3e753740aee78708..fcac658f67e201f0ae358d0b35aca0aaa3f3aaec 100644 (file)
@@ -51,7 +51,10 @@ import org.eclipse.swt.widgets.Table;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorQuery;
@@ -347,7 +350,17 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable
      */
     @Override
     public void changed(Object element) {
-        if (element instanceof CdmBase) {
+        if(element instanceof DerivedUnitFacade){
+            DerivedUnit derivedUnit = ((DerivedUnitFacade) element).innerDerivedUnit();
+            if(derivedUnit!=null){
+                getEditorInput().addSaveCandidate(derivedUnit);
+            }
+            FieldUnit fieldUnit = ((DerivedUnitFacade) element).innerFieldUnit();
+            if(fieldUnit!=null){
+                getEditorInput().addSaveCandidate(fieldUnit);
+            }
+        }
+        else if (element instanceof CdmBase) {
             getEditorInput().addSaveCandidate((CdmBase)element);
         }
         dirty.setDirty(true);
index 2b29013cff385177555ce453d27d0249e3829eb2..392d4b815d24ebcad3c70a3f2173645b56126872 100644 (file)
@@ -85,7 +85,7 @@ public class DerivedUnitGeneralDetailElement extends
                    combo_specorobstype.setEnabled(showSpecimenType);
                    selection_country = formFactory.createSelectionElement(NamedArea.class, //getConversationHolder(),
                            formElement, "Country",
-                           entity.getCountry(), EntitySelectionElement.NOTHING, style);
+                           entity.getCountry(), EntitySelectionElement.DELETABLE, style);
 
                if(PreferencesUtil.isCollectingAreaInGeneralSection()){
                    section_collectingAreas = formFactory.createCollectingAreasDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
index 34ca642d1f6b9d3d0b6dd2e80473da4ac7dc574e..b26eaced8e2da568fe87ade9dbb9bac53a2ca56c 100755 (executable)
@@ -197,12 +197,17 @@ public class DetailsViewerE4 extends AbstractCdmDataViewerE4 {
     @Override
     protected void markViewPartDirty() {
         if (getInput() instanceof DerivedUnitFacade) {
-            DerivedUnitFacade facade = (DerivedUnitFacade) getInput();
-            if(facade.innerDerivedUnit()!=null){
-                part.changed(facade.innerDerivedUnit());
+            if(part instanceof IDerivedUnitFacadePart){
+                part.changed(getInput());
             }
-            else if(facade.innerFieldUnit()!=null){
-                part.changed(facade.innerFieldUnit());
+            else{
+                DerivedUnitFacade facade = (DerivedUnitFacade) getInput();
+                if(facade.innerDerivedUnit()!=null){
+                    part.changed(facade.innerDerivedUnit());
+                }
+                else if(facade.innerFieldUnit()!=null){
+                    part.changed(facade.innerFieldUnit());
+                }
             }
         }
         else{