-// $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){
//
}
}
-}
+ @Override
+ public SelectionArbitrator getSelectionArbitrator() {
+ return selectionArbitrator;
+ }
+}
\ No newline at end of file