Merge branch 'release/3.12.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonBaseDetailElement.java
index c166c9d2a1c2f31c544b96816a715411058033d1..b086a1857fb276d9609687d457804ceb84db5188 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
  * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
+ * 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.
  */
@@ -14,22 +14,30 @@ import java.util.Arrays;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.reference.Reference;
+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.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
+import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.name.SynonymRelationshipDetailSection;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
  * TaxonBaseDetailElement class.
  * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Feb 26, 2010
  * @version 1.0
@@ -48,17 +56,19 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem
 
        private CheckboxElement checkbox_unplaced;
 
+       private CheckboxElement checkbox_published;
+
+       private SynonymRelationshipDetailSection sectionSynonymRelationship;
+
        /**
         * <p>
         * Constructor for TaxonBaseDetailElement.
         * </p>
-        * 
+        *
         * @param cdmFormFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-        *            object.
+        *        a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
         * @param formElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
+        *        a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
         * @param style
         *            a int.
         */
@@ -69,36 +79,71 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem
 
        /** {@inheritDoc} */
        @Override
-       protected void createControls(ICdmFormElement formElement,
-                       TaxonBase entity, int style) {
-               toggleable_cache = formFactory.createToggleableTextField(formElement,
-                               "Title Cache", entity.getTitleCache(),
-                               entity.isProtectedTitleCache(), style);
-
-               selection_secundum = formFactory
-               .createSelectionElement(Reference.class,
+       protected void createControls(ICdmFormElement formElement, TaxonBase entity, int style) {
+                       toggleable_cache = formFactory.createToggleableTextField(formElement,
+                                       "Title Cache", entity.getTitleCache(),
+                                       entity.isProtectedTitleCache(), style);
+
+               //TODO RL
+               boolean rl=true;
+               if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
+                       toggleable_cache.setVisible(false);
+               }
+               if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
+                       text_appendedPhrase = formFactory.createTextWithLabelElement(
+                                       formElement, "Appended Phrase", entity.getAppendedPhrase(),
+                                       SWT.NULL);                      
+               }
+
+               selection_secundum = formFactory.createSelectionElement(Reference.class,
                                getConversationHolder(), formElement, "Secundum",
                                entity.getSec(), EntitySelectionElement.ALL,
                                style);
                
-               text_appendedPhrase = formFactory.createTextWithLabelElement(
-                               formElement, "Appended Phrase", entity.getAppendedPhrase(),
-                               SWT.NULL);
-               checkbox_useNameCache = formFactory.createCheckbox(formElement,
-                               "Exclude Authorship", entity.isUseNameCache(), style);
+               // TODO RL
+               if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)) {
+                       checkbox_useNameCache = formFactory.createCheckbox(formElement,
+                                       "Exclude Authorship", entity.isUseNameCache(), style);
+       
+                       if (entity instanceof Taxon) {
+                               checkbox_excluded = formFactory.createCheckbox(formElement,
+                                               "Taxon is excluded", ((Taxon) entity).isExcluded(), style);
+                               checkbox_unplaced = formFactory.createCheckbox(formElement,
+                                               "Taxon is unplaced", ((Taxon) entity).isUnplaced(), style);
+                       }
+       
+                       checkbox_doubtful = formFactory.createCheckbox(formElement,
+                                       entity.getClass().getSimpleName() + " is doubtful", entity.isDoubtful(), style);
+               }
                
                if (entity instanceof Taxon) {
-                       checkbox_excluded = formFactory.createCheckbox(formElement,
-                                       "Taxon is excluded", ((Taxon) entity).isExcluded(), style);
-                       checkbox_unplaced = formFactory.createCheckbox(formElement,
-                                       "Taxon is unplaced", ((Taxon) entity).isUnplaced(), style);
+                       checkbox_published = formFactory.createCheckbox(formElement,
+                                       "Taxon is published", ((Taxon) entity).isPublish(), style);
+               }
+
+
+               if(entity instanceof Synonym){
+                   sectionSynonymRelationship = formFactory.createSynonymRelationshipDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
+                   sectionSynonymRelationship.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+                   sectionSynonymRelationship.setEntity((Synonym) entity);
                }
-               
-               checkbox_doubtful = formFactory.createCheckbox(formElement,
-                               entity.getClass().getSimpleName() + " is doubtful", entity.isDoubtful(), style);
        }
 
-       /** {@inheritDoc} */
+    private void updateCheckboxPublish() {
+        if(getEntity() instanceof Taxon){
+            checkbox_published.setEnabled(
+                       CdmStore.currentAuthentiationHasOneOfRoles(Role.ROLE_PUBLISH, Role.ROLE_ADMIN)
+                       );
+        }
+    }
+
+       @Override
+    protected void updateControlStates() {
+        super.updateControlStates();
+        updateCheckboxPublish();
+    }
+
+    /** {@inheritDoc} */
        @Override
        protected void updateContent() {
                super.updateContent();
@@ -106,7 +151,7 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem
                setIrrelevant(toggleable_cache.getState(),
                                Arrays.asList(new Object[] { toggleable_cache }));
        }
-       
+
        @Override
        protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
                String title = getEntity().generateTitle();
@@ -117,20 +162,30 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
-               if (eventSource.equals(toggleable_cache)) {
+               if (eventSource== toggleable_cache) {
                        handleToggleableCacheField();
-               } else if (eventSource.equals(checkbox_doubtful)) {
+               } else if (eventSource == checkbox_doubtful) {
                        getEntity().setDoubtful(checkbox_doubtful.getSelection());
-               } else if (eventSource.equals(checkbox_useNameCache)) {
+               } else if (eventSource == checkbox_useNameCache) {
                        getEntity().setUseNameCache(checkbox_useNameCache.getSelection());
-               } else if (eventSource.equals(selection_secundum)) {
+               } else if (eventSource == selection_secundum) {
                        getEntity().setSec(selection_secundum.getSelection());
-               } else if (eventSource.equals(text_appendedPhrase)) {
+               } else if (eventSource == text_appendedPhrase) {
                        getEntity().setAppendedPhrase(text_appendedPhrase.getText());
                } else if (eventSource == checkbox_excluded) {
                        ((Taxon) getEntity()).setExcluded(checkbox_excluded.getSelection());
                } else if (eventSource == checkbox_unplaced) {
-                       ((Taxon) getEntity()).setUnplaced(checkbox_unplaced.getSelection());
+                   ((Taxon) getEntity()).setUnplaced(checkbox_unplaced.getSelection());
+               } else if (eventSource == checkbox_published) {
+                   ((Taxon)getEntity()).setPublish(checkbox_published.getSelection());
                }
        }
+       @Override
+       protected void handleToggleableCacheField() {
+        boolean pushedState = toggleable_cache.getState();
+
+        getEntity().setTitleCache(toggleable_cache.getText(), pushedState);
+        setIrrelevant(pushedState, Arrays.asList(new Object[] { toggleable_cache, text_appendedPhrase, checkbox_published, checkbox_unplaced, checkbox_excluded}));
+        updateToggleableCacheField();
+    }
 }