ref #10222 adapt taxeditor to changes (DerivedUnitFacade and CondensedDistributionRec...
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / DeterminationEventDetailElement.java
index 92c0533da12c8f334ac831132f0c58674a54ae81..2f85aefa262dd98492ed4532f0f5fa49d711beb6 100644 (file)
-// $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.swt.events.SelectionListener;
 
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
-import eu.etaxonomy.cdm.model.occurrence.DeterminationModifier;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.ISelectableElement;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
- * <p>
- * DeterminationEventDetailElement class.
- * </p>
- * 
  * @author n.hoffmann
  * @created Oct 13, 2010
- * @version 1.0
  */
-public class DeterminationEventDetailElement extends
-               AbstractEventDetailElement<DeterminationEvent> {
+public class DeterminationEventDetailElement
+            extends AbstractEventDetailElement<DeterminationEvent>
+            implements ISelectableElement{
+
+    private SelectionArbitrator selectionArbitrator;
 
-       private TermComboElement<DeterminationModifier> combo_determinationModifier;
+       private TermComboElement<DefinedTerm> combo_determinationModifier;
        private CheckboxElement checkbox_preferredFlag;
        private EntitySelectionElement<TaxonBase> selection_taxonBase;
+       private EntitySelectionElement<TaxonName> selectionTaxonNameBase;
 
        // private TODO a set of references
 
-       /**
-        * <p>
-        * Constructor for DeterminationEventDetailElement.
-        * </p>
-        * 
-        * @param formFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-        *            object.
-        * @param section
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
-        *            object.
-        * @param entity
-        *            a {@link eu.etaxonomy.cdm.model.occurrence.DeterminationEvent}
-        *            object.
-        * @param removeListener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        * @param style
-        *            a int.
-        */
        public DeterminationEventDetailElement(CdmFormFactory formFactory,
-                       AbstractFormSection section, DeterminationEvent entity,
+                       AbstractFormSection<?> section, DeterminationEvent entity,
                        SelectionListener removeListener, int style) {
                super(formFactory, section, entity, removeListener, style);
+               if (formFactory.getSelectionProvider() != null) {
+                   selectionArbitrator = formFactory.createSelectionArbitrator(this);
+               }
        }
 
-       /*
-        * (non-Javadoc)
-        * 
-        * @see
-        * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#setEntity
-        * (eu.etaxonomy.cdm.model.common.IVersionableEntity)
-        */
-       /** {@inheritDoc} */
        @Override
        public void setEntity(DeterminationEvent entity) {
                this.entity = entity;
-               combo_determinationModifier.setSelection(entity.getModifier());
-               selection_taxonBase.setEntity(entity.getTaxon());
+               if (combo_determinationModifier != null){
+                       combo_determinationModifier.setSelection(entity.getModifier());
+                       selection_taxonBase.setEntity(entity.getTaxon());
+                       selectionTaxonNameBase.setEntity(entity.getTaxonName());
+               }
                super.setEntity(entity);
        }
 
-       /*
-        * (non-Javadoc)
-        * 
-        * @see
-        * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#createControls
-        * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, int)
-        */
-       /** {@inheritDoc} */
        @Override
        public void createControls(ICdmFormElement element, int style) {
+           selectionTaxonNameBase = formFactory
+                   .createSelectionElement(TaxonName.class,
+                            element, "Taxon Name", null,
+                           EntitySelectionElement.ALL, style);
                selection_taxonBase = formFactory
                                .createSelectionElement(TaxonBase.class,
-                                               getConversationHolder(), element, "Taxon", null,
-                                               EntitySelectionElement.NOTHING, style);
-               
+                                                element, "Taxon", null,
+                                               EntitySelectionElement.ALL, style);
 
                // TODO set of references
 
                super.createControls(element, style);
-               
+
                element_timePeriod.setLabel("Determined When");
                selection_agent.setLabel("Determined by");
-               
-               
-               combo_determinationModifier = formFactory.createTermComboElement(DeterminationModifier.class,
+
+
+               combo_determinationModifier = formFactory.createDefinedTermComboElement(TermType.DeterminationModifier,
                                element, "Modifier", null, style);
+               if (entity != null){
+                       combo_determinationModifier.setSelection(entity.getModifier());
+                       selection_taxonBase.setEntity(entity.getTaxon());
+                       selectionTaxonNameBase.setEntity(entity.getTaxonName());
+               }
        }
 
-       /*
-        * (non-Javadoc)
-        * 
-        * @see
-        * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent
-        * (java.lang.Object)
-        */
-       /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
                if (eventSource == combo_determinationModifier) {
                        getEntity().setModifier(combo_determinationModifier.getSelection());
                } else if (eventSource == checkbox_preferredFlag) {
                        getEntity().setPreferredFlag(checkbox_preferredFlag.getSelection());
+               } else if (eventSource == selectionTaxonNameBase) {
+                   TaxonName name = selectionTaxonNameBase.getSelection();
+            getEntity().setTaxonName(name);
+                   //empty taxon field if name was deleted
+            //or does not belong the taxon
+                   TaxonBase<?> taxonBase = selection_taxonBase.getEntity();
+                       if(name==null ||
+                               (taxonBase!=null && taxonBase.getName()!=null
+                                       && !taxonBase.getName().equals(name))){
+                               selection_taxonBase.setEntity(null);
+                               getEntity().setTaxon(null);
+                       }
                } else if (eventSource == selection_taxonBase) {
-                       getEntity().setTaxon(selection_taxonBase.getSelection());
+                       TaxonBase<?> taxon = selection_taxonBase.getSelection();
+            getEntity().setTaxon(taxon);
+            if(taxon!=null){
+                getEntity().setTaxonName(taxon.getName());
+                selectionTaxonNameBase.setEntity(taxon.getName());
+            }
                }
                // else if(eventSource == TODO set of references){
                //
@@ -138,4 +127,8 @@ public class DeterminationEventDetailElement extends
                }
        }
 
-}
+    @Override
+    public SelectionArbitrator getSelectionArbitrator() {
+        return selectionArbitrator;
+    }
+}
\ No newline at end of file