From: Patrick Plitzner Date: Mon, 2 Nov 2015 10:49:33 +0000 (+0100) Subject: Add type designation collection elemetn to derived unit details view X-Git-Tag: 3.12.0^2~62^2~7^2~17 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/4b61c2b2d5f13e3015fab17406dc1ada40c7f5b8 Add type designation collection elemetn to derived unit details view --- diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java index d02552384..1ba3c42dd 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java @@ -232,6 +232,8 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailElem 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; @@ -1589,6 +1591,12 @@ public class CdmFormFactory extends FormToolkit { 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); @@ -2503,8 +2511,14 @@ public class CdmFormFactory extends FormToolkit { 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) { diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/DerivedUnitTypeDesignationElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/DerivedUnitTypeDesignationElement.java new file mode 100644 index 000000000..16249fe38 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/DerivedUnitTypeDesignationElement.java @@ -0,0 +1,78 @@ +// $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 { + + private List> 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 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 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) eventSource).getSelection().addTypeDesignation(getEntity(), false); + } + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/DerivedUnitTypeDesignationSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/DerivedUnitTypeDesignationSection.java new file mode 100644 index 000000000..d41ddfda8 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/DerivedUnitTypeDesignationSection.java @@ -0,0 +1,96 @@ +// $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 { + + private Collection typeDesignations; + + public DerivedUnitTypeDesignationSection(CdmFormFactory formFactory, + ConversationHolder conversation, ICdmFormElement parentElement, int style) { + super(formFactory, conversation, parentElement, "Type Designations", style); + } + + /** {@inheritDoc} */ + @Override + public Collection 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 toRemove = new ArrayList(); + for (SpecimenTypeDesignation specimenTypeDesignation : typeDesignations) { + if(element.equals(specimenTypeDesignation)){ + toRemove.add(specimenTypeDesignation); + } + } + for (SpecimenTypeDesignation specimenTypeDesignation : toRemove) { + specimenTypeDesignation.removeType(); + Set 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 diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java index 051397d9c..5908ab91e 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java @@ -90,6 +90,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.EmptySection; 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; @@ -589,6 +590,10 @@ public class DetailsViewer extends AbstractCdmDataViewer { 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);