- added missing parameters to MediaSpecimen DetailsView (#4239)
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / media / MediaSpecimenGeneralDetailElement.java
index f145066b8337132be69d55d2a90614a5cb87c45e..54f4b0789d1c12631a86b689161fb284764e75db 100644 (file)
@@ -9,18 +9,26 @@
  */
 package eu.etaxonomy.taxeditor.ui.section.occurrence.media;
 
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.joda.time.DateTime;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
+import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
-import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.mvc.element.DateTimeElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationSection;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
@@ -32,10 +40,14 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  */
 public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<MediaSpecimen> {
 
+    private TermComboElement<DefinedTerm> comboKindOfUnit;
     private LanguageStringWithLabelElement textTitleLanguageString;
     private EntitySelectionElement<AgentBase> selectionArtist;
-    private TimePeriodElement date;
-    private LanguageStringWithLabelElement textDescriptionLanguageString;
+    private DateTimeElement date;
+    private LanguageStringWithLabelElement textMethodLanguageString;
+    private EntitySelectionElement<Collection> selection_collection;
+    private TextWithLabelElement text_accessionNumber;
+    private EntitySelectionElement<IdentifiableSource> selection_publishedIn;
 
     private MediaRepresentationSection mediaRepresentationSection;
     /**
@@ -55,24 +67,31 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
      */
     @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);
+            comboKindOfUnit = formFactory.createDefinedTermComboElement(TermType.KindOfUnit, formElement, "Kind of Media", entity.getKindOfUnit(), style);
+            textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Motif", media.getTitle(), style);
+            selectionArtist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Prepared by", media.getArtist(), EntitySelectionElement.ALL, style);
+
+            Label label = new Label(getLayoutComposite(), style);
+            label.setText("Preparation Date");
+            date = new DateTimeElement(formElement.getLayoutComposite(), entity.getMediaSpecimen().getMediaCreated(), style);
+            date.initController(formFactory, formElement);
+
+            textMethodLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Method", media.getDescription(Language.DEFAULT()), style);
+            selection_collection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
+            text_accessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
+            IdentifiableSource publishedIn = null;
+            for(IdentifiableSource source:entity.getSources()){
+                if(source.getType()==OriginalSourceType.PrimaryMediaSource){
+                    publishedIn = source;
+                    break;
+                }
+            }
+            selection_publishedIn = formFactory.createSelectionElement(IdentifiableSource.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
 
             mediaRepresentationSection = formFactory.createMediaRepresentationSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
             mediaRepresentationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
@@ -92,13 +111,32 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
         Media media = getEntity().getMediaSpecimen();
         if(media==null){
             media = Media.NewInstance();
+            getEntity().setMediaSpecimen(media);
         }
-
-        if(eventSource==selectionArtist){
+        if(eventSource==textTitleLanguageString){
+            media.putTitle(textTitleLanguageString.getLanguageString());
+        }
+        else if(eventSource==date.getController()){
+            int year = date.getDateTime().getYear();
+            int month = date.getDateTime().getMonth();
+            int day = date.getDateTime().getDay();
+            DateTime dateTime = new DateTime(year, month, day, 0, 0);
+            media.setMediaCreated(dateTime);
+        }
+        else if(eventSource==selectionArtist){
             media.setArtist(selectionArtist.getSelection());
         }
-        else if(eventSource==textDescriptionLanguageString){
-            media.addDescription(textDescriptionLanguageString.getLanguageString());
+        else if(eventSource==textMethodLanguageString){
+            media.addDescription(textMethodLanguageString.getLanguageString());
+        }
+        else if (eventSource == selection_collection) {
+            getEntity().setCollection(selection_collection.getSelection());
+        }
+        else if (eventSource == text_accessionNumber) {
+            getEntity().setAccessionNumber(text_accessionNumber.getText());
+        }
+        else if(eventSource==selection_publishedIn){
+            getEntity().addSource(selection_publishedIn.getSelection());
         }
     }
 }