solving #4011 (disallow changing publish flag for users with insuffcient rights)...
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonBaseDetailElement.java
index 23a7d1db25742a01f5337b9550de04a6e5f5a4fa..d0eea542b5044a09a65f496219ee51fffc02fb71 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,23 +14,28 @@ 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.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.forms.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.forms.CheckboxElement;
-import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.forms.TextWithLabelElement;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
+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.selection.ReferenceSelectionElement;
+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
@@ -41,7 +46,7 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem
 
        private CheckboxElement checkbox_useNameCache;
 
-       private ReferenceSelectionElement selection_secundum;
+       private EntitySelectionElement<Reference> selection_secundum;
 
        private TextWithLabelElement text_appendedPhrase;
 
@@ -49,17 +54,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.forms.CdmFormFactory}
-        *            object.
+        *        a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
         * @param formElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement}
-        *            object.
+        *        a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
         * @param style
         *            a int.
         */
@@ -76,24 +83,40 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem
                                "Title Cache", entity.getTitleCache(),
                                entity.isProtectedTitleCache(), style);
 
-               checkbox_doubtful = formFactory.createCheckbox(formElement,
-                               "Is doubtful", entity.isDoubtful(), style);
-               checkbox_useNameCache = formFactory.createCheckbox(formElement,
-                               "Exclude Authorship", entity.isUseNameCache(), style);
-               selection_secundum = (ReferenceSelectionElement) formFactory
-                               .createSelectionElement(SelectionType.REFERENCE,
-                                               getConversationHolder(), formElement, "Secundum",
-                                               entity.getSec(), ReferenceSelectionElement.DEFAULT,
-                                               style);
+               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);
 
                if (entity instanceof Taxon) {
                        checkbox_excluded = formFactory.createCheckbox(formElement,
-                                       "Is excluded", ((Taxon) entity).isExcluded(), style);
+                                       "Taxon is excluded", ((Taxon) entity).isExcluded(), style);
                        checkbox_unplaced = formFactory.createCheckbox(formElement,
-                                       "Is unplaced", ((Taxon) entity).isUnplaced(), style);
+                                       "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_published = formFactory.createCheckbox(formElement,
+                                       "Taxon is published", ((Taxon) entity).isPublish(), style);
+                       checkbox_published.setEnabled(
+                                       CdmStore.currentAuthentiationHasOneOfRoles(Role.ROLE_PUBLISH, Role.ROLE_ADMIN)
+                                       );
+               }
+
+               if(entity instanceof Synonym){
+                   sectionSynonymRelationship = formFactory.createSynonymRelationshipDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
+                   sectionSynonymRelationship.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+                   sectionSynonymRelationship.setEntity((Synonym) entity);
                }
        }
 
@@ -105,7 +128,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();
@@ -116,20 +139,22 @@ 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());
                }
        }
 }