fix #7170 hiding CombinationAuthorship & BasionymAuthorship if empty
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 11 Jan 2018 17:14:45 +0000 (18:14 +0100)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 11 Jan 2018 17:14:45 +0000 (18:14 +0100)
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditorMode.java [new file with mode: 0644]
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditorView.java
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetPresenter.java

index 83f55f943718a57902e26ffb3edf28adb4872c10..eef40f83d2276b7b76f7cba1c86684cc3f206070 100644 (file)
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.view.name;
 
 import java.util.Collection;
+import java.util.EnumSet;
 
 import org.springframework.security.core.GrantedAuthority;
 
@@ -76,6 +77,7 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
 
     private TeamOrPersonField exCombinationAuthorshipField;
 
+    private EnumSet<TaxonNamePopupEditorMode> modesActive = EnumSet.noneOf(TaxonNamePopupEditorMode.class);
 
     /**
      * @param layout
@@ -306,6 +308,10 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         basionymAuthorshipField.setVisible(enable);
         exBasionymAuthorshipField.setVisible(enable);
         basionymCombobox.setVisible(enable);
+        if(modesActive.contains(TaxonNamePopupEditorMode.suppressReplacementAuthorshipData)){
+            TaxonName taxonName = getBean();
+            basionymAuthorshipField.setVisible(taxonName.getBasionymAuthorship() != null);
+        }
     }
 
     /**
@@ -329,6 +335,10 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
                 || taxonName.getExBasionymAuthorship() != null;
         basionymToggle.setValue(showBasionymSection);
 
+        if(modesActive.contains(TaxonNamePopupEditorMode.suppressReplacementAuthorshipData)){
+            combinationAuthorshipField.setVisible(taxonName.getCombinationAuthorship() != null);
+        }
+
     }
 
     /**
@@ -403,7 +413,15 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         return exCombinationAuthorshipField;
     }
 
+    @Override
+    public void enableMode(TaxonNamePopupEditorMode mode){
+        modesActive.add(mode);
+    }
 
+    @Override
+    public void disableMode(TaxonNamePopupEditorMode mode){
+        modesActive.remove(mode);
+    }
 
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditorMode.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditorMode.java
new file mode 100644 (file)
index 0000000..0dfb6fb
--- /dev/null
@@ -0,0 +1,24 @@
+/**
+* Copyright (C) 2018 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.cdm.vaadin.view.name;
+
+/**
+ * @author a.kohlbecker
+ * @since Jan 11, 2018
+ *
+ */
+public enum TaxonNamePopupEditorMode {
+
+    /**
+     * CombinationAuthorship BasionymAuthorship fields only visible if
+     * not empty
+     */
+    suppressReplacementAuthorshipData
+
+}
index 10c7487c96bdb0b9622d07bbbeefe5f29c1f1c2d..9c3aa97d1f50459dbecefb4503f12dd78aadb271 100644 (file)
@@ -56,4 +56,13 @@ public interface TaxonNamePopupEditorView extends ApplicationView<TaxonNameEdito
      */
     public TeamOrPersonField getExCombinationAuthorshipField();
 
+    void disableMode(TaxonNamePopupEditorMode mode);
+
+    /**
+     * Modes must be enabled before calling {@link AbstractPopupEditor#loadInEditor(Object identifier)}.
+     *
+     * @param mode
+     */
+    void enableMode(TaxonNamePopupEditorMode mode);
+
 }
index a51825aa8fc82e63552c53436879b6af2abf324c..b7f63d3a7d1cb4b04f7396f3a40120b7950220f9 100644 (file)
@@ -55,6 +55,7 @@ import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
 import eu.etaxonomy.cdm.vaadin.util.converter.TypeDesignationSetManager.TypeDesignationWorkingSetType;
 import eu.etaxonomy.cdm.vaadin.view.name.SpecimenTypeDesignationWorkingsetPopupEditor;
 import eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditor;
+import eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditorMode;
 import eu.etaxonomy.cdm.vaadin.view.name.TypeDesignationWorkingsetEditorIdSet;
 import eu.etaxonomy.cdm.vaadin.view.reference.ReferencePopupEditor;
 import eu.etaxonomy.vaadin.mvp.AbstractPresenter;
@@ -228,14 +229,12 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
 
         TaxonNamePopupEditor popup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class);
         popup.withDeleteButton(true);
+        configureTaxonNameEditor(popup);
         popup.loadInEditor(event.getEntityId());
         if(event.getSourceComponent() != null){
             popup.setReadOnly(event.getSourceComponent().isReadOnly());
         }
-        // disable NomReferenceCombobox:
-        // the in the registration application inReferences should only edited centrally
-        // setEnabled must be set at last otherwise it will not be effective
-        popup.getNomReferenceCombobox().setEnabled(false);
+
     }
 
 
@@ -249,6 +248,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         TaxonNamePopupEditor popup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class);
         popup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE,CRUD.DELETE));
         popup.withDeleteButton(true);
+        configureTaxonNameEditor(popup);
         popup.loadInEditor(newTaxonNameForRegistration.getId());
         // disable NomReferenceCombobox:
         // the in the registration application inReferences should only edited centrally
@@ -256,6 +256,18 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         popup.getNomReferenceCombobox().setEnabled(false);
     }
 
+    /**
+     * TODO consider putting this into a Configurer Bean per UIScope.
+     * In the configurator bean this methods popup papamerter should be of the type
+     * AbstractPopupEditor
+     *
+     * @param popup
+     */
+    protected void configureTaxonNameEditor(TaxonNamePopupEditor popup) {
+        popup.enableMode(TaxonNamePopupEditorMode.suppressReplacementAuthorshipData);
+
+    }
+
     /**
      * Creates a new <code>Registration</code> for a new name that has just been edited
      * using the <code>TaxonNamePopupEditor</code>. The new name was previously created