- added MediaSpecimen DetailsView
authorPatric Plitzner <p.plitzner@bgbm.org>
Tue, 28 Jan 2014 08:31:00 +0000 (08:31 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Tue, 28 Jan 2014 08:31:00 +0000 (08:31 +0000)
 - added empty element if there is no details view available

.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/element/CdmFormFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/EmptyElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/EmptySection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationCloningDetailElement.java
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/media/ArtworkGeneralDetailElement.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/ArtworkGeneralDetailSection.java with 75% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java

index 39cd847f3926c5835b83b399ee5c8883f2a933a5..7b40a166de7a5ff18365216d012c575d8c94dc44 100644 (file)
@@ -1506,6 +1506,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/DeterminationDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationEventDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationHistoryDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/EmptySection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationDetailsWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationGeneralWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitDetailElement.java -text
@@ -1552,10 +1553,10 @@ 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/SingleReadGeneralDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/TissueSampleGeneralDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/TissueSampleGeneralDetailSection.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/ArtworkGeneralDetailElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/ArtworkGeneralDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/LivingPlantPhotoGeneralDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/LivingPlantPhotoGeneralDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/SpecimenScanGeneralDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/SpecimenScanGeneralDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/NomenclaturalReferenceDetailElement.java -text
index 9e08db25c271767b48b88490d30011378325c366..d88130b107f65d5dc953aa6ad01b51816596d50a 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.media.Media;
 import eu.etaxonomy.cdm.model.molecular.Amplification;
 import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
@@ -23,6 +24,7 @@ import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
 import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
@@ -53,9 +55,9 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                                 new MenuItem(menu, SWT.SEPARATOR);
                                 createMenuItem(menu, "Tissue Sample", fieldUnit, DerivedUnit.class, SpecimenOrObservationType.TissueSample);
                                 createMenuItem(menu, "DNA Sample", fieldUnit, DnaSample.class, SpecimenOrObservationType.DnaSample);
-                                createMenuItem(menu, "Specimen Scan", fieldUnit, DerivedUnit.class, SpecimenOrObservationType.StillImage);
-                                createMenuItem(menu, "Artwork", fieldUnit, DerivedUnit.class, SpecimenOrObservationType.StillImage);
-                                createMenuItem(menu, "Living Plant Photo", fieldUnit, DerivedUnit.class, SpecimenOrObservationType.StillImage);
+                                createMenuItem(menu, "Specimen Scan", fieldUnit, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
+                                createMenuItem(menu, "Artwork", fieldUnit, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
+                                createMenuItem(menu, "Living Plant Photo", fieldUnit, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
                             }
                             //context menu for Specimen
                             else if(selectedElement instanceof DerivedUnit && ((DerivedUnit)selectedElement).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
@@ -63,8 +65,8 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
 
                                 createMenuItem(menu, "Tissue Sample", derivedUnit, DerivedUnit.class, SpecimenOrObservationType.TissueSample);
                                 createMenuItem(menu, "DNA Sample", derivedUnit, DnaSample.class, SpecimenOrObservationType.DnaSample);
-                                createMenuItem(menu, "Specimen Scan", derivedUnit, DerivedUnit.class, SpecimenOrObservationType.StillImage);
-                                createMenuItem(menu, "Artwork", derivedUnit, DerivedUnit.class, SpecimenOrObservationType.StillImage);
+                                createMenuItem(menu, "Specimen Scan", derivedUnit, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
+                                createMenuItem(menu, "Artwork", derivedUnit, MediaSpecimen.class, SpecimenOrObservationType.StillImage);
                                 createMenuItem(menu, "Living Plant Photo", derivedUnit, DerivedUnit.class, SpecimenOrObservationType.StillImage);
                             }
                             //context menu for DnaSample
@@ -146,6 +148,11 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                 if(childClass.equals(DnaSample.class)){
                     derivedUnit = DnaSample.NewInstance();
                 }
+                else if(childClass.equals(MediaSpecimen.class)){
+                    derivedUnit = MediaSpecimen.NewInstance(specimenType);
+                    //a MediaSpecimen with no media attached does not make sense hence we add one
+                    ((MediaSpecimen)derivedUnit).setMediaSpecimen(Media.NewInstance());
+                }
                 else{
                     derivedUnit = DerivedUnit.NewInstance(specimenType);
                 }
index c211849abf70b7fa293edb76f574bcfcff3963ba..49c71fb7921bb80be78e4854c27d4b9775c1f5f4 100644 (file)
@@ -91,6 +91,7 @@ import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
 import eu.etaxonomy.cdm.model.reference.Reference;
+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;
@@ -206,6 +207,8 @@ import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.name.ProtologueElement;
 import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection;
 import eu.etaxonomy.taxeditor.ui.section.name.SpecimenTypeDesignationElement;
+import eu.etaxonomy.taxeditor.ui.section.name.SynonymRelationshipDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.name.SynonymRelationshipDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectingAreasDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectionDetailElement;
@@ -220,6 +223,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationEventDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationHistoryDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.EmptySection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailElement;
@@ -255,10 +259,10 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadGeneralDetailE
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadGeneralDetailSection;
 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.ArtworkGeneralDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.media.ArtworkGeneralDetailSection;
 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;
@@ -1179,6 +1183,22 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+
+
+    /**
+     * @param conversationHolder
+     * @param parent
+     * @param detailsViewer
+     * @param i
+     * @return
+     */
+    public EmptySection createEmptySection(CdmFormFactory formFactory, ICdmFormElement parentElement, int style) {
+        EmptySection section = new EmptySection(formFactory, parentElement, style);
+        parentElement.addElement(section);
+        adapt(section);
+        return section;
+    }
+
     /**
      * <p>
      * createDateDetailSection
@@ -1717,8 +1737,8 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
-    public ArtworkGeneralDetailSection createArtworkGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
-        ArtworkGeneralDetailSection section = new ArtworkGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+    public MediaSpecimenGeneralDetailSection createMediaSpecimenGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        MediaSpecimenGeneralDetailSection section = new MediaSpecimenGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
         return section;
     }
@@ -2043,8 +2063,8 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
-    public ArtworkGeneralDetailElement createArtworkGeneralDetailElement(ICdmFormElement parentElement){
-        ArtworkGeneralDetailElement element = new ArtworkGeneralDetailElement(this, parentElement);
+    public MediaSpecimenGeneralDetailElement createMediaSpecimenGeneralDetailElement(ICdmFormElement parentElement){
+        MediaSpecimenGeneralDetailElement element = new MediaSpecimenGeneralDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
         return element;
     }
@@ -2175,6 +2195,12 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public SynonymRelationshipDetailSection createSynonymRelationshipDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+        SynonymRelationshipDetailSection section = new SynonymRelationshipDetailSection(this, conversation, parentElement, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public ProtologueSection createProtologueSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
         ProtologueSection section = new ProtologueSection(this, conversation, parentElement, style);
         addAndAdaptSection(parentElement, section);
@@ -2407,6 +2433,9 @@ public class CdmFormFactory extends FormToolkit {
         } else if (entity instanceof NameRelationship) {
             element = new NameRelationshipDetailElement(this, parentElement, (NameRelationship) entity, removeListener,
                     style);
+        } else if (entity instanceof SynonymRelationship) {
+            element = new SynonymRelationshipDetailElement(this, parentElement, (SynonymRelationship) entity, removeListener,
+                    style);
         } else if (entity instanceof SpecimenTypeDesignation) {
             element = new SpecimenTypeDesignationElement(this, parentElement, (SpecimenTypeDesignation) entity,
                     removeListener, style);
index 5cb1ecad3b3bf1252456638cf309fdaf53a4620c..3c147e97f9c579e56c9472c075ac8b9972a16c47 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 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.
 */
@@ -15,7 +15,6 @@ import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 
 /**
@@ -25,7 +24,7 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
  * @created Nov 5, 2009
  * @version 1.0
  */
-public class EmptyElement extends AbstractCdmFormElement{
+public class EmptyElement extends AbstractCdmDetailElement{
 
        /**
         * <p>Constructor for EmptyElement.</p>
@@ -39,4 +38,20 @@ public class EmptyElement extends AbstractCdmFormElement{
                super(toolkit, parentElement);
                addControl(new Label(getLayoutComposite(), SWT.HORIZONTAL));
        }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#createControls(eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement, java.lang.Object, int)
+     */
+    @Override
+    protected void createControls(ICdmFormElement formElement, Object entity, int style) {
+        //empty
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#handleEvent(java.lang.Object)
+     */
+    @Override
+    public void handleEvent(Object eventSource) {
+        // empty
+    }
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/EmptySection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/EmptySection.java
new file mode 100644 (file)
index 0000000..7685181
--- /dev/null
@@ -0,0 +1,50 @@
+// $Id$
+/**
+* Copyright (C) 2014 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.occurrence;
+
+import eu.etaxonomy.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 27.01.2014
+ *
+ */
+public class EmptySection extends AbstractCdmDetailSection<Object> {
+
+    /**
+     * <p>Constructor for DerivedUnitFacadeDetailSection.</p>
+     *
+     * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+     * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+     * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
+     * @param selectionProvider a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
+     * @param style a int.
+     */
+    public EmptySection(CdmFormFactory formFactory, ICdmFormElement parentElement, int style) {
+        super(formFactory, null, parentElement, null, style);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public String getHeading() {
+        return "No details view implemented for this element";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
+     */
+    @Override
+    protected AbstractCdmDetailElement<Object> createCdmDetailElement(AbstractCdmDetailSection<Object> parentElement, int style) {
+        return formFactory.createEmptyElement(parentElement);
+    }
+}
index 19fd48727329286ad9edf79163710db433d40870..fb6438550f6ebe8a34db9c21e396b38866afe064 100644 (file)
@@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  */
 public class AmplificationCloningDetailElement  extends AbstractCdmDetailElement<Amplification> {
     private TextWithLabelElement textCloningStrain;
-    private TimePeriodElement dateCloning;
+    private TimePeriodElement date;
     private EntitySelectionElement<AgentBase> selectionCloningStaff;
     private TermComboElement<DefinedTerm> comboCloningMaterialOrMethod;
 
@@ -52,7 +52,7 @@ public class AmplificationCloningDetailElement  extends AbstractCdmDetailElement
     protected void createControls(ICdmFormElement formElement, Amplification entity, int style) {
         Cloning cloning = entity.getCloning();
         textCloningStrain = formFactory.createTextWithLabelElement(formElement, "Cloning Strain", cloning==null?"":cloning.getStrain(), style);
-        dateCloning = formFactory.createTimePeriodElement(formElement, "Cloning Date", cloning==null?null:cloning.getTimeperiod(), style);
+        date = formFactory.createTimePeriodElement(formElement, "Cloning Date", cloning==null?null:cloning.getTimeperiod(), style);
         selectionCloningStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Cloning Staff", cloning==null?null:cloning.getActor(), EntitySelectionElement.ALL, style);
         comboCloningMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Cloning Mat. & Meth.", cloning==null?null:cloning.getDefinedMaterialOrMethod(), style);
     }
@@ -66,7 +66,7 @@ public class AmplificationCloningDetailElement  extends AbstractCdmDetailElement
      */
     @Override
     public void handleEvent(Object eventSource) {
-        if(eventSource==textCloningStrain || eventSource==dateCloning|| eventSource==selectionCloningStaff || eventSource==comboCloningMaterialOrMethod){
+        if(eventSource==textCloningStrain || eventSource==date|| eventSource==selectionCloningStaff || eventSource==comboCloningMaterialOrMethod){
             Cloning cloning = getEntity().getCloning();
             if(cloning==null){
                 cloning = Cloning.NewInstance();
@@ -75,8 +75,8 @@ public class AmplificationCloningDetailElement  extends AbstractCdmDetailElement
             if(eventSource==textCloningStrain){
                 cloning.setStrain(textCloningStrain.getText());
             }
-            else if(eventSource==dateCloning){
-                cloning.setTimeperiod(dateCloning.getTimePeriod());
+            else if(eventSource==date){
+                cloning.setTimeperiod(date.getTimePeriod());
             }
             else if(eventSource==selectionCloningStaff){
                 cloning.setActor(selectionCloningStaff.getSelection());
index d56c3a0bc5018a0d3ca4e75430ccd67c249f9d38..0654a7a19ffbc52d8c811e4d102be7f8fb734b55 100644 (file)
@@ -20,6 +20,7 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -36,7 +37,7 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement<Seque
     private TextWithLabelElement textBarcodeSequence;
     private TextWithLabelElement textGeneticAccessNo;
     private TextWithLabelElement textBoldProcessID;
-    private TextWithLabelElement textBoldLink;
+    private UriWithLabelElement textBoldUri;
 
     private SequenceReferenceCollectionDetailSection sectionReferenceCollection;
 
@@ -67,8 +68,8 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement<Seque
 
         textGeneticAccessNo = formFactory.createTextWithLabelElement(formElement, "Genetic Acc. No.", entity.getGeneticAccessionNumber(), style);
         textBoldProcessID = formFactory.createTextWithLabelElement(formElement, "BOLD Process ID", entity.getBoldProcessId(), style);
-        textBoldLink = formFactory.createTextWithLabelElement(formElement, "BOLD URI", entity.getBoldUri(), style);
-        textBoldLink.setEnabled(false);
+        textBoldUri = formFactory.createUriWithLabelElement(formElement, "BOLD URI", entity.getBoldUri(), style);
+        textBoldUri.setEnabled(false);
 
         sectionReferenceCollection = formFactory.createSequenceReferenceCollectionDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
         sectionReferenceCollection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
@@ -120,13 +121,13 @@ public class SequenceGeneralDetailElement extends AbstractCdmDetailElement<Seque
         else if(eventSource==textBoldProcessID){
             getEntity().setBoldProcessId(textBoldProcessID.getText());
             if(textBoldProcessID.getText()!=null && !textBoldProcessID.getText().isEmpty()){
-                textBoldLink.setText(getEntity().getBoldUri().toString());
+                textBoldUri.setUri(getEntity().getBoldUri());
             }
             else{
-                textBoldLink.setText("");
+                textBoldUri.setText("");
             }
         }
-        else if(eventSource==textBoldLink){
+        else if(eventSource==textBoldUri){
             //cannot be set because it is generated from the genetic access number and a base URI
         }
     }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/ArtworkGeneralDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/ArtworkGeneralDetailElement.java
deleted file mode 100644 (file)
index 16932f3..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-// $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.media;
-
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
-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 16.12.2013
- *
- */
-public class ArtworkGeneralDetailElement extends AbstractCdmDetailElement<DerivedUnitFacade> {
-
-    /**
-     * @param formFactory
-     * @param formElement
-     */
-    public ArtworkGeneralDetailElement(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, DerivedUnitFacade 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/media/MediaSpecimenGeneralDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java
new file mode 100644 (file)
index 0000000..8e36f46
--- /dev/null
@@ -0,0 +1,104 @@
+// $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.media;
+
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+
+import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationSection;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author pplitzner
+ * @date 16.12.2013
+ *
+ */
+public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<MediaSpecimen> {
+
+    private LanguageStringWithLabelElement textTitleLanguageString;
+    private EntitySelectionElement<AgentBase> selectionArtist;
+    private TimePeriodElement date;
+    private LanguageStringWithLabelElement textDescriptionLanguageString;
+
+    private MediaRepresentationSection mediaRepresentationSection;
+    /**
+     * @param formFactory
+     * @param formElement
+     */
+    public MediaSpecimenGeneralDetailElement(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, MediaSpecimen entity, int style) {
+        LanguageString title;
+        AgentBase artist;
+        LanguageString description;
+
+        Media media = entity.getMediaSpecimen();
+        if(media==null){
+            formFactory.createLabel(formElement, "No media attached to this MediaSpecimen!");
+            title = null;
+            artist = null;
+            description = null;
+        }
+        else{
+            title = media.getTitle();
+            artist = media.getArtist();
+            description = media.getDescription(Language.DEFAULT());
+            textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Title", title, style);
+            selectionArtist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Artist", artist, EntitySelectionElement.ALL, style);
+            textDescriptionLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Description", description, style);
+
+            mediaRepresentationSection = formFactory.createMediaRepresentationSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
+            mediaRepresentationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+            mediaRepresentationSection.setEntity(media);
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
+     * .lang.Object)
+     */
+    @Override
+    public void handleEvent(Object eventSource) {
+        Media media = getEntity().getMediaSpecimen();
+        if(media==null){
+            media = Media.NewInstance();
+        }
+
+        if(eventSource==selectionArtist){
+            media.setArtist(selectionArtist.getSelection());
+        }
+        else if(eventSource==textDescriptionLanguageString){
+            media.addDescription(textDescriptionLanguageString.getLanguageString());
+        }
+    }
+}
@@ -12,7 +12,7 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.media;
 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.occurrence.MediaSpecimen;
 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 ArtworkGeneralDetailSection  extends AbstractCdmDetailSection<DerivedUnitFacade> {
+public class MediaSpecimenGeneralDetailSection  extends AbstractCdmDetailSection<MediaSpecimen> {
 
     /**
      * @param formFactory
@@ -32,7 +32,7 @@ public class ArtworkGeneralDetailSection  extends AbstractCdmDetailSection<Deriv
      * @param selectionProvider
      * @param style
      */
-    public ArtworkGeneralDetailSection(CdmFormFactory formFactory,
+    public MediaSpecimenGeneralDetailSection(CdmFormFactory formFactory,
             ConversationHolder conversation, ICdmFormElement parentElement,
             ISelectionProvider selectionProvider, int style) {
         super(formFactory, conversation, parentElement, selectionProvider, style);
@@ -44,14 +44,14 @@ public class ArtworkGeneralDetailSection  extends AbstractCdmDetailSection<Deriv
      */
     @Override
     public String getHeading() {
-        return "General";
+        return "General Media Specimen";
     }
 
     /* (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) {
-        return formFactory.createArtworkGeneralDetailElement(parentElement);
+    protected AbstractCdmDetailElement<MediaSpecimen> createCdmDetailElement(AbstractCdmDetailSection<MediaSpecimen> parentElement, int style) {
+        return formFactory.createMediaSpecimenGeneralDetailElement(parentElement);
     }
 }
index bb52c07d596d8b6401b281e81e284d42f9941fd4..7201ac8ee00477ef1087484924389e54119cbc45 100644 (file)
@@ -39,14 +39,16 @@ 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.Amplification;
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.molecular.SingleRead;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.taxeditor.editor.UsageTermCollection;
@@ -82,10 +84,12 @@ import eu.etaxonomy.taxeditor.ui.section.name.NameRelationshipDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.name.NomenclaturalStatusSection;
 import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection;
+import eu.etaxonomy.taxeditor.ui.section.name.SynonymRelationshipDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.EmptySection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
@@ -99,8 +103,8 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSe
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.TissueSampleGeneralDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.media.ArtworkGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.media.LivingPlantPhotoGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.media.SpecimenScanGeneralDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailSection;
@@ -206,8 +210,10 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         // Need to build in a mechanism where navigators / editors are 'aware'
         // of the corresponding detail viewer.
         Object input = getInput();
+
+        destroySections();
         if (input instanceof TaxonBase) {
-            createTaxonSections(rootElement);
+            createTaxonSections(rootElement, (TaxonBase) input);
 
         } else if (input instanceof NonViralName) {
             createNameSections(rootElement);
@@ -290,23 +296,31 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                 createLivingPlantPhotoSection(rootElement);
             }
             else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.StillImage){
-                createArtworkSection(rootElement);
+                createMediaSpecimenSection(rootElement);
             }
             else{
                 createDerivedUnitBaseElementSection(rootElement);
             }
-        } else if (input instanceof SpecimenOrObservationBase){
-            SpecimenOrObservationType recordBasis = ((SpecimenOrObservationBase<?>) input).getRecordBasis();
-            if(recordBasis==SpecimenOrObservationType.PreservedSpecimen){
-                createPreservedSpecimenSpecimenSection(rootElement);
-            }
-            else if(recordBasis==SpecimenOrObservationType.FieldUnit){
-                createFieldUnitSection(rootElement);
-            }
-            else if(recordBasis==SpecimenOrObservationType.DnaSample){
-                createDnaSampleSection(rootElement);
-            }
+        } else if (input instanceof DnaSample){
+            createDnaSampleSection(rootElement);
+        } else if (input instanceof MediaSpecimen){
+            createMediaSpecimenSection(rootElement);
         }
+//        else if (input instanceof SpecimenOrObservationBase){
+//            SpecimenOrObservationType recordBasis = ((SpecimenOrObservationBase<?>) input).getRecordBasis();
+//            if(recordBasis==SpecimenOrObservationType.PreservedSpecimen){
+//                createPreservedSpecimenSpecimenSection(rootElement);
+//            }
+//            else if(recordBasis==SpecimenOrObservationType.FieldUnit){
+//                createFieldUnitSection(rootElement);
+//            }
+//            else if(recordBasis==SpecimenOrObservationType.DnaSample){
+//                createDnaSampleSection(rootElement);
+//            }
+//            else if(recordBasis.isKindOf(SpecimenOrObservationType.Media)){
+//                createMediaSpecimenSection(rootElement);
+//            }
+//        }
         else if(input instanceof Amplification){
             createAmplificationSection(rootElement);
         }
@@ -334,13 +348,25 @@ public class DetailsViewer extends AbstractCdmDataViewer {
             createTermVocabularySection(rootElement);
         } else if (input instanceof DefinedTermBase) {
             createDefinedTermSection(rootElement);
-        } else {
-            destroySections();
+        }
+        if(managedForm.getParts().length==0) {
+            createEmptySection(rootElement);
         }
         layout();
     }
 
 
+    /**
+     * @param rootElement
+     */
+    private void createEmptySection(RootElement parent) {
+        destroySections();
+
+        EmptySection emptySection = formFactory.createEmptySection(formFactory, parent, SWT.NONE);
+
+        addPart(emptySection);
+    }
+
     /**
      * @param rootElement
      */
@@ -387,7 +413,7 @@ public class DetailsViewer extends AbstractCdmDataViewer {
      *
      * @param parent
      */
-    private void createTaxonSections(RootElement parent) {
+    private void createTaxonSections(RootElement parent, TaxonBase taxonBase) {
         destroySections();
 
         TaxonBaseDetailSection taxonBaseDetailSection = formFactory.createTaxonBaseDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
@@ -419,6 +445,13 @@ public class DetailsViewer extends AbstractCdmDataViewer {
 
         formFactory.createHorizontalSeparator(parent, SWT.BORDER);
 
+        SynonymRelationshipDetailSection synonymRelationshipSection = null;
+        if(taxonBase instanceof Synonym){
+            synonymRelationshipSection = formFactory.createSynonymRelationshipDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
+
+            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+        }
+
         ParsingMessagesSection parsingMessagesSection = formFactory.createParsingMessagesSection(getConversationHolder(), parent, this, ExpandableComposite.EXPANDED);
 
         addPart(taxonBaseDetailSection);
@@ -428,6 +461,9 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         addPart(referenceDetailSection);
         addPart(typeDesignationSection);
         addPart(nameRelationshipSection);
+        if(synonymRelationshipSection!=null){
+            addPart(synonymRelationshipSection);
+        }
         addPart(parsingMessagesSection);
     }
 
@@ -629,6 +665,7 @@ public class DetailsViewer extends AbstractCdmDataViewer {
 
     private void createMediaElementSection(RootElement parent) {
         destroySections();
+
         MediaDetailsSection mediaDetailSection = formFactory.createMediaDetailsSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
 
         addPart(mediaDetailSection);
@@ -765,9 +802,9 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         addPart(section);
     }
 
-    private void createArtworkSection(RootElement parent) {
+    private void createMediaSpecimenSection(RootElement parent) {
         destroySections();
-        ArtworkGeneralDetailSection section = formFactory.createArtworkGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+        MediaSpecimenGeneralDetailSection section = formFactory.createMediaSpecimenGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
 
         addPart(section);
     }