- added separate section for primer and cloning
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 20 Jan 2014 08:12:36 +0000 (08:12 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 20 Jan 2014 08:12:36 +0000 (08:12 +0000)
 - removed "null" message in data source conversion dialog

13 files changed:
.gitattributes
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationCloningDetailSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationDetailElement.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AmplificationPrimerDetailSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SequenceGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SequenceReferenceCollectionDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java

index c4cd1b65028f63ac86ff7e1b8c58893425d46e4c..55d65aef57f8f0d79e86235f9cf442285784d82b 100644 (file)
@@ -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
index 520ff64238507314b2760aa0c23bb192108ae479..e335480a8e2e36e7c27b8e75f65ad902ced113ca 100644 (file)
@@ -386,7 +386,7 @@ public abstract class AbstractUtility {
 
                        private String getCauseRecursively(Throwable t) {
                                if(t == null){
-                                       return null;
+                                       return "";
                                }
 
                                if(t.getCause() != null){
index ac9f81406f92a71774eec8cfb87cf24c2b9cf1eb..c21769938e997110362198e561a2924c7fba91ea 100644 (file)
@@ -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 (file)
index 0000000..2aa67ab
--- /dev/null
@@ -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<Amplification> {
+    private TextWithLabelElement textCloningStrain;
+    private TimePeriodElement dateCloning;
+    private EntitySelectionElement<AgentBase> selectionCloningStaff;
+    private TermComboElement<DefinedTerm> 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 (file)
index 0000000..6a4998f
--- /dev/null
@@ -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<Amplification> {
+
+    /**
+     * @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<Amplification> createCdmDetailElement(AbstractCdmDetailSection<Amplification> 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 (file)
index ac22ff0..0000000
+++ /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<Amplification> {
-
-    private TermComboElement<DefinedTerm> 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());
-        }
-
-    }
-
-}
index c62ebf749b47732642ae0145bc819c2bbbe28eda..1aa15fccae427906093c428d7e3159a839914786 100644 (file)
@@ -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<DefinedTerm> comboMarker;
     private TimePeriodElement dateAmplification;
     private EntitySelectionElement<AgentBase> selectionAmplificationStaff;
-    private TextWithLabelElement textAmplificationSuccess;
+    private CheckboxElement checkBoxAmplificationSuccess;
     private TextWithLabelElement textAmplificationSuccessDetails;
     private TermComboElement<DefinedTerm> comboAmplificationMaterialOrMethod;
 
@@ -50,19 +44,6 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement<
     private TextWithLabelElement textGelPhoto;
 
     private TermComboElement<DefinedTerm> comboPurificationMaterialOrMethod;
-    //forward primer
-    private TextWithLabelElement textPrimerForwardName;
-    private TextWithLabelElement textPrimerForwardSequence;
-    private EntitySelectionElement<Reference> selectionPrimerForwardReference;
-    //reverse primer
-    private TextWithLabelElement textPrimerReverseName;
-    private TextWithLabelElement textPrimerReverseSequence;
-    private EntitySelectionElement<Reference> selectionPrimerReverseReference;
-    //cloning
-    private TextWithLabelElement textCloningStrain;
-    private TimePeriodElement dateCloning;
-    private EntitySelectionElement<AgentBase> selectionCloningStaff;
-    private TermComboElement<DefinedTerm> 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 (file)
index 0000000..a31dd01
--- /dev/null
@@ -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<Amplification> {
+
+    //forward primer
+    private TextWithLabelElement textPrimerForwardName;
+    private TextWithLabelElement textPrimerForwardSequence;
+    private EntitySelectionElement<Reference> selectionPrimerForwardReference;
+    //reverse primer
+    private TextWithLabelElement textPrimerReverseName;
+    private TextWithLabelElement textPrimerReverseSequence;
+    private EntitySelectionElement<Reference> 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 (file)
index 0000000..f9d4e31
--- /dev/null
@@ -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<Amplification> {
+
+    /**
+     * @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<Amplification> createCdmDetailElement(AbstractCdmDetailSection<Amplification> parentElement, int style) {
+        return formFactory.createAmplificationPrimerDetailElement(parentElement);
+    }
+
+}
index 0326bb2c3de45db38fc3901ea4ebb3fb1c695d5c..5fa267bdc33697347329aebfcb7e15f4be22c43d 100644 (file)
@@ -63,7 +63,7 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement<Seque
         textContigFile = formFactory.createTextWithLabelElement(formElement, "Contig File", "XXX", style);
         textConsensusSequence = formFactory.createTextWithLabelElement(formElement, "Consensus Sequence 5'->3'", 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<Seque
         }
         else if(eventSource==textGeneticAccessNo){
             getEntity().setGeneticAccessionNumber(textGeneticAccessNo.getText());
-            if(textGeneticAccessNo.getText()!=null && !textGeneticAccessNo.getText().isEmpty()){
+        }
+        else if(eventSource==textBoldProcessID){
+            getEntity().setBoldProcessId(textBoldProcessID.getText());
+            if(textBoldProcessID.getText()!=null && !textBoldProcessID.getText().isEmpty()){
                 textBoldLink.setText(getEntity().getBoldUri().toString());
             }
             else{
                 textBoldLink.setText("");
             }
         }
-        else if(eventSource==textBoldProcessID){
-            getEntity().setBoldProcessId(textBoldProcessID.getText());
-        }
         else if(eventSource==textBoldLink){
             //cannot be set because it is generated from the genetic access number and a base URI
         }
index 3079a4d28edf42f37ee16ea1f8b762a26085ee27..674f625e6e11b98520a07560011390a1c7119b74 100644 (file)
@@ -14,6 +14,7 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
@@ -46,7 +47,7 @@ AbstractEntityCollectionSection<Sequence, Reference> {
     /** {@inheritDoc} */
     @Override
     public Reference createNewElement() {
-        return null;
+        return ReferenceFactory.newGeneric();
     }
 
     /* (non-Javadoc)
index 61da0e80171d78d380dc18b02b2fd0cae2a97f37..5e4f5a051c8980ec055d2d291b7575394b28b46f 100644 (file)
@@ -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);
+
 
        }
 
index c8214ee0b940bc6d51090d24660c6440161928e1..414552320e72e5abbd10d4bde23aac33e883cb4e 100644 (file)
@@ -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);
     }