Merge branch 'release/5.8.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / DerivedUnitBaseDetailElement.java
index 1569bc08eb3467d5abbece97c0e85d93f9f332dd..0003781481d09751aeb8e4ece64c439002a60257 100644 (file)
@@ -1,43 +1,42 @@
-// $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.
  */
 
 package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
-import org.eclipse.ui.forms.widgets.Section;
-
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.MethodNotSupportedByDerivedUnitTypeException;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.OriginalLabelDataElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
  * DerivedUnitBaseDetailElement class.
  * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Jun 24, 2010
  * @version 1.0
  */
 public class DerivedUnitBaseDetailElement extends
-               AbstractCdmDetailElement<DerivedUnitFacade> {
+               AbstractSpecimenOrObservationDetailElement {
 
        private TextWithLabelElement text_derivedUnitDefinitions;
 
@@ -45,21 +44,25 @@ public class DerivedUnitBaseDetailElement extends
 
        private TextWithLabelElement text_catalogNumber;
 
-       private EntitySelectionElement<TaxonNameBase> selection_storedUnder;
+       private EntitySelectionElement<TaxonName> selection_storedUnder;
 
        private TextWithLabelElement text_exsicatum;
 
-       private TermComboElement<PreservationMethod> combo_preservationMethod;
+       private TermComboElement<DefinedTerm> combo_preservationMethod;
 
        private SpecimenCollectionDetailSection section_duplicates;
 
        private SourceCollectionDetailSection section_source;
 
+    private OriginalLabelDataElement textOriginalLabel;
+
+
+
        /**
         * <p>
         * Constructor for DerivedUnitBaseDetailElement.
         * </p>
-        * 
+        *
         * @param formFactory
         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
         *            object.
@@ -74,89 +77,86 @@ public class DerivedUnitBaseDetailElement extends
 
        /** {@inheritDoc} */
        @Override
-       protected void createControls(ICdmFormElement formElement,
-                       DerivedUnitFacade entity, int style) {
+    protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
                // Disable for now
                // text_derivedUnitDefinitions =
                // formFactory.createTextWithLabelElement(formElement,
                // "Specimen Definition",
                // facade.getDerivedUnitDefinition(CdmStore.getDefaultLanguage()),
                // style);
-               text_barcode = formFactory.createTextWithLabelElement(formElement,
-                               "Barcode", entity.getBarcode(), style);
-               text_catalogNumber = formFactory
-                               .createTextWithLabelElement(formElement, "Catalog Number",
-                                               entity.getCatalogNumber(), style);
+        text_barcode = formFactory.createTextWithLabelElement(formElement, "Barcode", entity.getBarcode(), style);
+        text_catalogNumber = formFactory.createTextWithLabelElement(formElement, "Catalog Number", entity.getCatalogNumber(), style);
+
 
                try {
-                       combo_preservationMethod = formFactory.createTermComboElement(PreservationMethod.class,
-                                                       formElement, "Preservation Method",
-                                                       entity.getPreservationMethod(), style);
+            PreservationMethod preservationMethod = entity.getPreservationMethod();
+            combo_preservationMethod = formFactory.createDefinedTermComboElement(TermType.MaterialOrMethod, formElement, "Preservation Method", preservationMethod==null?null:preservationMethod.getDefinedMaterialOrMethod(), style);
                } catch (MethodNotSupportedByDerivedUnitTypeException e) {
                        // we ignore this
-                       StoreUtil.info(e.getMessage());
+            MessagingUtils.info(e.getMessage());
                }
-               selection_storedUnder = formFactory
-                               .createSelectionElement(TaxonNameBase.class,
-                                               getConversationHolder(), formElement, "Stored Under",
-                                               entity.getStoredUnder(), EntitySelectionElement.ALL,
-                                               style);
+        selection_storedUnder = formFactory.createSelectionElement(TaxonName.class, //getConversationHolder(),
+                formElement, "Stored Under", entity.getStoredUnder(), EntitySelectionElement.ALL, style);
 
                try {
-                       text_exsicatum = formFactory.createTextWithLabelElement(
-                                       formElement, "Exsiccatum", entity.getExsiccatum(), style);
+            text_exsicatum = formFactory.createTextWithLabelElement(formElement, "Exsiccatum", entity.getExsiccatum(), style);
                } catch (MethodNotSupportedByDerivedUnitTypeException e) {
                        // we ignore this
-                       StoreUtil.info(e.getMessage());
+            MessagingUtils.info(e.getMessage());
                }
 
-               section_duplicates = (SpecimenCollectionDetailSection) formFactory
-                               .createEntityDetailSection(
-                                               EntityDetailType.SPECIMEN_COLLECTION,
-                                               getConversationHolder(), formElement, Section.TWISTIE);
-               section_duplicates
-                               .setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-               section_duplicates.setEntity(entity);
-
-               section_source = (SourceCollectionDetailSection) formFactory
-                               .createEntityDetailSection(
-                                               EntityDetailType.IDENTIFIABLE_SOURCE_COLLECTION,
-                                               getConversationHolder(), formElement, Section.TWISTIE);
+//             section_duplicates = (SpecimenCollectionDetailSection) formFactory
+//                             .createEntityDetailSection(
+//                                             EntityDetailType.SPECIMEN_COLLECTION,
+//                                             getConversationHolder(), formElement, Section.TWISTIE);
+//             section_duplicates
+//                             .setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+//             section_duplicates.setEntity(entity);
+
+               textOriginalLabel = formFactory.createOriginalLabelDataElement(formElement);
+               textOriginalLabel.setEntity(getEntity());
+
+               super.createControls(formElement, entity, style);
+
+        section_source = formFactory.createSourceCollectionDetailSection(getConversationHolder(), formElement, StoreUtil.getSectionStyle(SourceCollectionDetailSection.class, entity.getClass().getCanonicalName()));
                section_source.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
                section_source.setEntity(entity);
-       }
 
-       /** {@inheritDoc} */
-       @Override
-       public void handleEvent(Object eventSource) {
-               if (eventSource == text_derivedUnitDefinitions) {
-                       getEntity().addDerivedUnitDefinition(
-                                       text_derivedUnitDefinitions.getText(),
-                                       CdmStore.getDefaultLanguage());
-               } else if (eventSource == text_barcode) {
-                       getEntity().setBarcode(text_barcode.getText());
-               } else if (eventSource == text_catalogNumber) {
-                       getEntity().setCatalogNumber(text_catalogNumber.getText());
-               } else if (eventSource == combo_preservationMethod) {
-                       try {
-                               getEntity().setPreservationMethod(
-                                               combo_preservationMethod.getSelection());
-                       } catch (MethodNotSupportedByDerivedUnitTypeException e) {
-                               StoreUtil
-                                               .errorDialog(
-                                                               "MethodNotSupportedByDerivedUnitTypeException",
-                                                               this,
-                                                               "MethodNotSupportedByDerivedUnitTypeException when trying to set preservation method for derive unit",
-                                                               e);
-                       }
-               } else if (eventSource == selection_storedUnder) {
-                       getEntity().setStoredUnder(selection_storedUnder.getEntity());
-               } else if (eventSource == text_exsicatum) {
-                       try {
-                               getEntity().setExsiccatum(text_exsicatum.getText());
-                       } catch (Exception e) {
-                               StoreUtil.error(this.getClass(), e);
-                       }
-               }
+
        }
+
+    /** {@inheritDoc} */
+    @Override
+    public void handleEvent(Object eventSource) {
+       super.handleEvent(eventSource);
+        if (eventSource == text_derivedUnitDefinitions) {
+            getEntity().addDerivedUnitDefinition(text_derivedUnitDefinitions.getText(), CdmStore.getDefaultLanguage());
+        } else if (eventSource == text_barcode) {
+            getEntity().setBarcode(text_barcode.getText());
+        } else if (eventSource == text_catalogNumber) {
+            getEntity().setCatalogNumber(text_catalogNumber.getText());
+        } else if (eventSource == combo_preservationMethod) {
+            try {
+                PreservationMethod preservationMethod = getEntity().getPreservationMethod();
+                if(preservationMethod!=null){
+                    preservationMethod.setDefinedMaterialOrMethod(combo_preservationMethod.getSelection());
+                }
+            } catch (MethodNotSupportedByDerivedUnitTypeException e) {
+                MessagingUtils
+                        .messageDialog(
+                                "MethodNotSupportedByDerivedUnitTypeException",
+                                this,
+                                "MethodNotSupportedByDerivedUnitTypeException when trying to set preservation method for derive unit",
+                                e);
+            }
+        } else if (eventSource == selection_storedUnder) {
+            getEntity().setStoredUnder(selection_storedUnder.getEntity());
+        } else if (eventSource == text_exsicatum) {
+            try {
+                getEntity().setExsiccatum(text_exsicatum.getText());
+            } catch (Exception e) {
+                MessagingUtils.error(this.getClass(), e);
+            }
+        }
+    }
 }