- removed unused code
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / CdmFormFactory.java
index 6689b3def355bb64c9ac338f0ec867c67c9ac14e..9e450f39bcca21d3dc52bfec836b3ce9a7746efb 100644 (file)
@@ -37,6 +37,7 @@ import org.eclipse.ui.forms.widgets.ExpandableComposite;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.Section;
 import org.eclipse.ui.internal.forms.widgets.FormFonts;
+import org.joda.time.DateTime;
 import org.joda.time.Partial;
 import org.springframework.security.core.GrantedAuthority;
 
@@ -56,10 +57,12 @@ import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IEnumTerm;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.Identifier;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
@@ -84,6 +87,7 @@ import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
 import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
@@ -95,10 +99,11 @@ import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.MinMaxTextSection.UnitType;
+import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement;
 import eu.etaxonomy.taxeditor.ui.openurl.IOpenUrlEnabled;
 import eu.etaxonomy.taxeditor.ui.openurl.OpenUrlSelectorElement;
 import eu.etaxonomy.taxeditor.ui.password.EditPasswordElement;
@@ -168,7 +173,8 @@ import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyNodeDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.key.ScopeRestrictionSection;
 import eu.etaxonomy.taxeditor.ui.section.key.TaxonomicScopeSection;
 import eu.etaxonomy.taxeditor.ui.section.media.ImageFileElement;
-import eu.etaxonomy.taxeditor.ui.section.media.MediaElement;
+import eu.etaxonomy.taxeditor.ui.section.media.MediaDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.media.MediaMetaElement;
 import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationElement;
 import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationPartElement;
 import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationPartSection;
