- added specific DetailsViews that are not based on DerivedUnitFacade for DNA and...
authorPatric Plitzner <p.plitzner@bgbm.org>
Tue, 17 Dec 2013 08:03:58 +0000 (08:03 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Tue, 17 Dec 2013 08:03:58 +0000 (08:03 +0000)
.gitattributes
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateLabelProvider.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/DnaSampleGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DnaSampleGeneralDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralDetailElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralDetailSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java

index 0981ad57f003e755be3e166a720cdd2e689866f1..a8b1b53484e34b5520c8fcdf5ba191d091ba7f75 100644 (file)
@@ -1530,6 +1530,8 @@ 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/SpecimenCollectionDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenDetailsWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralDetailElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenScanGeneralDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenScanGeneralDetailSection.java -text
index 6567989899c7e9602f93f925a0432dfeebfccc92..398ba426cfee0e79d4df82715a72cf4257f909af 100644 (file)
@@ -15,6 +15,7 @@ import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
 import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
@@ -48,7 +49,7 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                                 createMenuItem(menu, "Specimen", fieldUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen));
                                 new MenuItem(menu, SWT.SEPARATOR);
                                 createMenuItem(menu, "Tissue Sample", fieldUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.TissueSample));
-                                createMenuItem(menu, "DNA Sample", fieldUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.DnaSample));
+                                createMenuItem(menu, "DNA Sample", fieldUnit, DnaSample.NewInstance());
                                 createMenuItem(menu, "Specimen Scan", fieldUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage));
                                 createMenuItem(menu, "Artwork", fieldUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage));
                                 createMenuItem(menu, "Living Plant Photo", fieldUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage));
@@ -58,26 +59,10 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                                 DerivedUnit derivedUnit = (DerivedUnit) selectedElement;
 
                                 createMenuItem(menu, "Tissue Sample", derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.TissueSample));
-                                createMenuItem(menu, "DNA Sample", derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.DnaSample));
+                                createMenuItem(menu, "DNA Sample", derivedUnit, DnaSample.NewInstance());
                                 createMenuItem(menu, "Specimen Scan", derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage));
                                 createMenuItem(menu, "Artwork", derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage));
                                 createMenuItem(menu, "Living Plant Photo", derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage));
