Merge branch 'release/5.11.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / name / AuthorshipDetailElement.java
index 98fc8f938df9c050cbbc874df0b4262b0f45f322..9646fb5f11ee2a863b82e5b03cb288e84576a7d8 100644 (file)
@@ -12,11 +12,13 @@ package eu.etaxonomy.taxeditor.ui.section.name;
 import java.util.Arrays;
 
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.cdm.model.name.INonViralName;
+import eu.etaxonomy.cdm.model.name.IZoologicalName;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
-import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
-import eu.etaxonomy.cdm.model.name.ZoologicalName;
-import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
+import eu.etaxonomy.taxeditor.preference.NameDetailsConfigurator;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
@@ -35,7 +37,7 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  * @version 1.0
  */
 public class AuthorshipDetailElement extends
-       AbstractIdentifiableEntityDetailElement<NonViralName> {
+       AbstractIdentifiableEntityDetailElement<INonViralName> {
 
     private EntitySelectionElement<TeamOrPersonBase> selectionExBasionymAuthor;
     private EntitySelectionElement<TeamOrPersonBase> selectionBasionymAuthor;
@@ -66,48 +68,48 @@ public class AuthorshipDetailElement extends
        /** {@inheritDoc} */
        @Override
        protected void createControls(ICdmFormElement formElement,
-                       NonViralName entity, int style) {
-           if (isAdvancedView || PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_AUTHORSHIP_CACHE)){
+                       INonViralName entity, int style) {
+           NameDetailsConfigurator config = PreferencesUtil.getPreferredNameDetailsConfiguration();
+           if (config == null || config.isAuthorCacheActivated()){
                toggleable_cache = formFactory.createToggleableTextField(this,
                                "Authorship Cache", entity.getAuthorshipCache(),
                                entity.isProtectedAuthorshipCache(), style);
-               toggleable_cache.setVisible(false);
+               addElement(toggleable_cache);
+          }
+           NomenclaturalCode code = entity.getNameType();
 
-           }
-           NomenclaturalCode code = entity.getNomenclaturalCode();
-
-           if (isAdvancedView || PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_AUTHORSHIP)){
+           if (config == null || config.isAuthorshipSectionActivated()){
             selectionCombinationAuthor = formFactory.createSelectionElementWithAbbreviatedTitle(TeamOrPersonBase.class,
                                getConversationHolder(),
                                formElement, "Author",
                                entity.getCombinationAuthorship(),
-                               EntitySelectionElement.ALL, style);
+                               EntitySelectionElement.DELETABLE | EntitySelectionElement.SELECTABLE | EntitySelectionElement.EDITABLE, style);
                addElement(selectionCombinationAuthor);
                selectionExCombinationAuthor = formFactory.createSelectionElementWithAbbreviatedTitle(TeamOrPersonBase.class,
                                getConversationHolder(),
                                formElement, "Ex Author",
                                entity.getExCombinationAuthorship(),
-                               EntitySelectionElement.ALL, style);
+                               EntitySelectionElement.DELETABLE | EntitySelectionElement.SELECTABLE | EntitySelectionElement.EDITABLE, style);
                addElement(selectionExCombinationAuthor);
                if (code != null){
                 if (code.equals(NomenclaturalCode.ICZN)){
-                    text_publicationYear = formFactory.createNumberTextWithLabelElement(formElement, "Publication Year", ((ZoologicalName)entity).getPublicationYear(), style);
+                    text_publicationYear = formFactory.createNumberTextWithLabelElement(formElement, "Publication Year", ((IZoologicalName)entity).getPublicationYear(), style);
 
                 }
              }
                selectionBasionymAuthor = formFactory.createSelectionElementWithAbbreviatedTitle(TeamOrPersonBase.class, getConversationHolder(),
                     formElement, "Basionym Author", entity.getBasionymAuthorship(),
-                    EntitySelectionElement.ALL, style);
+                    EntitySelectionElement.DELETABLE | EntitySelectionElement.SELECTABLE | EntitySelectionElement.EDITABLE, style);
                addElement(selectionBasionymAuthor);
                selectionExBasionymAuthor = formFactory.createSelectionElementWithAbbreviatedTitle(TeamOrPersonBase.class, getConversationHolder(),
                        formElement, "Ex Basionym Author",entity.getExBasionymAuthorship(),
-                       EntitySelectionElement.ALL, style);
+                       EntitySelectionElement.DELETABLE | EntitySelectionElement.SELECTABLE | EntitySelectionElement.EDITABLE, style);
 
                addElement(selectionExBasionymAuthor);
                 if (code != null){
                    if (code.equals(NomenclaturalCode.ICZN)){
 
-                       text_originalPublicationYear = formFactory.createNumberTextWithLabelElement(formElement, "Orig. Publication Year", ((ZoologicalName)entity).getOriginalPublicationYear(), style);
+                       text_originalPublicationYear = formFactory.createNumberTextWithLabelElement(formElement, "Orig. Publication Year", ((IZoologicalName)entity).getOriginalPublicationYear(), style);
 
                    }
                 }
@@ -160,9 +162,9 @@ public class AuthorshipDetailElement extends
                        getEntity().setExBasionymAuthorship(
                                        selectionExBasionymAuthor.getSelection());
                } else if (eventSource == text_originalPublicationYear) {
-            ((ZoologicalName)getEntity()).setOriginalPublicationYear(text_originalPublicationYear.getInteger());
+            ((IZoologicalName)getEntity()).setOriginalPublicationYear(text_originalPublicationYear.getInteger());
         } else if (eventSource == text_publicationYear) {
-            ((ZoologicalName)getEntity()).setPublicationYear(text_publicationYear.getInteger());
+            ((IZoologicalName)getEntity()).setPublicationYear(text_publicationYear.getInteger());
         }
 
 //             if (eventSource != toggleable_cache) {
@@ -175,6 +177,7 @@ public class AuthorshipDetailElement extends
 //             if (getParentElement() instanceof AbstractCdmDetailSection)
                        firePropertyChangeEvent(new CdmPropertyChangeEvent(
                                        getParentElement(), null));
+                       EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, this.getEntity());
        }
 
        @Override