From 67ebf787ddd19bc2ab8bc5c27887a7c76de25902 Mon Sep 17 00:00:00 2001 From: Patric Plitzner Date: Mon, 20 Jan 2014 08:12:36 +0000 Subject: [PATCH 1/1] - added separate section for primer and cloning - removed "null" message in data source conversion dialog --- .gitattributes | 5 +- .../taxeditor/model/AbstractUtility.java | 2 +- .../taxeditor/ui/element/CdmFormFactory.java | 33 +++- .../AmplificationCloningDetailElement.java | 90 ++++++++++ .../AmplificationCloningDetailSection.java | 58 +++++++ .../AmplificationDetailElement.java | 79 --------- .../AmplificationGeneralDetailElement.java | 154 +---------------- .../AmplificationPrimerDetailElement.java | 161 ++++++++++++++++++ .../AmplificationPrimerDetailSection.java | 58 +++++++ .../SequenceGeneralDetailElement.java | 10 +- ...uenceReferenceCollectionDetailSection.java | 3 +- .../section/taxon/TaxonBaseDetailElement.java | 6 +- .../taxeditor/view/detail/DetailsViewer.java | 29 ++-- 13 files changed, 432 insertions(+), 256 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailElement.java create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailSection.java delete mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationDetailElement.java create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailElement.java create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailSection.java diff --git a/.gitattributes b/.gitattributes index c4cd1b650..55d65aef5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1489,9 +1489,12 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/nam eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/TypeDesignationSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AbstractDeterminationEventDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AbstractEventDetailElement.java -text -eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationDetailElement.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailElement.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationGeneralDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationGeneralDetailSection.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailElement.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/ArtworkGeneralDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/ArtworkGeneralDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectingAreasDetailSection.java -text diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java index 520ff6423..e335480a8 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java @@ -386,7 +386,7 @@ public abstract class AbstractUtility { private String getCauseRecursively(Throwable t) { if(t == null){ - return null; + return ""; } if(t.getCause() != null){ 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 ac9f81406..c21769938 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 @@ -208,8 +208,12 @@ import eu.etaxonomy.taxeditor.ui.section.name.ProtologueElement; import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection; import eu.etaxonomy.taxeditor.ui.section.name.SpecimenTypeDesignationElement; import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection; +import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationCloningDetailElement; +import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationCloningDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationGeneralDetailElement; import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationGeneralDetailSection; +import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationPrimerDetailElement; +import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationPrimerDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.ArtworkGeneralDetailElement; import eu.etaxonomy.taxeditor.ui.section.occurrence.ArtworkGeneralDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectingAreasDetailSection; @@ -992,7 +996,10 @@ public class CdmFormFactory extends FormToolkit { * @return a {@link eu.etaxonomy.taxeditor.ui.element.CheckboxElement} * object. */ - public CheckboxElement createCheckbox(ICdmFormElement parentElement, String label, boolean initialState, int style) { + public CheckboxElement createCheckbox(ICdmFormElement parentElement, String label, Boolean initialState, int style) { + if(initialState==null){ + initialState = Boolean.FALSE; + } CheckboxElement element = new CheckboxElement(this, parentElement, label, initialState, style | orientation); adapt(element); parentElement.addElement(element); @@ -1687,6 +1694,18 @@ public class CdmFormFactory extends FormToolkit { return section; } + public AmplificationPrimerDetailSection createAmplificationPrimerDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){ + AmplificationPrimerDetailSection section = new AmplificationPrimerDetailSection(this, conversation, parentElement, selectionProvider, style); + addAndAdaptSection(parentElement, section); + return section; + } + + public AmplificationCloningDetailSection createAmplificationCloningDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){ + AmplificationCloningDetailSection section = new AmplificationCloningDetailSection(this, conversation, parentElement, selectionProvider, style); + addAndAdaptSection(parentElement, section); + return section; + } + public SpecimenScanGeneralDetailSection createSpecimenScanGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){ SpecimenScanGeneralDetailSection section = new SpecimenScanGeneralDetailSection(this, conversation, parentElement, selectionProvider, style); addAndAdaptSection(parentElement, section); @@ -2001,6 +2020,18 @@ public class CdmFormFactory extends FormToolkit { return element; } + public AmplificationPrimerDetailElement createAmplificationPrimerDetailElement(ICdmFormElement parentElement){ + AmplificationPrimerDetailElement element = new AmplificationPrimerDetailElement(this, parentElement); + addAndAdaptElement(parentElement, element); + return element; + } + + public AmplificationCloningDetailElement createAmplificationCloningDetailElement(ICdmFormElement parentElement){ + AmplificationCloningDetailElement element = new AmplificationCloningDetailElement(this, parentElement); + addAndAdaptElement(parentElement, element); + return element; + } + public SpecimenScanGeneralDetailElement createSpecimenScanGeneralDetailElement(ICdmFormElement parentElement){ SpecimenScanGeneralDetailElement element = new SpecimenScanGeneralDetailElement(this, parentElement); addAndAdaptElement(parentElement, element); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailElement.java new file mode 100644 index 000000000..2aa67ab53 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailElement.java @@ -0,0 +1,90 @@ +// $Id$ +/** +* Copyright (C) 2014 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; + +import eu.etaxonomy.cdm.model.agent.AgentBase; +import eu.etaxonomy.cdm.model.common.DefinedTerm; +import eu.etaxonomy.cdm.model.molecular.Amplification; +import eu.etaxonomy.cdm.model.molecular.Cloning; +import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement; +import eu.etaxonomy.taxeditor.ui.combo.TermComboElement; +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement; +import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement; +import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; +import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement; + +/** + * @author pplitzner + * @date 15.01.2014 + * + */ +public class AmplificationCloningDetailElement extends AbstractCdmDetailElement { + private TextWithLabelElement textCloningStrain; + private TimePeriodElement dateCloning; + private EntitySelectionElement selectionCloningStaff; + private TermComboElement comboCloningMaterialOrMethod; + + + /** + * @param formFactory + * @param formElement + */ + public AmplificationCloningDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) { + super(formFactory, formElement); + } + + /* + * (non-Javadoc) + * + * @see + * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls + * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int) + */ + @Override + protected void createControls(ICdmFormElement formElement, Amplification entity, int style) { + Cloning cloning = entity.getCloning(); + textCloningStrain = formFactory.createTextWithLabelElement(formElement, "Cloning Strain", cloning==null?"":cloning.getStrain(), style); + dateCloning = formFactory.createTimePeriodElement(formElement, "Cloning Date", cloning==null?null:cloning.getTimeperiod(), style); + selectionCloningStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Cloning Staff", cloning==null?null:cloning.getActor(), EntitySelectionElement.ALL, style); + comboCloningMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Cloning Mat. & Meth.", cloning==null?null:cloning.getDefinedMaterialOrMethod(), style); + } + + /* + * (non-Javadoc) + * + * @see + * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java + * .lang.Object) + */ + @Override + public void handleEvent(Object eventSource) { + if(eventSource==textCloningStrain || eventSource==dateCloning|| eventSource==selectionCloningStaff || eventSource==comboCloningMaterialOrMethod){ + Cloning cloning = getEntity().getCloning(); + if(cloning==null){ + cloning = Cloning.NewInstance(); + getEntity().setCloning(cloning); + } + if(eventSource==textCloningStrain){ + cloning.setStrain(textCloningStrain.getText()); + } + else if(eventSource==dateCloning){ + cloning.setTimeperiod(dateCloning.getTimePeriod()); + } + else if(eventSource==selectionCloningStaff){ + cloning.setActor(selectionCloningStaff.getSelection()); + } + else if(eventSource==comboCloningMaterialOrMethod){ + cloning.setDefinedMaterialOrMethod(comboCloningMaterialOrMethod.getSelection()); + } + } + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailSection.java new file mode 100644 index 000000000..6a4998fab --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailSection.java @@ -0,0 +1,58 @@ +// $Id$ +/** +* Copyright (C) 2014 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; + +import org.eclipse.jface.viewers.ISelectionProvider; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.model.molecular.Amplification; +import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement; +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; +import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection; + +/** + * @author pplitzner + * @date 15.01.2014 + * + */ +public class AmplificationCloningDetailSection extends AbstractCdmDetailSection { + + /** + * @param formFactory + * @param conversation + * @param parentElement + * @param selectionProvider + * @param style + */ + public AmplificationCloningDetailSection(CdmFormFactory formFactory, + ConversationHolder conversation, ICdmFormElement parentElement, + ISelectionProvider selectionProvider, int style) { + super(formFactory, conversation, parentElement, selectionProvider, style); + } + + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#getHeading() + */ + @Override + public String getHeading() { + return "Cloning"; + } + + /* (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.createAmplificationCloningDetailElement(parentElement); + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationDetailElement.java deleted file mode 100644 index ac22ff096..000000000 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationDetailElement.java +++ /dev/null @@ -1,79 +0,0 @@ -// $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; - -import org.eclipse.swt.events.SelectionListener; - -import eu.etaxonomy.cdm.model.common.DefinedTerm; -import eu.etaxonomy.cdm.model.molecular.Amplification; -import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement; -import eu.etaxonomy.taxeditor.ui.combo.TermComboElement; -import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection; -import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; -import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement; - -/** - * - * @author pplitzner - * @date 17.12.2013 - * - */ -public class AmplificationDetailElement extends AbstractEntityCollectionElement { - - private TermComboElement comboDnaMarker; - - public AmplificationDetailElement(CdmFormFactory formFactory, - AbstractFormSection section, Amplification entity, - SelectionListener removeListener, int style) { - super(formFactory, section, entity, removeListener, null, style); - } - - /* - * (non-Javadoc) - * - * @see - * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#setEntity - * (eu.etaxonomy.cdm.model.common.IVersionableEntity) - */ - /** {@inheritDoc} */ - @Override - public void setEntity(Amplification entity) { - this.entity = entity; - comboDnaMarker.setSelection(entity.getDnaMarker()); - } - - - /* - * (non-Javadoc) - * - * @see - * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#createControls - * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, int) - */ - /** {@inheritDoc} */ - @Override - public void createControls(ICdmFormElement element, int style) { - comboDnaMarker = formFactory.createTermComboElement(DefinedTerm.class, - element, "DNA Marker", null, style); - } - - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement#handleEvent(java.lang.Object) - */ - @Override - public void handleEvent(Object eventSource) { - if (eventSource == comboDnaMarker) { - getEntity().setDnaMarker(comboDnaMarker.getSelection()); - } - - } - -} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationGeneralDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationGeneralDetailElement.java index c62ebf749..1aa15fcca 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationGeneralDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationGeneralDetailElement.java @@ -9,20 +9,14 @@ */ package eu.etaxonomy.taxeditor.ui.section.occurrence; -import org.eclipse.swt.widgets.Label; - import eu.etaxonomy.cdm.model.agent.AgentBase; import eu.etaxonomy.cdm.model.common.DefinedTerm; import eu.etaxonomy.cdm.model.molecular.Amplification; -import eu.etaxonomy.cdm.model.molecular.Cloning; -import eu.etaxonomy.cdm.model.molecular.Primer; -import eu.etaxonomy.cdm.model.molecular.Sequence; import eu.etaxonomy.cdm.model.occurrence.MaterialOrMethodEvent; -import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement; import eu.etaxonomy.taxeditor.ui.combo.TermComboElement; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; -import eu.etaxonomy.taxeditor.ui.element.LayoutConstants; +import eu.etaxonomy.taxeditor.ui.element.CheckboxElement; import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement; import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement; import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement; @@ -39,7 +33,7 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement< private TermComboElement comboMarker; private TimePeriodElement dateAmplification; private EntitySelectionElement selectionAmplificationStaff; - private TextWithLabelElement textAmplificationSuccess; + private CheckboxElement checkBoxAmplificationSuccess; private TextWithLabelElement textAmplificationSuccessDetails; private TermComboElement comboAmplificationMaterialOrMethod; @@ -50,19 +44,6 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement< private TextWithLabelElement textGelPhoto; private TermComboElement comboPurificationMaterialOrMethod; - //forward primer - private TextWithLabelElement textPrimerForwardName; - private TextWithLabelElement textPrimerForwardSequence; - private EntitySelectionElement selectionPrimerForwardReference; - //reverse primer - private TextWithLabelElement textPrimerReverseName; - private TextWithLabelElement textPrimerReverseSequence; - private EntitySelectionElement selectionPrimerReverseReference; - //cloning - private TextWithLabelElement textCloningStrain; - private TimePeriodElement dateCloning; - private EntitySelectionElement selectionCloningStaff; - private TermComboElement comboCloningMaterialOrMethod; /** @@ -85,7 +66,7 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement< comboMarker = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Marker", entity.getDnaMarker(), style); dateAmplification = formFactory.createTimePeriodElement(formElement, "Amplification Date", entity.getTimeperiod(), style); selectionAmplificationStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Amplification staff", entity.getActor(), EntitySelectionElement.ALL, style); - textAmplificationSuccess = formFactory.createTextWithLabelElement(formElement, "Amplification Success", entity.getSuccessful(), style); + checkBoxAmplificationSuccess = formFactory.createCheckbox(formElement, "Amplification Success", entity.getSuccessful(), style); textAmplificationSuccessDetails = formFactory.createTextWithLabelElement(formElement, "Ampl. Success Details", entity.getSuccessText(), style); // comboAmplificationMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Ampl. Mat. & Meth.", entity.get, style) numberGelVoltage = formFactory.createNumberTextWithLabelElement(formElement, "Gel Voltage (V)", entity.getElectrophoresisVoltage(), style); @@ -95,65 +76,6 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement< textGelPhoto = formFactory.createTextWithLabelElement(formElement, "Gel Photo", "XXX", style); comboPurificationMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Purification Mat. & Meth.", entity.getPurification()==null?null:entity.getPurification().getDefinedMaterialOrMethod(), style); - - Label createHorizontalSeparator1 = formFactory.createHorizontalSeparator(formElement, style); - createHorizontalSeparator1.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); - //first primer - Primer forwardPrimer = entity.getForwardPrimer(); - String initialName; - String initalSequenceString; - Reference initialReference; - if(forwardPrimer==null){ - initialName = ""; - initalSequenceString = null; - initialReference = null; - } - else{ - initialName = forwardPrimer.getLabel(); - initialReference = forwardPrimer.getPublishedIn(); - if(forwardPrimer.getSequence()==null){ - initalSequenceString = ""; - } - else{ - initalSequenceString = forwardPrimer.getSequence().getSequenceString(); - } - } - textPrimerForwardName = formFactory.createTextWithLabelElement(formElement, "Forward Primer", initialName, style); - textPrimerForwardSequence = formFactory.createTextWithLabelElement(formElement, "Fw. Primer Sequence", initalSequenceString, style); - selectionPrimerForwardReference = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Fw. Primer Reference", initialReference, EntitySelectionElement.ALL, style); - - //second primer - Primer reversePrimer = entity.getForwardPrimer(); - String initialNameReverse; - String initalSequenceStringReverse; - Reference initialReferenceReverse; - if(reversePrimer==null){ - initialNameReverse = ""; - initalSequenceStringReverse = null; - initialReferenceReverse = null; - } - else{ - initialNameReverse = reversePrimer.getLabel(); - initialReferenceReverse = reversePrimer.getPublishedIn(); - if(reversePrimer.getSequence()==null){ - initalSequenceStringReverse = ""; - } - else{ - initalSequenceStringReverse = reversePrimer.getSequence().getSequenceString(); - } - } - textPrimerReverseName = formFactory.createTextWithLabelElement(formElement, "Reverse Primer", initialNameReverse, style); - textPrimerReverseSequence = formFactory.createTextWithLabelElement(formElement, "Rv. Primer Sequence", initalSequenceStringReverse, style); - selectionPrimerReverseReference = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Rv. Primer Reference", initialReferenceReverse, EntitySelectionElement.ALL, style); - - Label createHorizontalSeparator = formFactory.createHorizontalSeparator(formElement, style); - createHorizontalSeparator.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); - - Cloning cloning = entity.getCloning(); - textCloningStrain = formFactory.createTextWithLabelElement(formElement, "Cloning Strain", cloning==null?"":cloning.getStrain(), style); - dateCloning = formFactory.createTimePeriodElement(formElement, "Cloning Date", cloning==null?null:cloning.getTimeperiod(), style); - selectionCloningStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Cloning Staff", cloning==null?null:cloning.getActor(), EntitySelectionElement.ALL, style); - comboCloningMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Cloning Mat. & Meth.", cloning==null?null:cloning.getDefinedMaterialOrMethod(), style); } /* @@ -174,8 +96,8 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement< else if(eventSource==selectionAmplificationStaff){ getEntity().setActor(selectionAmplificationStaff.getEntity()); } - else if(eventSource==textAmplificationSuccess){ - getEntity().setSuccessful(Boolean.valueOf(textAmplificationSuccess.getText())); + else if(eventSource==checkBoxAmplificationSuccess){ + getEntity().setSuccessful(checkBoxAmplificationSuccess.getSelection()); } else if(eventSource==textAmplificationSuccessDetails){ getEntity().setSuccessText(textAmplificationSuccessDetails.getText()); @@ -206,71 +128,5 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement< } purification.setDefinedMaterialOrMethod(comboPurificationMaterialOrMethod.getSelection()); } - else if(eventSource==textPrimerForwardName || eventSource==textPrimerForwardSequence || eventSource==selectionPrimerForwardReference){ - Primer forwardPrimer = getEntity().getForwardPrimer(); - if(forwardPrimer==null){ - forwardPrimer = Primer.NewInstance(""); - getEntity().setForwardPrimer(forwardPrimer); - } - if(eventSource==textPrimerForwardName){ - forwardPrimer.setLabel(textPrimerForwardName.getText()); - } - else if(eventSource==textPrimerForwardSequence){ - Sequence sequence = forwardPrimer.getSequence(); - if(sequence==null){ - sequence = Sequence.NewInstance(textPrimerForwardSequence.getText()); - forwardPrimer.setSequence(sequence); - } - else{ - sequence.setSequenceString(textPrimerForwardSequence.getText()); - } - } - else if(eventSource==selectionPrimerForwardReference){ - forwardPrimer.setPublishedIn(selectionPrimerForwardReference.getSelection()); - } - } - else if(eventSource==textPrimerReverseName || eventSource==textPrimerReverseSequence || eventSource==selectionPrimerReverseReference){ - Primer reversePrimer = getEntity().getReversePrimer(); - if(reversePrimer==null){ - reversePrimer = Primer.NewInstance(""); - getEntity().setReversePrimer(reversePrimer); - } - if(eventSource==textPrimerReverseName){ - reversePrimer.setLabel(textPrimerReverseName.getText()); - } - else if(eventSource==textPrimerReverseSequence){ - Sequence sequence = reversePrimer.getSequence(); - if(sequence==null){ - sequence = Sequence.NewInstance(textPrimerReverseSequence.getText()); - reversePrimer.setSequence(sequence); - } - else{ - sequence.setSequenceString(textPrimerReverseSequence.getText()); - } - } - else if(eventSource==selectionPrimerReverseReference){ - reversePrimer.setPublishedIn(selectionPrimerReverseReference.getSelection()); - } - } - else if(eventSource==textCloningStrain || eventSource==dateCloning|| eventSource==selectionCloningStaff || eventSource==comboCloningMaterialOrMethod){ - Cloning cloning = getEntity().getCloning(); - if(cloning==null){ - cloning = Cloning.NewInstance(); - getEntity().setCloning(cloning); - } - if(eventSource==textCloningStrain){ - cloning.setStrain(textCloningStrain.getText()); - } - else if(eventSource==dateCloning){ - cloning.setTimeperiod(dateCloning.getTimePeriod()); - } - else if(eventSource==selectionCloningStaff){ - cloning.setActor(selectionCloningStaff.getSelection()); - } - else if(eventSource==comboCloningMaterialOrMethod){ - cloning.setDefinedMaterialOrMethod(comboCloningMaterialOrMethod.getSelection()); - } - } } - } \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailElement.java new file mode 100644 index 000000000..a31dd01aa --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailElement.java @@ -0,0 +1,161 @@ +// $Id$ +/** + * Copyright (C) 2014 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; + +import eu.etaxonomy.cdm.model.molecular.Amplification; +import eu.etaxonomy.cdm.model.molecular.Primer; +import eu.etaxonomy.cdm.model.molecular.Sequence; +import eu.etaxonomy.cdm.model.reference.Reference; +import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement; +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement; +import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; +import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement; + +/** + * @author pplitzner + * @date 15.01.2014 + * + */ +public class AmplificationPrimerDetailElement extends AbstractCdmDetailElement { + + //forward primer + private TextWithLabelElement textPrimerForwardName; + private TextWithLabelElement textPrimerForwardSequence; + private EntitySelectionElement selectionPrimerForwardReference; + //reverse primer + private TextWithLabelElement textPrimerReverseName; + private TextWithLabelElement textPrimerReverseSequence; + private EntitySelectionElement selectionPrimerReverseReference; + + + /** + * @param formFactory + * @param formElement + */ + public AmplificationPrimerDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) { + super(formFactory, formElement); + } + + /* + * (non-Javadoc) + * + * @see + * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls + * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int) + */ + @Override + protected void createControls(ICdmFormElement formElement, Amplification entity, int style) { + //first primer + Primer forwardPrimer = entity.getForwardPrimer(); + String initialName; + String initalSequenceString; + Reference initialReference; + if(forwardPrimer==null){ + initialName = ""; + initalSequenceString = null; + initialReference = null; + } + else{ + initialName = forwardPrimer.getLabel(); + initialReference = forwardPrimer.getPublishedIn(); + if(forwardPrimer.getSequence()==null){ + initalSequenceString = ""; + } + else{ + initalSequenceString = forwardPrimer.getSequence().getSequenceString(); + } + } + textPrimerForwardName = formFactory.createTextWithLabelElement(formElement, "Forward Primer", initialName, style); + textPrimerForwardSequence = formFactory.createTextWithLabelElement(formElement, "Fw. Primer Sequence", initalSequenceString, style); + selectionPrimerForwardReference = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Fw. Primer Reference", initialReference, EntitySelectionElement.ALL, style); + + //second primer + Primer reversePrimer = entity.getForwardPrimer(); + String initialNameReverse; + String initalSequenceStringReverse; + Reference initialReferenceReverse; + if(reversePrimer==null){ + initialNameReverse = ""; + initalSequenceStringReverse = null; + initialReferenceReverse = null; + } + else{ + initialNameReverse = reversePrimer.getLabel(); + initialReferenceReverse = reversePrimer.getPublishedIn(); + if(reversePrimer.getSequence()==null){ + initalSequenceStringReverse = ""; + } + else{ + initalSequenceStringReverse = reversePrimer.getSequence().getSequenceString(); + } + } + textPrimerReverseName = formFactory.createTextWithLabelElement(formElement, "Reverse Primer", initialNameReverse, style); + textPrimerReverseSequence = formFactory.createTextWithLabelElement(formElement, "Rv. Primer Sequence", initalSequenceStringReverse, style); + selectionPrimerReverseReference = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Rv. Primer Reference", initialReferenceReverse, EntitySelectionElement.ALL, style); + } + + /* + * (non-Javadoc) + * + * @see + * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java + * .lang.Object) + */ + @Override + public void handleEvent(Object eventSource) { + if(eventSource==textPrimerForwardName || eventSource==textPrimerForwardSequence || eventSource==selectionPrimerForwardReference){ + Primer forwardPrimer = getEntity().getForwardPrimer(); + if(forwardPrimer==null){ + forwardPrimer = Primer.NewInstance(""); + getEntity().setForwardPrimer(forwardPrimer); + } + if(eventSource==textPrimerForwardName){ + forwardPrimer.setLabel(textPrimerForwardName.getText()); + } + else if(eventSource==textPrimerForwardSequence){ + Sequence sequence = forwardPrimer.getSequence(); + if(sequence==null){ + sequence = Sequence.NewInstance(textPrimerForwardSequence.getText()); + forwardPrimer.setSequence(sequence); + } + else{ + sequence.setSequenceString(textPrimerForwardSequence.getText()); + } + } + else if(eventSource==selectionPrimerForwardReference){ + forwardPrimer.setPublishedIn(selectionPrimerForwardReference.getSelection()); + } + } + else if(eventSource==textPrimerReverseName || eventSource==textPrimerReverseSequence || eventSource==selectionPrimerReverseReference){ + Primer reversePrimer = getEntity().getReversePrimer(); + if(reversePrimer==null){ + reversePrimer = Primer.NewInstance(""); + getEntity().setReversePrimer(reversePrimer); + } + if(eventSource==textPrimerReverseName){ + reversePrimer.setLabel(textPrimerReverseName.getText()); + } + else if(eventSource==textPrimerReverseSequence){ + Sequence sequence = reversePrimer.getSequence(); + if(sequence==null){ + sequence = Sequence.NewInstance(textPrimerReverseSequence.getText()); + reversePrimer.setSequence(sequence); + } + else{ + sequence.setSequenceString(textPrimerReverseSequence.getText()); + } + } + else if(eventSource==selectionPrimerReverseReference){ + reversePrimer.setPublishedIn(selectionPrimerReverseReference.getSelection()); + } + } + } +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailSection.java new file mode 100644 index 000000000..f9d4e31dc --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailSection.java @@ -0,0 +1,58 @@ +// $Id$ +/** +* Copyright (C) 2014 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; + +import org.eclipse.jface.viewers.ISelectionProvider; + +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; +import eu.etaxonomy.cdm.model.molecular.Amplification; +import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement; +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; +import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection; + +/** + * @author pplitzner + * @date 15.01.2014 + * + */ +public class AmplificationPrimerDetailSection extends AbstractCdmDetailSection { + + /** + * @param formFactory + * @param conversation + * @param parentElement + * @param selectionProvider + * @param style + */ + public AmplificationPrimerDetailSection(CdmFormFactory formFactory, + ConversationHolder conversation, ICdmFormElement parentElement, + ISelectionProvider selectionProvider, int style) { + super(formFactory, conversation, parentElement, selectionProvider, style); + } + + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#getHeading() + */ + @Override + public String getHeading() { + return "Primer"; + } + + /* (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.createAmplificationPrimerDetailElement(parentElement); + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SequenceGeneralDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SequenceGeneralDetailElement.java index 0326bb2c3..5fa267bdc 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SequenceGeneralDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SequenceGeneralDetailElement.java @@ -63,7 +63,7 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement3'", entity.getConsensusSequence().getString(), style); textConsensusSequenceLength = formFactory.createNumberTextWithLabelElement(formElement, "Consensus Seq. Length", entity.getConsensusSequence().getLength(), style); -// textBarcodeSequence = formFactory.createTextWithLabelElement(formElement, "Barcode Sequence 5'->3'", entity.getBarcodeSequencePart().getString(), style); + textBarcodeSequence = formFactory.createTextWithLabelElement(formElement, "Barcode Sequence 5'->3'", entity.getBarcodeSequencePart()==null?"":entity.getBarcodeSequencePart().getString(), style); textGeneticAccessNo = formFactory.createTextWithLabelElement(formElement, "Genetic Acc. No.", entity.getGeneticAccessionNumber(), style); textBoldProcessID = formFactory.createTextWithLabelElement(formElement, "BOLD Process ID", entity.getBoldProcessId(), style); @@ -116,16 +116,16 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement { /** {@inheritDoc} */ @Override public Reference createNewElement() { - return null; + return ReferenceFactory.newGeneric(); } /* (non-Javadoc) diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java index 61da0e801..5e4f5a051 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java @@ -92,13 +92,13 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem "Taxon is excluded", ((Taxon) entity).isExcluded(), style); checkbox_unplaced = formFactory.createCheckbox(formElement, "Taxon is unplaced", ((Taxon) entity).isUnplaced(), style); + checkbox_published = formFactory.createCheckbox(formElement, + "Taxon is published", ((Taxon) entity).isPublish(), style); } checkbox_doubtful = formFactory.createCheckbox(formElement, entity.getClass().getSimpleName() + " is doubtful", entity.isDoubtful(), style); - - checkbox_published = formFactory.createCheckbox(formElement, - "Taxon is published", ((TaxonBase) entity).isPublish(), style); + } 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 c8214ee0b..414552320 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 @@ -82,7 +82,9 @@ import eu.etaxonomy.taxeditor.ui.section.name.NomenclaturalStatusSection; import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection; import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection; import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection; +import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationCloningDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationGeneralDetailSection; +import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationPrimerDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.ArtworkGeneralDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailSection; import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailSection; @@ -711,8 +713,6 @@ public class DetailsViewer extends AbstractCdmDataViewer { TissueSampleGeneralDetailSection section = formFactory.createTissueSampleGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); - formFactory.createHorizontalSeparator(parent, SWT.BORDER); - addPart(section); } @@ -720,26 +720,31 @@ public class DetailsViewer extends AbstractCdmDataViewer { destroySections(); DnaSampleGeneralDetailSection section = formFactory.createDnaSampleGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); - formFactory.createHorizontalSeparator(parent, SWT.BORDER); - addPart(section); } private void createAmplificationSection(RootElement parent) { destroySections(); - AmplificationGeneralDetailSection section = formFactory.createAmplificationGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); + AmplificationGeneralDetailSection generalSection = formFactory.createAmplificationGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); formFactory.createHorizontalSeparator(parent, SWT.BORDER); - addPart(section); + AmplificationPrimerDetailSection primerSection = formFactory.createAmplificationPrimerDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE); + + formFactory.createHorizontalSeparator(parent, SWT.BORDER); + + AmplificationCloningDetailSection cloningSection = formFactory.createAmplificationCloningDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE); + + + addPart(generalSection); + addPart(primerSection); + addPart(cloningSection); } private void createSequenceSection(RootElement parent) { destroySections(); SequenceGeneralDetailSection section = formFactory.createSequenceGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); - formFactory.createHorizontalSeparator(parent, SWT.BORDER); - addPart(section); } @@ -747,8 +752,6 @@ public class DetailsViewer extends AbstractCdmDataViewer { destroySections(); SingleReadGeneralDetailSection section = formFactory.createSingleReadGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); - formFactory.createHorizontalSeparator(parent, SWT.BORDER); - addPart(section); } @@ -756,8 +759,6 @@ public class DetailsViewer extends AbstractCdmDataViewer { destroySections(); SpecimenScanGeneralDetailSection section = formFactory.createSpecimenScanGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); - formFactory.createHorizontalSeparator(parent, SWT.BORDER); - addPart(section); } @@ -765,8 +766,6 @@ public class DetailsViewer extends AbstractCdmDataViewer { destroySections(); LivingPlantPhotoGeneralDetailSection section = formFactory.createLivingPlantPhotoGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); - formFactory.createHorizontalSeparator(parent, SWT.BORDER); - addPart(section); } @@ -774,8 +773,6 @@ public class DetailsViewer extends AbstractCdmDataViewer { destroySections(); ArtworkGeneralDetailSection section = formFactory.createArtworkGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); - formFactory.createHorizontalSeparator(parent, SWT.BORDER); - addPart(section); } -- 2.34.1