import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenHierarchyDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenHierarchyDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.association.DerivedUnitTypeDesignationElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.association.DerivedUnitTypeDesignationSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit.PreservedSpecimenCurrentDeterminationDetailSection;
return section;
}
+ public DerivedUnitTypeDesignationSection createDerivedUnitTypeDesignationSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ DerivedUnitTypeDesignationSection section = new DerivedUnitTypeDesignationSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
public TaxonAssociationDetailSection createTaxonAssociationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
TaxonAssociationDetailSection section = new TaxonAssociationDetailSection(this, conversation, parentElement, selectionProvider, style);
addAndAdaptSection(parentElement, section);
element = new SynonymRelationshipDetailElement(this, parentElement, (SynonymRelationship) entity, removeListener,
style);
} else if (entity instanceof SpecimenTypeDesignation) {
- element = new SpecimenTypeDesignationElement(this, parentElement, (SpecimenTypeDesignation) entity,
- removeListener, style);
+ if(parentElement instanceof DerivedUnitTypeDesignationSection){
+ element = new DerivedUnitTypeDesignationElement(this, parentElement, (SpecimenTypeDesignation) entity,
+ removeListener, style);
+ }
+ else{
+ element = new SpecimenTypeDesignationElement(this, parentElement, (SpecimenTypeDesignation) entity,
+ removeListener, style);
+ }
} else if (entity instanceof StateData) {
element = new StateDataElement(this, parentElement, (StateData) entity, removeListener, style);
} else if (entity instanceof StatisticalMeasurementValue) {
--- /dev/null
+// $Id$
+/**
+ * Copyright (C) 2007 EDIT
+ * 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.association;
+
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.swt.events.SelectionListener;
+
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author n.hoffmann
+ * @created May 17, 2010
+ * @version 1.0
+ */
+public class DerivedUnitTypeDesignationElement extends
+ AbstractEntityCollectionElement<SpecimenTypeDesignation> {
+
+ private List<EntitySelectionElement<TaxonNameBase>> selectionTaxonNames;
+ private ICdmFormElement parentFormElement;
+ private int style;
+
+ public DerivedUnitTypeDesignationElement(CdmFormFactory formFactory,
+ AbstractFormSection section, SpecimenTypeDesignation entity,
+ SelectionListener removeListener, int style) {
+ super(formFactory, section, entity, removeListener, null, style);
+ }
+
+ @Override
+ public void setEntity(SpecimenTypeDesignation entity) {
+ this.entity = entity;
+ Set<TaxonNameBase> typifiedNames = entity.getTypifiedNames();
+ if(typifiedNames.isEmpty()){
+ formFactory.createSelectionElement(
+ TaxonNameBase.class, getConversationHolder(), parentFormElement, "Taxon Name", null,
+ EntitySelectionElement.EDITABLE | EntitySelectionElement.SELECTABLE, style);
+ }
+ else{
+ for (TaxonNameBase taxonNameBase : typifiedNames) {
+ EntitySelectionElement<TaxonNameBase> selectionElement = formFactory.createSelectionElement(
+ TaxonNameBase.class, getConversationHolder(), parentFormElement, "Taxon Name", null,
+ EntitySelectionElement.EDITABLE | EntitySelectionElement.SELECTABLE, style);
+ selectionElement.setEntity(taxonNameBase);
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void createControls(ICdmFormElement element, int style) {
+ this.parentFormElement = element;
+ this.style = style;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void handleEvent(Object eventSource) {
+ if (eventSource instanceof EntitySelectionElement) {
+ ((EntitySelectionElement<TaxonNameBase>) eventSource).getSelection().addTypeDesignation(getEntity(), false);
+ }
+ }
+
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* 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.association;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
+
+/**
+ * @author pplitzner
+ * @date Oct 29, 2015
+ *
+ */
+public class DerivedUnitTypeDesignationSection extends AbstractEntityCollectionSection<DerivedUnitFacade, SpecimenTypeDesignation> {
+
+ private Collection<SpecimenTypeDesignation> typeDesignations;
+
+ public DerivedUnitTypeDesignationSection(CdmFormFactory formFactory,
+ ConversationHolder conversation, ICdmFormElement parentElement, int style) {
+ super(formFactory, conversation, parentElement, "Type Designations", style);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public Collection<SpecimenTypeDesignation> getCollection(DerivedUnitFacade entity) {
+ typeDesignations = entity.innerDerivedUnit().getSpecimenTypeDesignations();
+ return typeDesignations;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public SpecimenTypeDesignation createNewElement() {
+ return SpecimenTypeDesignation.NewInstance();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void addElement(SpecimenTypeDesignation element) {
+ element.setTypeSpecimen(getEntity().innerDerivedUnit());
+ typeDesignations.add(element);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void removeElement(SpecimenTypeDesignation element) {
+ List<SpecimenTypeDesignation> toRemove = new ArrayList<SpecimenTypeDesignation>();
+ for (SpecimenTypeDesignation specimenTypeDesignation : typeDesignations) {
+ if(element.equals(specimenTypeDesignation)){
+ toRemove.add(specimenTypeDesignation);
+ }
+ }
+ for (SpecimenTypeDesignation specimenTypeDesignation : toRemove) {
+ specimenTypeDesignation.removeType();
+ Set<TaxonNameBase> names = specimenTypeDesignation.getTypifiedNames();
+ for (TaxonNameBase taxonNameBase : names) {
+ taxonNameBase.removeTypeDesignation(specimenTypeDesignation);
+ if(CdmStore.getCurrentSessionManager().isRemoting()){
+ CdmStore.getService(INameService.class).merge(taxonNameBase);
+ }
+ }
+ }
+ typeDesignations.removeAll(toRemove);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public String getEmptyString() {
+ return "No type designation yet.";
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected String getTooltipString() {
+ return "Add a type designation";
+ }
+
+
+}
\ No newline at end of file
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.association.DerivedUnitTypeDesignationSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSection;
addPart(taxonAssociationDetailSection);
}
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+ DerivedUnitTypeDesignationSection derivedUnitTypeDesignationSection = formFactory.createDerivedUnitTypeDesignationSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+ addPart(derivedUnitTypeDesignationSection);
+
formFactory.createHorizontalSeparator(parent, SWT.BORDER);
IdentifierDetailSection identifierDetailSection = formFactory.createIdentifierDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
addPart(identifierDetailSection);