From: Patric Plitzner Date: Mon, 20 Oct 2014 08:47:23 +0000 (+0000) Subject: - added sampleDesignation section to DnaSample details view (#4237) X-Git-Tag: 3.6.0~393^2~12 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/e4428955564572cba1eb7ce59741150b719873f8 - added sampleDesignation section to DnaSample details view (#4237) - added sampleDesignation to DerivateLabelProvider --- diff --git a/.gitattributes b/.gitattributes index 686340b0d..65aff74d8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1673,6 +1673,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/derivedUnit/PreservedSpecimenGeneralDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/derivedUnit/PreservedSpecimenGeneralDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/derivedUnit/PreservedSpecimenSourceCollectionDetailSection.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AbstractSampleDesignationDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AbstractUnboundEntityCollectionSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationCloningDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationCloningDetailSection.java -text @@ -1682,11 +1683,16 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationGeneralDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationPrimerDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationPrimerDetailSection.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/CurrentSampleDesignationDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaQualityDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaQualityDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/PrimerGeneralDetailElement.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationDetailElement.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationDetailSection.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationHistoryDetailSection.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationTextDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceContigFileCollectionDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceGeneralDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceGeneralDetailSection.java -text 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 771a1f068..96ce2035b 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 @@ -56,6 +56,7 @@ import eu.etaxonomy.cdm.model.common.Group; import eu.etaxonomy.cdm.model.common.ICdmBase; import eu.etaxonomy.cdm.model.common.IEnumTerm; import eu.etaxonomy.cdm.model.common.IdentifiableSource; +import eu.etaxonomy.cdm.model.common.Identifier; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.LanguageString; import eu.etaxonomy.cdm.model.common.Marker; @@ -85,6 +86,7 @@ import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.media.MediaRepresentation; import eu.etaxonomy.cdm.model.media.MediaRepresentationPart; import eu.etaxonomy.cdm.model.media.Rights; +import eu.etaxonomy.cdm.model.molecular.DnaSample; import eu.etaxonomy.cdm.model.name.NameRelationship; import eu.etaxonomy.cdm.model.name.NameTypeDesignation; import eu.etaxonomy.cdm.model.name.NomenclaturalStatus; @@ -237,11 +239,16 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGeneralDeta import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGeneralDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationPrimerDetailElement; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationPrimerDetailSection; +import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.CurrentSampleDesignationDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailElement; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailElement; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.PrimerGeneralDetailElement; +import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationDetailElement; +import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationDetailSection; +import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationHistoryDetailSection; +import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationTextDetailElement; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceContigFileCollectionDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailElement; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailSection; @@ -1810,6 +1817,12 @@ public class CdmFormFactory extends FormToolkit { return section; } + public SampleDesignationDetailSection createSampleDesignationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){ + SampleDesignationDetailSection section = new SampleDesignationDetailSection(this, conversation, parentElement, selectionProvider, style); + addAndAdaptSection(parentElement, section); + return section; + } + public PreservedSpecimenDeterminationDetailSection createPreservedSpecimenDeterminationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){ PreservedSpecimenDeterminationDetailSection section = new PreservedSpecimenDeterminationDetailSection(this, conversation, parentElement, selectionProvider, style); addAndAdaptSection(parentElement, section); @@ -2179,6 +2192,12 @@ public class CdmFormFactory extends FormToolkit { return element; } + public SampleDesignationDetailElement createSampleDesignationDetailElement(ICdmFormElement parentElement) { + SampleDesignationDetailElement element = new SampleDesignationDetailElement(this, parentElement); + addAndAdaptElement(parentElement, element); + return element; + } + /** * @param parentElement * @param element @@ -2333,6 +2352,12 @@ public class CdmFormFactory extends FormToolkit { return section; } + public CurrentSampleDesignationDetailSection createCurrentSampleDesignationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){ + CurrentSampleDesignationDetailSection section = new CurrentSampleDesignationDetailSection(this, conversation, parentElement, style); + addAndAdaptSection(parentElement, section); + return section; + } + public CurrentDeterminationDetailSection createCurrentDeterminationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){ CurrentDeterminationDetailSection section = new CurrentDeterminationDetailSection(this, conversation, parentElement, style); addAndAdaptSection(parentElement, section); @@ -2345,6 +2370,12 @@ public class CdmFormFactory extends FormToolkit { return section; } + public SampleDesignationHistoryDetailSection createSampleDesignationHistoryDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){ + SampleDesignationHistoryDetailSection section = new SampleDesignationHistoryDetailSection(this, conversation, parentElement, style); + addAndAdaptSection(parentElement, section); + return section; + } + public DeterminationHistoryDetailSection createDeterminationHistoryDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){ DeterminationHistoryDetailSection section = new DeterminationHistoryDetailSection(this, conversation, parentElement, style); addAndAdaptSection(parentElement, section); @@ -2555,6 +2586,8 @@ public class CdmFormFactory extends FormToolkit { if (descriptionElement.getFeature().equals(Feature.PROTOLOGUE())) { element = new ProtologueElement(this, parentElement, descriptionElement, removeListener, style); } + } else if (entity instanceof Identifier) { + element = new SampleDesignationTextDetailElement(this, parentElement, (Identifier) entity, removeListener, backgroundColor, style); } if (element == null) { diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CurrentDeterminationDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CurrentDeterminationDetailSection.java index 34f1cbbcc..1d4a8cc33 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CurrentDeterminationDetailSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CurrentDeterminationDetailSection.java @@ -1,9 +1,9 @@ // $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. */ @@ -14,6 +14,7 @@ import java.util.Arrays; import java.util.Collection; import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; @@ -46,43 +47,44 @@ public class CurrentDeterminationDetailSection extends int style) { super(formFactory, conversation, parentElement, "Current Determination", style); } - + @Override protected Control createToolbar() { ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT); - - Action addAction = new Action("add", Action.AS_PUSH_BUTTON){ + + Action addAction = new Action("add", IAction.AS_PUSH_BUTTON){ /* (non-Javadoc) * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { DeterminationEvent element = createNewElement(); - + // set as preferred determination getEntity().setPreferredDetermination(element); - + if(element != null){ - if(! getSection().isExpanded()) - getSection().setExpanded(true); - internalUpdateSection(true); + if(! getSection().isExpanded()) { + getSection().setExpanded(true); + } + internalUpdateSection(true); } } }; addAction.setImageDescriptor(new ImageDescriptor() { - + @Override public ImageData getImageData() { return ImageResources.getImage(ImageResources.ADD_ICON).getImageData(); } }); addAction.setToolTipText(getTooltipString()); - + toolBarManager.add(addAction); - + return toolBarManager.createControl(this); } - + @Override public void refresh() { internalUpdateSection(false); @@ -96,7 +98,7 @@ public class CurrentDeterminationDetailSection extends DeterminationEvent preferredDetermination = entity.getPreferredDetermination(); return preferredDetermination != null ? Arrays.asList(new DeterminationEvent[]{preferredDetermination}) : null; } - + /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.ui.section.occurrence.AbstractDeterminationEventDetailSection#createNewElement() */ @@ -106,7 +108,7 @@ public class CurrentDeterminationDetailSection extends newElement.setPreferredFlag(true); return newElement; } - + /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getTooltipString() diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AbstractSampleDesignationDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AbstractSampleDesignationDetailSection.java new file mode 100644 index 000000000..50f8bf025 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AbstractSampleDesignationDetailSection.java @@ -0,0 +1,73 @@ +// $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.dna; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.model.common.Identifier; +import eu.etaxonomy.cdm.model.molecular.DnaSample; +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; +import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection; +import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider; + +/** + * + * @author pplitzner + * @date Oct 16, 2014 + * + */ +public abstract class AbstractSampleDesignationDetailSection extends + AbstractEntityCollectionSection> { + + public AbstractSampleDesignationDetailSection(CdmFormFactory formFactory, + ConversationHolder conversation, ICdmFormElement parentElement, + String title, int style) { + super(formFactory, conversation, parentElement, title, style); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#createNewElement() + */ + /** {@inheritDoc} */ + @Override + public Identifier createNewElement() { + Identifier identifier = getEntity().addIdentifier(null, DerivateLabelProvider.getSampleDesignationTerm()); + return identifier; + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#addElement(eu.etaxonomy.cdm.model.common.IVersionableEntity) + */ + /** {@inheritDoc} */ + @Override + public void addElement(Identifier sampleDesignation) { + getEntity().addIdentifier(sampleDesignation); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#removeElement(eu.etaxonomy.cdm.model.common.IVersionableEntity) + */ + /** {@inheritDoc} */ + @Override + public void removeElement(Identifier sampleDesignation) { + getEntity().removeIdentifier(sampleDesignation); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getEmptyString() + */ + /** {@inheritDoc} */ + @Override + public String getEmptyString() { + return "No sample designations yet."; + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/CurrentSampleDesignationDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/CurrentSampleDesignationDetailSection.java new file mode 100644 index 000000000..4c782d214 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/CurrentSampleDesignationDetailSection.java @@ -0,0 +1,118 @@ +// $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.dna; + +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedList; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.ToolBarManager; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.widgets.Control; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.model.common.Identifier; +import eu.etaxonomy.cdm.model.molecular.DnaSample; +import eu.etaxonomy.taxeditor.model.ImageResources; +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; +import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider; + +/** + * + * @author pplitzner + * @date Oct 16, 2014 + * + */ +public class CurrentSampleDesignationDetailSection extends AbstractSampleDesignationDetailSection { + + public CurrentSampleDesignationDetailSection(CdmFormFactory formFactory, + ConversationHolder conversation, ICdmFormElement parentElement, + int style) { + super(formFactory, conversation, parentElement, "Current Sample Designation", style); + } + + @Override + protected Control createToolbar() { + ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT); + + Action addAction = new Action("add", IAction.AS_PUSH_BUTTON){ + /* (non-Javadoc) + * @see org.eclipse.jface.action.Action#run() + */ + @Override + public void run() { + Identifier element = createNewElement(); + + getEntity().addIdentifier(element); + + if(element != null){ + if(! getSection().isExpanded()) { + getSection().setExpanded(true); + } + internalUpdateSection(true); + } + } + }; + addAction.setImageDescriptor(new ImageDescriptor() { + + @Override + public ImageData getImageData() { + return ImageResources.getImage(ImageResources.ADD_ICON).getImageData(); + } + }); + addAction.setToolTipText(getTooltipString()); + + toolBarManager.add(addAction); + + return toolBarManager.createControl(this); + } + + @Override + public void refresh() { + internalUpdateSection(false); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection#getCollection(java.lang.Object) + */ + @Override + public Collection> getCollection(DnaSample entity) { + LinkedList> sampleDesignations = new LinkedList>(); + for (Identifier identifier : entity.getIdentifiers()) { + if(identifier.getType()!=null && identifier.getType().equals(DerivateLabelProvider.getSampleDesignationTerm())){ + sampleDesignations.add(identifier); + } + } + Collections.reverse(sampleDesignations); + if(sampleDesignations.size()>0){ + //last sample designation is the current + return Collections.singleton(sampleDesignations.getFirst()); + } + else{ + return Collections.emptyList(); + } + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getTooltipString() + */ + /** {@inheritDoc} */ + @Override + protected String getTooltipString() { + return "Create new current sample designation"; + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailElement.java index d0dd9c4dd..3b5dc4d88 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailElement.java @@ -31,7 +31,6 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement; */ public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement { - private TimePeriodElement datePreservationDate; private EntitySelectionElement selectionPreparedBy; private NumberWithLabelElement numberPreservationTemperature; @@ -56,7 +55,7 @@ public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement actor = null; Double temperature = null; DefinedTerm definedMaterialOrMethod = null; if(entity.getPreservation()!=null){ @@ -66,13 +65,13 @@ public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement { + + private CurrentSampleDesignationDetailSection sectionCurrentSampleDesignation; + + private SampleDesignationHistoryDetailSection sectionSampleDesignationHistory; + + /** + * @param formFactory + * @param formElement + */ + public SampleDesignationDetailElement(CdmFormFactory formFactory, + ICdmFormElement formElement) { + super(formFactory, formElement); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#createControls(eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement, java.lang.Object, int) + */ + @Override + protected void createControls(ICdmFormElement formElement, + DnaSample entity, int style) { + + sectionCurrentSampleDesignation = formFactory.createCurrentSampleDesignationDetailSection(getConversationHolder(), formElement, ExpandableComposite.EXPANDED); + sectionCurrentSampleDesignation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); + sectionCurrentSampleDesignation.setEntity(entity); + + sectionSampleDesignationHistory = formFactory.createSampleDesignationHistoryDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE); + sectionSampleDesignationHistory.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); + sectionSampleDesignationHistory.setEntity(entity); + + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#handleEvent(java.lang.Object) + */ + @Override + public void handleEvent(Object eventSource) { + if(eventSource == sectionCurrentSampleDesignation){ + sectionSampleDesignationHistory.refresh(); + } + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationDetailSection.java new file mode 100644 index 000000000..f10974c28 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationDetailSection.java @@ -0,0 +1,64 @@ +// $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.dna; + +import org.eclipse.jface.viewers.ISelectionProvider; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.model.molecular.DnaSample; +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; +import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; +import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection; + +/** + * @author n.hoffmann + * @created May 11, 2011 + * @version 1.0 + */ +public class SampleDesignationDetailSection extends AbstractCdmDetailSection { + + /** + * @param formFactory + * @param conversation + * @param parentElement + * @param selectionProvider + * @param style + */ + public SampleDesignationDetailSection(CdmFormFactory formFactory, + ConversationHolder conversation, ICdmFormElement parentElement, + ISelectionProvider selectionProvider, int style) { + super(formFactory, conversation, parentElement, selectionProvider, style); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#getHeading() + */ + @Override + public String getHeading() { + return "Sample Designations"; + } + + @Override + protected void setSectionTitle() { + this.setText(getHeading()); + setTextClient(createToolbar()); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int) + */ + @Override + protected AbstractCdmDetailElement createCdmDetailElement(AbstractCdmDetailSection parentElement, int style) { + return formFactory.createSampleDesignationDetailElement(parentElement); + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationHistoryDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationHistoryDetailSection.java new file mode 100644 index 000000000..08a05af73 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationHistoryDetailSection.java @@ -0,0 +1,76 @@ +// $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.dna; + +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedList; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.model.common.Identifier; +import eu.etaxonomy.cdm.model.molecular.DnaSample; +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; +import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider; + +/** + * @author n.hoffmann + * @created May 11, 2011 + * @version 1.0 + */ +public class SampleDesignationHistoryDetailSection extends AbstractSampleDesignationDetailSection { + + /** + * @param formFactory + * @param conversation + * @param parentElement + * @param style + */ + public SampleDesignationHistoryDetailSection(CdmFormFactory formFactory, + ConversationHolder conversation, ICdmFormElement parentElement, + int style) { + super(formFactory, conversation, parentElement, "Sample Designation History", style); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection#getCollection(java.lang.Object) + */ + @Override + public Collection> getCollection(DnaSample entity) { + LinkedList> sampleDesignations = new LinkedList>(); + for (Identifier identifier : entity.getIdentifiers()) { + if(identifier.getType()!=null && identifier.getType().equals(DerivateLabelProvider.getSampleDesignationTerm())){ + sampleDesignations.add(identifier); + } + } + Collections.reverse(sampleDesignations); + if(sampleDesignations.size()>0){ + sampleDesignations.removeFirst();//last is the current sample designation + } + return sampleDesignations; + } + + @Override + public void refresh() { + internalUpdateSection(false); + } + + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getTooltipString() + */ + /** {@inheritDoc} */ + @Override + protected String getTooltipString() { + return "Add a sample designation to the history"; + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationTextDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationTextDetailElement.java new file mode 100644 index 000000000..1fe760365 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SampleDesignationTextDetailElement.java @@ -0,0 +1,82 @@ +// $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.dna; + +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Color; + +import eu.etaxonomy.cdm.model.common.Identifier; +import eu.etaxonomy.cdm.model.molecular.DnaSample; +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.element.TextWithLabelElement; +import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement; + +/** + * + * @author pplitzner + * @date Oct 16, 2014 + * + * @param + */ +public class SampleDesignationTextDetailElement extends + AbstractEntityCollectionElement> { + + protected TextWithLabelElement text_description; + + /** + * @param formFactory + * @param section + * @param entity + * @param removeListener + * @param backgroundColor + * @param style + */ + public SampleDesignationTextDetailElement(CdmFormFactory formFactory, AbstractFormSection section, + Identifier entity, SelectionListener removeListener, Color backgroundColor, int style) { + super(formFactory, section, entity, removeListener, backgroundColor, style); + } + + /* + * (non-Javadoc) + * + * @see + * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#createControls + * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, int) + */ + /** {@inheritDoc} */ + @Override + public void createControls(ICdmFormElement element, int style) { + text_description = formFactory.createTextWithLabelElement(element, + "Sample Designation", null, style); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement#handleEvent(java.lang.Object) + */ + @Override + public void handleEvent(Object eventSource) { + if(eventSource==text_description){ + this.entity.setIdentifier(text_description.getText()); + } + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement#setEntity(java.lang.Object) + */ + @Override + public void setEntity(Identifier entity) { + this.entity = entity; + text_description.setText(entity.getIdentifier()); + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java index e7e014a1b..1a1b4833f 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java @@ -52,6 +52,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider { private static DefinedTerm drawingTerm = null; private static DefinedTerm specimenScanTerm = null; private static DefinedTerm detailImageTerm = null; + private static DefinedTerm sampleDesignationTerm = null; private static void initializeTerms() { List preferredTerms = CdmStore.getTermManager().getPreferredTerms(DefinedTerm.class); @@ -68,6 +69,9 @@ public class DerivateLabelProvider extends ColumnLabelProvider { else if(definedTerm.getUuid().equals(UUID.fromString("31eb8d02-bf5d-437c-bcc6-87a626445f34"))){ detailImageTerm = definedTerm; } + else if(definedTerm.getUuid().equals(UUID.fromString("fadeba12-1be3-4bc7-9ff5-361b088d86fc"))){ + sampleDesignationTerm = definedTerm; + } } } @@ -99,6 +103,13 @@ public class DerivateLabelProvider extends ColumnLabelProvider { return detailImageTerm; } + public static DefinedTerm getSampleDesignationTerm(){ + if(sampleDesignationTerm==null){ + initializeTerms(); + } + return sampleDesignationTerm; + } + /** {@inheritDoc} */ @Override @@ -166,7 +177,15 @@ public class DerivateLabelProvider extends ColumnLabelProvider { else if(element instanceof DnaSample || (element instanceof DerivedUnit && ((SpecimenOrObservationBase) element).getRecordBasis()==SpecimenOrObservationType.DnaSample)){ - label += "[no sample designation]"; + DerivedUnit derivedUnit = (DerivedUnit)element; + Set identifiers = derivedUnit.getIdentifiers(getSampleDesignationTerm()); + if(identifiers.isEmpty()){ + label += "[no sample designation]"; + } + else{ + String identifier = identifiers.iterator().next(); + label += identifier==null?"":identifier; + } } else if(element instanceof DerivedUnit){ 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 bedd1ffe7..231a10e0d 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 @@ -101,6 +101,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGeneralDeta import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationPrimerDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSection; +import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceContigFileCollectionDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceReferenceCollectionDetailSection; @@ -770,8 +771,14 @@ public class DetailsViewer extends AbstractCdmDataViewer { DnaQualityDetailSection qualitySection = formFactory.createDnaQualityDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); + + formFactory.createHorizontalSeparator(parent, SWT.BORDER); + + SampleDesignationDetailSection sampleDesignationDetailSection = formFactory.createSampleDesignationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); + addPart(section); addPart(qualitySection); + addPart(sampleDesignationDetailSection); } private void createAmplificationSection(RootElement parent) {