- implemented EntitySelectionElement for Primer
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 17 Mar 2014 07:51:57 +0000 (07:51 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 17 Mar 2014 07:51:57 +0000 (07:51 +0000)
 - adapted details views with primer selection element

14 files changed:
.gitattributes
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewPrimerWizard.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/PrimerWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PrimerSelectionDialog.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.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/AbstractCdmDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationPrimerDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/PrimerGeneralDetailElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SingleReadGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java

index 801bb665a4d33d92b744bc297c04e5c557a054f7..88d58ba35f84aae45016df36e97e1bb0d3b97f8f 100644 (file)
@@ -1219,11 +1219,13 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewI
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewNonViralNameWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewPersonWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewPolytomousKeyWizard.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewPrimerWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewReferenceWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTeamWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewUserWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/PolytomousKeyWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/PrimerWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractDescriptionPostOperation.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPersistentPostOperation.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostOperation.java -text
@@ -1308,6 +1310,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/sele
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/OriginalSourceTypeSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PersonSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PolytomousKeySelectionDialog.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PrimerSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/ReferenceSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SpecimenOrObservationTypeSelectionDialog.java -text
@@ -1539,6 +1542,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occ
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaQualityDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaSampleGeneralDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/PrimerGeneralDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceContigFileCollectionDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceGeneralDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceGeneralDetailSection.java -text
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewPrimerWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewPrimerWizard.java
new file mode 100644 (file)
index 0000000..06aeeee
--- /dev/null
@@ -0,0 +1,55 @@
+// $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.newWizard;
+
+import eu.etaxonomy.cdm.api.service.IPrimerService;
+import eu.etaxonomy.cdm.model.molecular.Primer;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author pplitzner
+ * @date 11.03.2014
+ *
+ */
+public class NewPrimerWizard  extends AbstractNewEntityWizard<Primer> {
+
+    private PrimerWizardPage primerPage;
+
+    /** {@inheritDoc} */
+    @Override
+    public void addPages() {
+        primerPage = new PrimerWizardPage(formFactory, getConversationHolder(), getEntity());
+        addPage(primerPage);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected Primer createNewEntity() {
+        return Primer.NewInstance("");
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected void saveEntity() {
+        CdmStore.getService(IPrimerService.class).saveOrUpdate(getEntity());
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setEntity(Primer entity) {
+        super.setEntity(entity);
+        primerPage.getDetailElement().setEntity(entity);
+    }
+
+    @Override
+    protected String getEntityName() {
+        return "Primer";
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/PrimerWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/PrimerWizardPage.java
new file mode 100644 (file)
index 0000000..7e01872
--- /dev/null
@@ -0,0 +1,57 @@
+// $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.newWizard;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.model.molecular.Primer;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.PrimerGeneralDetailElement;
+
+/**
+ * @author pplitzner
+ * @date 11.03.2014
+ *
+ */
+public class PrimerWizardPage extends AbstractCdmEntityWizardPage<Primer> {
+
+    /**
+     * @param formFactory
+     * @param conversation
+     * @param entity
+     */
+    public PrimerWizardPage(CdmFormFactory formFactory,
+            ConversationHolder conversation, Primer entity) {
+        super(formFactory, conversation, entity);
+        setTitle("General Primer Data");
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#checkComplete()
+     */
+    @Override
+    protected void checkComplete() {
+        setPageComplete(true);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
+     */
+    @Override
+    public AbstractCdmDetailElement<Primer> createElement(ICdmFormElement rootElement) {
+        PrimerGeneralDetailElement detailElement = formFactory.createPrimerGeneralDetailElement(rootElement);
+        detailElement.setEntity(getEntity());
+        checkComplete();
+        return detailElement;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PrimerSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PrimerSelectionDialog.java
new file mode 100644 (file)
index 0000000..3cf79c7
--- /dev/null
@@ -0,0 +1,89 @@
+// $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.dialog.selection;
+
+import java.util.UUID;
+
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.IPrimerService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.molecular.Primer;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
+import eu.etaxonomy.taxeditor.newWizard.NewPrimerWizard;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author pplitzner
+ * @date 11.03.2014
+ *
+ */
+public class PrimerSelectionDialog extends
+AbstractFilteredCdmResourceSelectionDialog<Primer> {
+
+    public static Primer select(Shell shell, ConversationHolder conversation, Primer primer){
+        PrimerSelectionDialog dialog = new PrimerSelectionDialog(shell, conversation,
+                "Choose Unit", false, PrimerSelectionDialog.class.getCanonicalName(), primer);
+        return getSelectionFromDialog(dialog);
+    }
+
+    /**
+     * <p>Constructor for FilteredDerivedUnitSelectionDialog.</p>
+     */
+    protected PrimerSelectionDialog(Shell shell, ConversationHolder conversation, String title,
+            boolean multi, String settings, Primer cdmObject) {
+        super(shell, conversation, title, multi, settings, cdmObject);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected Primer getPersistentObject(UUID uuid) {
+        Object object = CdmStore.getService(IPrimerService.class).load(uuid);
+
+        Primer primer = (Primer) HibernateProxyHelper.deproxy(object);
+
+        if(primer != null){
+            return primer;
+        }
+        AbstractUtility.error(this.getClass(), "Selected unit is not a primer", null);
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected void initModel() {
+        model = CdmStore.getService(IPrimerService.class).getPrimerUuidAndTitleCache();
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.dialog.selection.AbstractFilteredCdmResourceSelectionDialog#getTitle(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    protected String getTitle(Primer cdmObject) {
+        if(cdmObject!=null){
+            return cdmObject.getLabel();
+        }
+        return super.getTitle(cdmObject);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
+        return new NewPrimerWizard();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getNewWizardLinkText() {
+        return String.format("Create a new <a>%1s</a>", "Primer ");
+    }
+}
index be551aa447b2601f4b9d610147bbfcf1b13f1fdd..f461466754e6869218b0cd6b2888b00b8fc90efb 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2009 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -25,6 +25,7 @@ import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.molecular.Primer;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
@@ -45,7 +46,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
 public class SelectionDialogFactory {
 
        public static <T extends ICdmBase> T getSelectionFromDialog(Class<T> clazz, Shell shell, ConversationHolder conversation, T curentSelection){
-               
+
                if(clazz.equals(Taxon.class)){
                        return (T) TaxonBaseSelectionDialog.selectTaxon(shell, conversation, (Taxon) curentSelection);
                }
@@ -114,8 +115,11 @@ public class SelectionDialogFactory {
                if(clazz.equals(Institution.class)){
                        return (T) InstitutionSelectionDialog.select(shell, conversation, (Institution) curentSelection);
                }
-                               
+               if(clazz.equals(Primer.class)){
+                   return (T) PrimerSelectionDialog.select(shell, conversation, (Primer) curentSelection);
+               }
+
                return null;
        }
-       
+
 }
index 6cb8ee251e0381986f2e4bcd46f57563e236774e..705d33e033871fb39b0162e33f8a9dd4de52464d 100644 (file)
@@ -237,6 +237,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.PrimerGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceContigFileCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailSection;
@@ -2072,6 +2073,12 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+    public PrimerGeneralDetailElement createPrimerGeneralDetailElement(ICdmFormElement parentElement){
+        PrimerGeneralDetailElement element = new PrimerGeneralDetailElement(this, parentElement);
+        addAndAdaptElement(parentElement, element);
+        return element;
+    }
+
     public AmplificationGeneralDetailElement createAmplificationGeneralDetailElement(ICdmFormElement parentElement){
         AmplificationGeneralDetailElement element = new AmplificationGeneralDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
index aea5c881647bd8d01db433f1f47f258c63fa6d9b..0b90b3fe1c517967806dd268dd032467113be930 100644 (file)
@@ -10,6 +10,7 @@
 
 package eu.etaxonomy.taxeditor.ui.section;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.EnumSet;
 import java.util.Observable;
@@ -340,6 +341,12 @@ public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement
 
 
     protected void updateControlStates(){
-        setEnabled(getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), requiredCrud));
+        Collection<Object> except = new ArrayList<Object>();
+        for(ICdmFormElement formElement:getElements()){
+            if(!formElement.isEnabled()){
+                except.add(formElement);
+            }
+        }
+        setEnabled(getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), requiredCrud), except);
     }
 }
index e0178cca0886f900ac5d234d8a8cca7511dd4eb4..71f56f49020b20488a92b891f19203250d86b22b 100644 (file)
@@ -11,11 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
 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.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
@@ -27,13 +24,9 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 public class AmplificationPrimerDetailElement extends AbstractCdmDetailElement<Amplification> {
 
     //forward primer
-    private TextWithLabelElement textPrimerForwardName;
-    private TextWithLabelElement textPrimerForwardSequence;
-    private EntitySelectionElement<Reference> selectionPrimerForwardReference;
+    private EntitySelectionElement<Primer> selectionPrimerForward;
     //reverse primer
-    private TextWithLabelElement textPrimerReverseName;
-    private TextWithLabelElement textPrimerReverseSequence;
-    private EntitySelectionElement<Reference> selectionPrimerReverseReference;
+    private EntitySelectionElement<Primer> selectionPrimerReverse;
 
 
     /**
@@ -53,53 +46,8 @@ public class AmplificationPrimerDetailElement extends AbstractCdmDetailElement<A
      */
     @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);
+        selectionPrimerForward = formFactory.createSelectionElement(Primer.class, getConversationHolder(), formElement, "Forward Primer", entity.getForwardPrimer(), EntitySelectionElement.ALL, style);
+        selectionPrimerReverse = formFactory.createSelectionElement(Primer.class, getConversationHolder(), formElement, "Reverse Primer", entity.getReversePrimer(), EntitySelectionElement.ALL, style);
     }
 
     /*
@@ -111,51 +59,11 @@ public class AmplificationPrimerDetailElement extends AbstractCdmDetailElement<A
      */
     @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());
-            }
+        if(eventSource==selectionPrimerForward){
+            getEntity().setForwardPrimer(selectionPrimerForward.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==selectionPrimerReverse){
+            getEntity().setReversePrimer(selectionPrimerReverse.getSelection());
         }
     }
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/PrimerGeneralDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/PrimerGeneralDetailElement.java
new file mode 100644 (file)
index 0000000..214dc06
--- /dev/null
@@ -0,0 +1,91 @@
+// $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.dna;
+
+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.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author pplitzner
+ * @date 06.01.2014
+ *
+ */
+public class PrimerGeneralDetailElement extends AbstractCdmDetailElement<Primer> {
+
+
+    private TextWithLabelElement textPrimerName;
+    //TODO we are using a basic text field which is backed up by a Sequence object modelwise.
+    // This is a bit of a overhead as we may just need the sequence string. This may change in future in both directions:
+    // either extending this view to support the remaining fields of Sequence or by switching to the more basic SequenceString model element
+    private TextWithLabelElement textPrimerSequence;
+    private EntitySelectionElement<Reference> selectionReference;
+
+    /**
+     * @param formFactory
+     * @param formElement
+     */
+    public PrimerGeneralDetailElement(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, Primer entity, int style) {
+        textPrimerName = formFactory.createTextWithLabelElement(formElement, "Primer Name", entity.getLabel(), style);
+        String sequenceString = "";
+        if(entity.getSequence()!=null){
+            sequenceString = entity.getSequence().getSequenceString();
+        }
+        textPrimerSequence = formFactory.createTextWithLabelElement(formElement, "Primer seq. 5'->3'", sequenceString, style);
+
+        selectionReference = formFactory
+                .createSelectionElement(Reference.class,
+                        getConversationHolder(), formElement, "Reference",
+                        entity.getPublishedIn(),
+                        EntitySelectionElement.ALL, style);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
+     * .lang.Object)
+     */
+    @Override
+    public void handleEvent(Object eventSource) {
+        if(eventSource==textPrimerName){
+            getEntity().setLabel(textPrimerName.getText());
+        }
+        else if(eventSource==textPrimerSequence){
+            Sequence sequence = getEntity().getSequence();
+            if(sequence==null){
+                sequence = Sequence.NewInstance("");
+                getEntity().setSequence(sequence);
+            }
+            sequence.setSequenceString(textPrimerSequence.getText());
+        }
+        else if(eventSource==selectionReference){
+            getEntity().setPublishedIn(selectionReference.getSelection());
+        }
+    }
+}
index 6bc530986737500d39f00860dc4fa95f3366c3a8..e7ee40986c97697d43c69e59cd5fa8061b4091e3 100644 (file)
@@ -57,6 +57,7 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement<Seque
                         style);
         textConsensusSequence = formFactory.createTextWithLabelElement(formElement, "Consensus Sequence 5'->3'", entity.getConsensusSequence().getString(), style);
         textConsensusSequenceLength = formFactory.createNumberTextWithLabelElement(formElement, "Consensus Seq. Length", entity.getConsensusSequence().getLength(), style);
+        textConsensusSequenceLength.setEnabled(false);
         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);
@@ -85,14 +86,10 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement<Seque
             }
             consensusSequence.setString(textConsensusSequence.getText());
             getEntity().setConsensusSequence(consensusSequence);
+            textConsensusSequenceLength.setNumber(consensusSequence.getLength());
         }
         else if(eventSource==textConsensusSequenceLength){
-            SequenceString consensusSequence = getEntity().getConsensusSequence();
-            if(consensusSequence==null){
-                consensusSequence = SequenceString.NewInstance();
-            }
-            consensusSequence.setLength(textConsensusSequenceLength.getInteger());
-            getEntity().setConsensusSequence(consensusSequence);
+            // this is a derived value and should not be edited
         }
         else if(eventSource==textBarcodeSequence){
             SequenceString barcodeSequencePart = getEntity().getBarcodeSequencePart();
index dfb7bf8acfc169361967c1d3a3ee888495286a4c..268fcf3b22d362c1c8d6043ad84bdae7b8628c4b 100644 (file)
@@ -9,19 +9,10 @@
  */
 package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
-import eu.etaxonomy.cdm.model.agent.AgentBase;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.molecular.Primer;
-import eu.etaxonomy.cdm.model.molecular.Sequence;
-import eu.etaxonomy.cdm.model.molecular.SequenceString;
 import eu.etaxonomy.cdm.model.molecular.SingleRead;
-import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
-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;
 
@@ -32,15 +23,7 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  */
 public class SingleReadGeneralDetailElement extends AbstractCdmDetailElement<SingleRead> {
 
-
-    private TimePeriodElement dateElement;
-    private EntitySelectionElement<AgentBase> selectionSequencingStaff;
-    private TermComboElement<DefinedTerm> comboMaterialOrMethod;
-    private NumberWithLabelElement numberReadLength;
-    private TextWithLabelElement textEditedSequence;
-    private TextWithLabelElement textPrimerName;
-    private TextWithLabelElement textPrimerSequence;
-    private EntitySelectionElement<Reference> selectionReference;
+    private EntitySelectionElement<Primer> selectionPrimer;
 
     /**
      * @param formFactory
@@ -59,51 +42,7 @@ public class SingleReadGeneralDetailElement extends AbstractCdmDetailElement<Sin
      */
     @Override
     protected void createControls(ICdmFormElement formElement, SingleRead entity, int style) {
-
-//        dateElement = formFactory.createTimePeriodElement(formElement, "Sequencing Date", entity.getDateSequenced(), style);
-//        selectionSequencingStaff = formFactory
-//                .createSelectionElement(AgentBase.class,
-//                        getConversationHolder(), formElement, "Sequencing Staff",
-//                        null,
-//                        EntitySelectionElement.ALL, style);
-//        MaterialOrMethodEvent materialOrMethod = entity.getMaterialOrMethod();
-//        DefinedTerm definedMaterialOrMethod = null;
-//        if(materialOrMethod!=null){
-//            definedMaterialOrMethod = materialOrMethod.getDefinedMaterialOrMethod();
-//        }
-//        comboMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Mat. & Meth.", definedMaterialOrMethod, style);
-//
-//        //TODO sequence can be null if DerivateView is opened again. Why?? When initially created it is not null
-//        SequenceString editedSequence = entity.getSequence();
-//        Integer readLength = 0;
-//        String editedSequenceString = "";
-//        if(editedSequence!=null){
-//            Integer length = editedSequence.getLength();
-//            if(length!=null){
-//                readLength = length;
-//            }
-//            editedSequenceString = editedSequence.getString();
-//        }
-//        textReadLength = formFactory.createNumberTextWithLabelElement(formElement, "Read Length", readLength, style);
-//        textEditedSequence = formFactory.createTextWithLabelElement(formElement, "Edited Sequence 5'->3'", editedSequenceString, style);
-
-        Primer primer = entity.getPrimer();
-        String primerLabel = "";
-        String primerSequence = "";
-        Reference primerReference = null;
-        if(primer!=null){
-           primerLabel = primer.getLabel();
-           primerSequence = primer.getSequence()==null?"":primer.getSequence().getSequenceString();
-           primerReference = primer.getPublishedIn();
-        }
-        textPrimerName = formFactory.createTextWithLabelElement(formElement, "Primer Name", primerLabel, style);
-        textPrimerSequence = formFactory.createTextWithLabelElement(formElement, "Primer seq. 5'->3'", primerSequence, style);
-
-        selectionReference = formFactory
-                .createSelectionElement(Reference.class,
-                        getConversationHolder(), formElement, "Reference",
-                        primerReference,
-                        EntitySelectionElement.ALL, style);
+        selectionPrimer = formFactory.createSelectionElement(Primer.class, getConversationHolder(), formElement, "Primer", entity.getPrimer(), EntitySelectionElement.ALL, style);
     }
 
     /*
@@ -115,52 +54,8 @@ public class SingleReadGeneralDetailElement extends AbstractCdmDetailElement<Sin
      */
     @Override
     public void handleEvent(Object eventSource) {
-        if(eventSource==dateElement){
-            getEntity().setDateSequenced(dateElement.getTimePeriod());
-        }
-        else if(eventSource==selectionSequencingStaff){
-            getEntity().setActor(selectionSequencingStaff.getSelection());
-        }
-        else if(eventSource==comboMaterialOrMethod){
-            getEntity().getMaterialOrMethod().setDefinedMaterialOrMethod(comboMaterialOrMethod.getSelection());
-        }
-        else if(eventSource==numberReadLength){
-            addEditedSequence().setLength(numberReadLength.getInteger());
-        }
-        else if(eventSource==textEditedSequence){
-            addEditedSequence().setString(textEditedSequence.getText());
-        }
-        else if(eventSource==textPrimerName){
-            addPrimer().setLabel(textPrimerName.getText());
+        if(eventSource==selectionPrimer){
+            getEntity().setPrimer(selectionPrimer.getSelection());
         }
-        else if(eventSource==textPrimerSequence){
-            Sequence sequence = addPrimer().getSequence();
-            if(sequence==null){
-                sequence = Sequence.NewInstance("");
-            }
-            sequence.setSequenceString(textPrimerSequence.getText());
-        }
-        else if(eventSource==selectionReference){
-            addPrimer().setPublishedIn(selectionReference.getSelection());
-        }
-    }
-
-    private SequenceString addEditedSequence() {
-        SequenceString sequence = getEntity().getSequence();
-        if(sequence==null){
-            sequence = SequenceString.NewInstance();
-            getEntity().setSequence(sequence);
-        }
-        return sequence;
     }
-
-    private Primer addPrimer(){
-        Primer primer = getEntity().getPrimer();
-        if(primer==null){
-            primer = Primer.NewInstance("");
-            getEntity().setPrimer(primer);
-        }
-        return primer;
-    }
-
 }
index a6c48e0b6db56c8a82b9823d7b9cd4256a680401..3e72bd6cb444510cb31e7ed13bd68c8968266169 100644 (file)
@@ -24,13 +24,15 @@ import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.molecular.Primer;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.TextHelper;
+import eu.etaxonomy.taxeditor.newWizard.PrimerWizardPage;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.section.agent.InstitutionWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.agent.PersonWizardPage;
@@ -38,9 +40,9 @@ import eu.etaxonomy.taxeditor.ui.section.agent.TeamWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectionWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.user.UserDetailWizardPage;
 
@@ -127,8 +129,12 @@ public class EditFromSelectionWizard extends Wizard implements
                        addPage(new UserDetailWizardPage(formFactory,
                                        selectionElement.getConversationHolder(),
                                        (User) entity));
-               } else {
-                       StoreUtil.warningDialog("Missing interface", this,
+               } else if (entity instanceof Primer) {
+            addPage(new PrimerWizardPage(formFactory,
+                    selectionElement.getConversationHolder(),
+                    (Primer) entity));
+        } else {
+                       AbstractUtility.warningDialog("Missing interface", this,
                                        "No detail element for current selection");
                }
 
index 37c96972ef5db07da3f3f3db2984b72fab72709a..1bd8ca05bdb1aec9e8b33572ee5be243288e7260 100644 (file)
@@ -28,6 +28,7 @@ import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.molecular.Primer;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.taxeditor.model.ImageResources;
@@ -308,6 +309,8 @@ public class EntitySelectionElement<T extends ICdmBase> extends
                                return GrantedAuthorityLabelTextProvider.getText(((GrantedAuthority) entity));
                        } else if(entity instanceof User){
                 return ((User) entity).getUsername();
+            } else if (entity instanceof Primer){
+                return ((Primer) entity).getLabel();
             }
 
                }
index 31f58f458b2b1e944393a4c479bc62bfcddcc664..0c0670421d86bfa877ec8e3eeb9a3679bf20a27f 100644 (file)
@@ -752,11 +752,11 @@ public class DetailsViewer extends AbstractCdmDataViewer {
 
         formFactory.createHorizontalSeparator(parent, SWT.BORDER);
 
-        AmplificationPrimerDetailSection primerSection = formFactory.createAmplificationPrimerDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
+        AmplificationPrimerDetailSection primerSection = formFactory.createAmplificationPrimerDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
 
         formFactory.createHorizontalSeparator(parent, SWT.BORDER);
 
-        AmplificationCloningDetailSection cloningSection = formFactory.createAmplificationCloningDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
+        AmplificationCloningDetailSection cloningSection = formFactory.createAmplificationCloningDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
 
         formFactory.createHorizontalSeparator(parent, SWT.BORDER);