-//
-//                                MenuItem createDNASample = new MenuItem(menu, SWT.None);
-//                                createDNASample.setText("DNA Sample");
-//                                createDNASample.addSelectionListener(new WidgetSelectionListener(derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.DnaSample)));
-//
-//                                MenuItem createSpecimenScan = new MenuItem(menu, SWT.None);
-//                                createSpecimenScan.setText("Specimen Scan");
-//                                createSpecimenScan.addSelectionListener(new WidgetSelectionListener(derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage)));
-//
-//                                MenuItem createArtwork = new MenuItem(menu, SWT.None);
-//                                createArtwork.setText("Artwork");
-//                                createArtwork.addSelectionListener(new WidgetSelectionListener(derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage)));
-//
-//                                MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
-//                                createLivingPlantPhoto.setText("Living Plant Photo");
-//                                createLivingPlantPhoto.addSelectionListener(new WidgetSelectionListener(derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage)));
                             }
                             else{
                                 MenuItem menuItem = new MenuItem(menu, SWT.None);
index e9c8ad128e9e3f2a13c1bea880d626c64b93fd14..57848cc1cdd0e768dbcf790a31d3d0b5ba31d7e2 100644 (file)
@@ -12,6 +12,7 @@ package eu.etaxonomy.taxeditor.ui.campanula.derivatesearch;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.swt.graphics.Image;
 
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
@@ -52,6 +53,9 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
         if(element instanceof FieldUnit){
             return ImageResources.getImage(ImageResources.FIELD_UNIT);
         }
+        else if(element instanceof DnaSample){
+            return ImageResources.getImage(ImageResources.DNA_SAMPLE_DERIVATE);
+        }
         else if(element instanceof DerivedUnit){
             DerivedUnit derivedUnit = (DerivedUnit)element;
             if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.FieldUnit){
index b515d24b8aba231c8276135cfa984a1a67d2675e..57f62ecdf2440f8aee5d49b55a69c8c3444fc04e 100644 (file)
@@ -237,6 +237,8 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.NamedAreaDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SourceCollectionDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenScanGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenScanGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.TissueSampleGeneralDetailElement;
@@ -1609,6 +1611,12 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public SpecimenGeneralDetailSection createSpecimenGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        SpecimenGeneralDetailSection section = new SpecimenGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public TissueSampleGeneralDetailSection createTissueSampleGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         TissueSampleGeneralDetailSection section = new TissueSampleGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
@@ -1893,6 +1901,12 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+    public SpecimenGeneralDetailElement createSpecimenGeneralDetailElement(ICdmFormElement parentElement){
+        SpecimenGeneralDetailElement element = new SpecimenGeneralDetailElement(this, parentElement);
+        addAndAdaptElement(parentElement, element);
+        return element;
+    }
+
     public TissueSampleGeneralDetailElement createTissueSampleGeneralDetailElement(ICdmFormElement parentElement){
         TissueSampleGeneralDetailElement element = new TissueSampleGeneralDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
index ec387e10f24ef27c48936a88ab2fd898af211295..658b2ec6dd2d56ae02a3411417dc611fafe4944f 100644 (file)
@@ -9,7 +9,7 @@
 */
 package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
@@ -19,7 +19,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
  * @date 16.12.2013
  *
  */
-public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement<DerivedUnitFacade> {
+public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement<DnaSample> {
 
     /**
      * @param formFactory
@@ -37,7 +37,7 @@ public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement<Deri
      * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
      */
     @Override
-    protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+    protected void createControls(ICdmFormElement formElement, DnaSample entity, int style) {
 
     }
 
index 1428c63e9ebcd369cc5721dfdb9df737a8d77301..585437b080d1a3c522478691f9a6965ef3113a64 100644 (file)
@@ -12,7 +12,7 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
@@ -23,7 +23,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  * @date 12.12.2013
  *
  */
-public class DnaSampleGeneralDetailSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection{
+public class DnaSampleGeneralDetailSection extends AbstractCdmDetailSection<DnaSample> implements IDerivedUnitFacadeDetailSection{
 
     /**
      * @param formFactory
@@ -44,14 +44,14 @@ public class DnaSampleGeneralDetailSection extends AbstractCdmDetailSection<Deri
      */
     @Override
     public String getHeading() {
-        return "General";
+        return "General DNA";
     }
 
     /* (non-Javadoc)
      * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
      */
     @Override
-    protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
+    protected AbstractCdmDetailElement<DnaSample> createCdmDetailElement(AbstractCdmDetailSection<DnaSample> parentElement, int style) {
         return formFactory.createDnaSampleGeneralDetailElement(parentElement);
     }
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralDetailElement.java
new file mode 100644 (file)
index 0000000..df95bab
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.occurrence.DerivedUnit;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author pplitzner
+ * @date 17.12.2013
+ *
+ */
+public class SpecimenGeneralDetailElement extends AbstractCdmDetailElement<DerivedUnit> {
+
+    /**
+     * @param formFactory
+     * @param formElement
+     */
+    public SpecimenGeneralDetailElement(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, DerivedUnit entity, int style) {
+
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
+     * .lang.Object)
+     */
+    @Override
+    public void handleEvent(Object eventSource) {
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralDetailSection.java
new file mode 100644 (file)
index 0000000..662d257
--- /dev/null
@@ -0,0 +1,57 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.occurrence.DerivedUnit;
+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 17.12.2013
+ *
+ */
+public class SpecimenGeneralDetailSection extends AbstractCdmDetailSection<DerivedUnit> implements IDerivedUnitFacadeDetailSection{
+
+    /**
+     * @param formFactory
+     * @param conversation
+     * @param parentElement
+     * @param selectionProvider
+     * @param style
+     */
+    public SpecimenGeneralDetailSection(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 "General Specimen";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
+     */
+    @Override
+    protected AbstractCdmDetailElement<DerivedUnit> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnit> parentElement, int style) {
+        return formFactory.createSpecimenGeneralDetailElement(parentElement);
+    }
+}
index 495d4235239490b84ef804a62f9aa492a941466f..0e148ad68c247ed6388f42870b21ddb178ab0341 100644 (file)
@@ -18,6 +18,7 @@ import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.model.IElementHasDetails;
 import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship;
@@ -73,13 +74,17 @@ public class CdmSectionPart<T> extends SectionPart implements
                if (input instanceof IElementHasDetails) {
                        input = ((IElementHasDetails) input).getData();
                }
-               if ((input instanceof TaxonBase)
+               if(input instanceof DerivedUnit && ((DerivedUnit) input).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
+                   // Do nothing! This is the case if the new DetailsViews are used that are based on
+                   // the DerivedUnits themselves instead of the DerivedUnitFacade
+               }
+               else if ((input instanceof TaxonBase)
                                && (formSection instanceof ITaxonBaseDetailSection)) {
                        ((ITaxonBaseDetailSection) formSection)
                                        .setTaxonBase((TaxonBase) input);
                        return true;
                }
-               if ((input instanceof DerivedUnit)
+               else if (input.getClass().equals(DerivedUnit.class)
                                && (formSection instanceof IDerivedUnitFacadeDetailSection)) {
 
                        try {
@@ -89,11 +94,11 @@ public class CdmSectionPart<T> extends SectionPart implements
                                StoreUtil.error(getClass(), e);
                        }
                }
-               if (input instanceof PolytomousKeyRelationship) {
+               else if (input instanceof PolytomousKeyRelationship) {
                        input = ((PolytomousKeyRelationship) input).getDestination();
                }
 
-           if ((input instanceof PolytomousKeyNode) &&
+               else if ((input instanceof PolytomousKeyNode) &&
                    (formSection instanceof PolytomousKeyDetailSection ||
                            formSection instanceof GeographicalScopeDetailSection ||
                            formSection instanceof ScopeRestrictionSection ||
index b4e0cc47ddaab2fd95265996ed4d75e36dc02588..c24384f1b772828231bb99be1f587db636ae54cc 100644 (file)
@@ -38,6 +38,7 @@ import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
@@ -87,6 +88,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.LivingPlantPhotoGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenScanGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.TissueSampleGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection;
@@ -145,13 +147,22 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         */
        @Override
        public void setInput(Object input) {
-               if (input instanceof DerivedUnit) {
-                       try {
-                               input = DerivedUnitFacade.NewInstance((DerivedUnit) input,
-                                               PreferencesUtil.getDerivedUnitConfigurator());
-                       } catch (DerivedUnitFacadeNotSupportedException e) {
-                AbstractUtility.error(getClass(), e);
-                       }
+           if(input instanceof DnaSample){
+
+           }
+           else if (input instanceof DerivedUnit) {
+               if(((DerivedUnit) input).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
+                // Do nothing! This is the case if the new DetailsViews are used that are based on
+                // the DerivedUnits themselves instead of the DerivedUnitFacade
+               }
+               else {
+                try {
+                    input = DerivedUnitFacade.NewInstance((DerivedUnit) input,
+                            PreferencesUtil.getDerivedUnitConfigurator());
+                } catch (DerivedUnitFacadeNotSupportedException e) {
+                    AbstractUtility.error(getClass(), e);
+                }
+            }
                }
                else if(input instanceof FieldUnit){
                    input = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit) input);
@@ -262,9 +273,9 @@ public class DetailsViewer extends AbstractCdmDataViewer {
             else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.TissueSample){
                 createTissueSampleSection(rootElement);
             }
-            else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.DnaSample){
-                createDnaSampleSection(rootElement);
-            }
+//            else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.DnaSample){
+//                createDnaSampleSection(rootElement);
+//            }
             //FIXME: change to specific SpecimenOrObservationType
             else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.StillImage){
                 createSpecimenScanSection(rootElement);
@@ -279,10 +290,18 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                 createDerivedUnitBaseElementSection(rootElement);
             }
 
+        } else if(input instanceof DnaSample){
+            createDnaSampleSection(rootElement);
         } else if (input instanceof FieldUnit) {
             createFieldUnitSection(rootElement);
 
-        } else if (input instanceof FeatureNodeContainer) {
+        } else if (input instanceof DerivedUnit){
+            SpecimenOrObservationType recordBasis = ((DerivedUnit) input).getRecordBasis();
+            if(recordBasis==SpecimenOrObservationType.PreservedSpecimen){
+                createSpecimenSection(rootElement);
+            }
+        }
+        else if (input instanceof FeatureNodeContainer) {
                        createFeatureDistributionSection(rootElement);
 
         } else if (input instanceof PolytomousKey) {
@@ -652,6 +671,16 @@ public class DetailsViewer extends AbstractCdmDataViewer {
            addPart(fieldUnitDetailSection);
        }
 
+       private void createSpecimenSection(RootElement parent) {
+           destroySections();
+
+           SpecimenGeneralDetailSection section = formFactory.createSpecimenGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+
+           formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+
+           addPart(section);
+       }
+
        private void createTissueSampleSection(RootElement parent) {
            destroySections();