@@ -214,6 +220,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailSectio
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.NamedAreaDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.OriginalLabelDataSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SourceCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailSection;
@@ -229,27 +236,33 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit.PreservedSpecime
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationCloningDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationCloningDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGelPhotoCollectionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGelPhotoDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationPrimerDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AmplificationPrimerDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.CurrentSampleDesignationDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.PrimerGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationHistoryDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationTextDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceContigFileCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadPherogramCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceReferenceCollectionDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceReferenceCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadPherogramCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.TissueSampleGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.TissueSampleGeneralDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.media.LivingPlantPhotoGeneralDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.media.LivingPlantPhotoGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.media.SpecimenScanGeneralDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.media.SpecimenScanGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailElement;
@@ -433,7 +446,7 @@ public class CdmFormFactory extends FormToolkit {
         if (selectionProvider != null) {
             selectionProvider.removeSelectionChangedListener(selectionArbitrator);
         } else {
-            AbstractUtility.error(this.getClass(),
+            MessagingUtils.error(this.getClass(),
                     "Tried to destroy a selection listener from this factories listeners but was null", null);
         }
     }
@@ -449,7 +462,7 @@ public class CdmFormFactory extends FormToolkit {
      *            {@link eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement}
      *            object.
      */
-    public void adapt(AbstractCdmFormElement formElement) {
+    public void adapt(ICdmFormElement formElement) {
         formElement.setPropertyChangeListeners(propertyChangeListeners);
     }
 
@@ -523,31 +536,6 @@ public class CdmFormFactory extends FormToolkit {
         return this.createLabel(parent, null);
     }
 
-    /**
-     * <p>
-     * createMultilineTextWithLabel
-     * </p>
-     *
-     * @param labelString
-     *            a {@link java.lang.String} object.
-     * @param textHeight
-     *            a int.
-     * @param style
-     *            a int.
-     * @param parentElement
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-     *            object.
-     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
-     *         object.
-     */
-    public TextWithLabelElement createMultilineTextWithLabel(ICdmFormElement parentElement, String labelString,
-            int textHeight, int style) {
-        TextWithLabelElement element = new TextWithLabelElement(this, parentElement, labelString, "", textHeight, style);
-        adapt(element);
-        parentElement.addElement(element);
-        return element;
-    }
-
     /**
      * <p>
      * createMultiLanguageTextElement
@@ -646,7 +634,16 @@ public class CdmFormFactory extends FormToolkit {
             initialText = "";
         }
 
-        TextWithLabelElement element = new TextWithLabelElement(this, parentElement, labelString, initialText, null, textLimit, style);
+        TextWithLabelElement element = new TextWithLabelElement(this, parentElement, labelString, initialText, null,
+                textLimit, style);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
+
+    public TextWithLabelElement createMultiLineTextWithLabel(ICdmFormElement parentElement, String labelString,
+            int textHeight, int style) {
+        TextWithLabelElement element = new TextWithLabelElement(this, parentElement, labelString, "", textHeight, true, style);
         adapt(element);
         parentElement.addElement(element);
         return element;
@@ -777,27 +774,6 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
-    /**
-     * <p>
-     * createTextElement
-     * </p>
-     *
-     * @param parentElement
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-     *            object.
-     * @param initialText
-     *            a {@link java.lang.String} object.
-     * @param style
-     *            a int.
-     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
-     *         object.
-     */
-    public TextWithLabelElement createTextElement(ICdmFormElement parentElement, String initialText, int style) {
-        TextWithLabelElement element = new TextWithLabelElement(this, parentElement, null, initialText, null, style);
-        adapt(element);
-        parentElement.addElement(element);
-        return element;
-    }
 
     /**
      * <p>
@@ -829,6 +805,7 @@ public class CdmFormFactory extends FormToolkit {
      * createTermComboElement
      * </p>
      *
+     * @deprecated Use {@link #createDefinedTermComboElement(TermType, ICdmFormElement, String, DefinedTermBase, int)} instead
      * @param termComboType
      *            a
      *            {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
@@ -846,7 +823,7 @@ public class CdmFormFactory extends FormToolkit {
      * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
      *         object.
      */
-
+    @Deprecated
     public <T extends DefinedTermBase> TermComboElement<T> createTermComboElement(Class<T> termComboType,
             ICdmFormElement parentElement, String labelString, T selection, int style) {
         TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termComboType, labelString,
@@ -891,6 +868,41 @@ public class CdmFormFactory extends FormToolkit {
                return element;
        }
 
+       /**
+        * <p>
+        * createTermComboElement
+        * </p>
+        *
+        * @param termComboType
+        *            a
+        *            {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
+        *            object.
+        * @param parentElement
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+        *            object.
+        * @param labelString
+        *            a {@link java.lang.String} object.
+        * @param selection
+        *            a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase}
+        *            object.
+        * @param style
+        *            a int.
+        * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
+        *         object.
+        */
+
+       public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
+               TermVocabulary<?> termVocabulary,
+               ICdmFormElement parentElement,
+               String labelString,
+               T selection,
+               int style) {
+           TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termVocabulary, labelString, selection, style);
+           adapt(element);
+           parentElement.addElement(element);
+           return element;
+       }
+
     /**
      * <p>
      * createEnumComboElement
@@ -1292,7 +1304,7 @@ public class CdmFormFactory extends FormToolkit {
      */
     public void removeSelectionListener(SelectionListener listener) {
         if (listener == null) {
-            AbstractUtility.error(this.getClass(),
+            MessagingUtils.error(this.getClass(),
                     "Tried to remove a selection listener from this factories listeners but was null", null);
         } else {
             selectionListenerList.remove(listener);
@@ -1433,8 +1445,8 @@ public class CdmFormFactory extends FormToolkit {
      *            object.
      * @return a {@link eu.etaxonomy.taxeditor.ui.section.EmptyElement} object.
      */
-    public EmptyElement createEmptyElement(ICdmFormElement parentElement) {
-        EmptyElement element = new EmptyElement(this, parentElement, null, SWT.NULL);
+    public EmptyElement createEmptyElement(ICdmFormElement parentElement, String emptyText) {
+        EmptyElement element = new EmptyElement(this, parentElement, emptyText, SWT.NULL);
         adapt(element);
         parentElement.addElement(element);
         return element;
@@ -1623,6 +1635,12 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public OriginalLabelDataSection createOriginalLabelDataSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        OriginalLabelDataSection section = new OriginalLabelDataSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public NaturalLanguageSection createNaturalLanguageSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         NaturalLanguageSection section = new NaturalLanguageSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
@@ -1695,13 +1713,25 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public DnaQualityDetailSection createDnaQualityDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        DnaQualityDetailSection section = new DnaQualityDetailSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public SequenceGeneralDetailSection createSequenceGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         SequenceGeneralDetailSection section = new SequenceGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
         return section;
     }
 
-    public SingleReadPherogramCollectionDetailSection createSingleReadPherogramCollectionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+    public SequenceContigFileCollectionDetailSection createSequenceContigFileCollectionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+        SequenceContigFileCollectionDetailSection section = new SequenceContigFileCollectionDetailSection(this, conversation, parentElement, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
+    public SingleReadPherogramCollectionDetailSection createSingleReadPherogramCollectionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
         SingleReadPherogramCollectionDetailSection section = new SingleReadPherogramCollectionDetailSection(this, conversation, parentElement, style);
         addAndAdaptSection(parentElement, section);
         return section;
@@ -1743,18 +1773,6 @@ public class CdmFormFactory extends FormToolkit {
         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);
-        return section;
-    }
-
-    public LivingPlantPhotoGeneralDetailSection createLivingPlantPhotoGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
-        LivingPlantPhotoGeneralDetailSection section = new LivingPlantPhotoGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
-        addAndAdaptSection(parentElement, section);
-        return section;
-    }
-
     public MediaSpecimenGeneralDetailSection createMediaSpecimenGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         MediaSpecimenGeneralDetailSection section = new MediaSpecimenGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
@@ -1785,6 +1803,12 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public SampleDesignationDetailSection createSampleDesignationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        SampleDesignationDetailSection section = new SampleDesignationDetailSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public PreservedSpecimenDeterminationDetailSection createPreservedSpecimenDeterminationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         PreservedSpecimenDeterminationDetailSection section = new PreservedSpecimenDeterminationDetailSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
@@ -2039,6 +2063,12 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+    public DnaQualityDetailElement createDnaQualityDetailElement(ICdmFormElement parentElement){
+        DnaQualityDetailElement element = new DnaQualityDetailElement(this, parentElement);
+        addAndAdaptElement(parentElement, element);
+        return element;
+    }
+
     public SequenceGeneralDetailElement createSequenceGeneralDetailElement(ICdmFormElement parentElement){
         SequenceGeneralDetailElement element = new SequenceGeneralDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
@@ -2051,6 +2081,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);
@@ -2069,14 +2105,8 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
-    public SpecimenScanGeneralDetailElement createSpecimenScanGeneralDetailElement(ICdmFormElement parentElement){
-        SpecimenScanGeneralDetailElement element = new SpecimenScanGeneralDetailElement(this, parentElement);
-        addAndAdaptElement(parentElement, element);
-        return element;
-    }
-
-    public LivingPlantPhotoGeneralDetailElement createLivingPlantPhotoGeneralDetailElement(ICdmFormElement parentElement){
-        LivingPlantPhotoGeneralDetailElement element = new LivingPlantPhotoGeneralDetailElement(this, parentElement);
+    public AmplificationGelPhotoDetailElement createAmplificationGelPhotoDetailElement(ICdmFormElement parentElement){
+        AmplificationGelPhotoDetailElement element = new AmplificationGelPhotoDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
         return element;
     }
@@ -2087,6 +2117,11 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+    public MediaDetailElement createMediaDetailElement(ICdmFormElement parentElement){
+        MediaDetailElement mediaDetailElement = new MediaDetailElement(this, parentElement);
+        addAndAdaptElement(parentElement, mediaDetailElement);
+        return mediaDetailElement;
+    }
 
     public GatheringEventDetailElement createGatheringEventDetailElement(ICdmFormElement parentElement) {
         GatheringEventDetailElement element = new GatheringEventDetailElement(this, parentElement);
@@ -2107,6 +2142,12 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+    public OriginalLabelDataElement createOriginalLabelDataElement(ICdmFormElement parentElement) {
+        OriginalLabelDataElement element = new OriginalLabelDataElement(this, parentElement);
+        addAndAdaptElement(parentElement, element);
+        return element;
+    }
+
     public PreservedSpecimenDetailElement createPreservedSpecimenDetailElement(ICdmFormElement parentElement) {
         PreservedSpecimenDetailElement element = new PreservedSpecimenDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
@@ -2125,6 +2166,12 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+    public SampleDesignationDetailElement createSampleDesignationDetailElement(ICdmFormElement parentElement) {
+        SampleDesignationDetailElement element = new SampleDesignationDetailElement(this, parentElement);
+        addAndAdaptElement(parentElement, element);
+        return element;
+    }
+
     /**
      * @param parentElement
      * @param element
@@ -2279,6 +2326,12 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public CurrentSampleDesignationDetailSection createCurrentSampleDesignationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+        CurrentSampleDesignationDetailSection section = new CurrentSampleDesignationDetailSection(this, conversation, parentElement, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public CurrentDeterminationDetailSection createCurrentDeterminationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
         CurrentDeterminationDetailSection section = new CurrentDeterminationDetailSection(this, conversation, parentElement, style);
         addAndAdaptSection(parentElement, section);
@@ -2291,6 +2344,12 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public SampleDesignationHistoryDetailSection createSampleDesignationHistoryDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+        SampleDesignationHistoryDetailSection section = new SampleDesignationHistoryDetailSection(this, conversation, parentElement, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public DeterminationHistoryDetailSection createDeterminationHistoryDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
         DeterminationHistoryDetailSection section = new DeterminationHistoryDetailSection(this, conversation, parentElement, style);
         addAndAdaptSection(parentElement, section);
@@ -2396,7 +2455,7 @@ public class CdmFormFactory extends FormToolkit {
         } else if (entity instanceof Marker) {
             element = new MarkerElement(this, parentElement, (Marker) entity, removeListener, style);
         } else if (entity instanceof Media) {
-            element = new MediaElement(this, parentElement, (Media) entity, removeListener, style);
+            element = new MediaMetaElement(this, parentElement, (Media) entity, removeListener, style);
         } else if (entity instanceof MediaRepresentation) {
             element = new MediaRepresentationElement(this, parentElement, (MediaRepresentation) entity, removeListener,
                     style);
@@ -2501,16 +2560,20 @@ public class CdmFormFactory extends FormToolkit {
             if (descriptionElement.getFeature().equals(Feature.PROTOLOGUE())) {
                 element = new ProtologueElement(this, parentElement, descriptionElement, removeListener, style);
             }
+        } else if (entity instanceof Identifier) {
+            element = new SampleDesignationTextDetailElement(this, parentElement, (Identifier<DnaSample>) entity, removeListener, backgroundColor, style);
         }
 
         if (element == null) {
-            AbstractUtility.errorDialog("No element for entity", this,
+            MessagingUtils.messageDialog("No element for entity", this,
                     "Could not generate element for entity. Looks like the case is not handled already. Check implementation. Entity: "
                             + entity, null);
         }
 
-        else if (backgroundColor != null && !backgroundColor.isDisposed()) {
-            element.setPersistentBackground(backgroundColor);
+        else{
+            if (backgroundColor != null && !backgroundColor.isDisposed()) {
+                element.setPersistentBackground(backgroundColor);
+            }
             adapt(element);
             parentElement.addElement(element);
         }
@@ -2587,6 +2650,14 @@ public class CdmFormFactory extends FormToolkit {
         return labelElement;
     }
 
+    public DateElement createDateElement(ICdmFormElement formElement, String labelText, DateTime dateTime, int style){
+        Label label = new Label(formElement.getLayoutComposite(), style);
+        label.setText(labelText+" (yyyy-MM-dd)");
+        DateElement dateElement = new DateElement(formElement.getLayoutComposite(), dateTime, style);
+        dateElement.initController(this, formElement);
+        return dateElement;
+    }
+
     /**
      * <p>
      * Getter for the field <code>selectionProvider</code>.