- added "Published in" parameter to MediaSpecimen DetailsView (#4239)
authorPatric Plitzner <p.plitzner@bgbm.org>
Tue, 17 Jun 2014 12:22:28 +0000 (12:22 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Tue, 17 Jun 2014 12:22:28 +0000 (12:22 +0000)
.gitattributes
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/AbstractCdmComposite.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeElement.java with 75% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java with 52% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementMVC.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java

index 0ecba3a2132f052aa0ecf9c3405ac124b30f0bdc..0d04c6b375c592cacee3f89deca5b625661ac216 100644 (file)
@@ -1397,8 +1397,8 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/Derived
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/GeographicPointElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermComboController.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementController.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementMVC.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/interfaces/CdmCompositeController.java -text
index c2767aeaf58db6091b2daff7b9f6ef173a08fc02..d33ae2dea82a1a51ae876458ad3e42bb469fe1a0 100644 (file)
@@ -14,17 +14,17 @@ import org.eclipse.swt.widgets.Control;
 
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.mvc.interfaces.ICdmComposite;
 import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController;
+import eu.etaxonomy.taxeditor.ui.mvc.interfaces.ICdmComposite;
 
 /**
  * @author pplitzner
  * @date 11.02.2014
  *
  */
-public abstract class AbstractCdmComposite extends Composite implements ICdmComposite {
+public abstract class AbstractCdmComposite<T extends CdmCompositeController> extends Composite implements ICdmComposite {
 
-    protected CdmCompositeController controller;
+    protected T controller;
 
     /**
      * @param parent
@@ -63,7 +63,7 @@ public abstract class AbstractCdmComposite extends Composite implements ICdmComp
     protected abstract void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement);
 
     @Override
-    public CdmCompositeController getController(){
+    public T getController(){
         return controller;
     }
 
index aba7b4bd6018451ee34fe49414fa3582c42ddd73..5702fde37a57298c2f093e15a1776b8b79ada594 100644 (file)
@@ -29,7 +29,7 @@ import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite;
  * @date 29.01.2014
  *
  */
-public class EnumTermCombo extends AbstractCdmComposite {
+public class EnumTermCombo extends AbstractCdmComposite<EnumTermComboController> {
 
     private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
     private final Combo combo;
similarity index 75%
rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeElement.java
rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java
index d1a6aa1184da3dc1ad7d77bdfd9ddd47e3e5be55..52edbe8a6f119c221a2eb5c5d8e97c780384f8fa 100644 (file)
@@ -13,11 +13,12 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.DateTime;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
+import org.joda.time.DateTime;
 
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -28,18 +29,18 @@ import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite;
  * @date 16.06.2014
  *
  */
-public class DateTimeElement extends AbstractCdmComposite {
+public class DateElement extends AbstractCdmComposite<DateElementController> {
 
     private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
-    private final DateTime dateTime;
-    private final org.joda.time.DateTime initialDateTime;
+    private final DateTime initialDateTime;
+    private final Text textDate;
 
     /**
      * Create the composite.
      * @param parent
      * @param style
      */
-    public DateTimeElement(Composite parent, org.joda.time.DateTime initialDateTime, int style) {
+    public DateElement(Composite parent, DateTime initialDateTime, int style) {
         super(parent, style);
         this.initialDateTime = initialDateTime;
         addDisposeListener(new DisposeListener() {
@@ -58,18 +59,12 @@ public class DateTimeElement extends AbstractCdmComposite {
             tableWrapLayout.leftMargin = 0;
             tableWrapLayout.horizontalSpacing = 0;
             tableWrapLayout.bottomMargin = 0;
-            tableWrapLayout.numColumns = 1;
             setLayout(tableWrapLayout);
         }
 
-        dateTime = new DateTime(this, SWT.BORDER | SWT.DROP_DOWN);
-        dateTime.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
-        toolkit.adapt(dateTime);
-        toolkit.paintBordersFor(dateTime);
-    }
-
-    public DateTime getDateTime() {
-        return dateTime;
+        textDate = new Text(this, SWT.BORDER);
+        textDate.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        toolkit.adapt(textDate, true, true);
     }
 
     /* (non-Javadoc)
@@ -77,7 +72,10 @@ public class DateTimeElement extends AbstractCdmComposite {
      */
     @Override
     protected void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
-        controller = new DateTimeController(this, formFactory, parentElement, initialDateTime, SWT.NONE);
+        controller = new DateElementController(this, formFactory, parentElement, initialDateTime, SWT.NONE);
         formFactory.adapt(controller);
     }
+    public Text getTextDate() {
+        return textDate;
+    }
 }
similarity index 52%
rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java
rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java
index 0832aeb4082c72136936e99de0772d2f482420f5..1533beca703941e8ca7caa775d828c9b0d57591c 100644 (file)
@@ -9,16 +9,16 @@
 */
 package eu.etaxonomy.taxeditor.ui.mvc.element;
 
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.widgets.DateTime;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.widgets.Text;
+import org.joda.time.DateTime;
 
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
-import eu.etaxonomy.taxeditor.ui.element.ISelectable;
 import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController;
 
 /**
@@ -26,10 +26,10 @@ import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController;
  * @date 16.06.2014
  *
  */
-public class DateTimeController extends AbstractCdmFormElement implements IEnableableFormElement,
-ISelectable, CdmCompositeController, SelectionListener{
+public class DateElementController extends AbstractCdmFormElement implements IEnableableFormElement, CdmCompositeController, ModifyListener{
 
-    private final DateTime dateTime;
+    private final Text textDate;
+    private DateTime dateTime;
 
     /**
      * @param dateTimeElement
@@ -38,26 +38,32 @@ ISelectable, CdmCompositeController, SelectionListener{
      * @param initialDateTime
      * @param none
      */
-    public DateTimeController(DateTimeElement dateTimeElement, CdmFormFactory formFactory, ICdmFormElement parentElement, org.joda.time.DateTime initialDateTime, int none) {
+    public DateElementController(DateElement dateTimeElement, CdmFormFactory formFactory, ICdmFormElement parentElement, DateTime initialDateTime, int none) {
         super(formFactory, parentElement);
-        this.dateTime = dateTimeElement.getDateTime();
-//        this.dateTime.setDate(initialDateTime.getYear(), initialDateTime.getMonthOfYear(), initialDateTime.getDayOfMonth());
-        addControl(dateTime);
-        dateTime.addSelectionListener(this);
+        this.textDate = dateTimeElement.getTextDate();
+        this.textDate.setText(initialDateTime!=null?initialDateTime.toString("yyyy-MM-dd"):"");
+        addControl(textDate);
+        textDate.addModifyListener(this);
     }
 
     /* (non-Javadoc)
-     * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+     * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
      */
-    /** {@inheritDoc} */
     @Override
-    public void widgetSelected(SelectionEvent e) {
-        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+    public void modifyText(ModifyEvent e) {
+        try {
+            String text = textDate.getText();
+            DateTime parsedDateTime = DateTime.parse(text);
+            this.dateTime = parsedDateTime;
+            firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+        } catch (IllegalArgumentException iae) {
+            //nothing
+        }
     }
 
-    /** {@inheritDoc} */
-    @Override
-    public void widgetDefaultSelected(SelectionEvent e) {}
+    public DateTime getDateTime(){
+        return dateTime;
+    }
 
     /* (non-Javadoc)
      * @see eu.etaxonomy.taxeditor.ui.element.IRelevantFormElement#setIrrelevant(boolean)
@@ -68,21 +74,12 @@ ISelectable, CdmCompositeController, SelectionListener{
 
     }
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.ui.element.ISelectable#setSelected(boolean)
-     */
-    @Override
-    public void setSelected(boolean selected) {
-        // TODO Auto-generated method stub
-
-    }
-
     /* (non-Javadoc)
      * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#setEnabled(boolean)
      */
     @Override
     public void setEnabled(boolean enabled) {
-        dateTime.setEnabled(enabled);
+        textDate.setEnabled(enabled);
     }
 
     /* (non-Javadoc)
@@ -90,7 +87,7 @@ ISelectable, CdmCompositeController, SelectionListener{
      */
     @Override
     public boolean isEnabled() {
-        return dateTime.isEnabled();
+        return textDate.isEnabled();
     }
 
 }
index 155e71a658febc6c1e8ef2bdd15b470c9d693fab..4725bbb8b3e24792f63ab582a2126c035b64e0a2 100644 (file)
@@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite;
  * @date 11.02.2014
  *
  */
-public class TextWithLabelElementMVC extends AbstractCdmComposite {
+public class TextWithLabelElementMVC extends AbstractCdmComposite<TextWithLabelElementController> {
 
     private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
     private final Text text;
index 54f4b0789d1c12631a86b689161fb284764e75db..c73b7d16fdb9025596cbda1c52741faaa97bce07 100644 (file)
@@ -22,15 +22,17 @@ 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.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.mvc.element.DateTimeElement;
+import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationSection;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.SourceSection;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
@@ -43,11 +45,11 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
     private TermComboElement<DefinedTerm> comboKindOfUnit;
     private LanguageStringWithLabelElement textTitleLanguageString;
     private EntitySelectionElement<AgentBase> selectionArtist;
-    private DateTimeElement date;
+    private DateElement date;
     private LanguageStringWithLabelElement textMethodLanguageString;
     private EntitySelectionElement<Collection> selection_collection;
     private TextWithLabelElement text_accessionNumber;
-    private EntitySelectionElement<IdentifiableSource> selection_publishedIn;
+    private EntitySelectionElement<Reference> selection_publishedIn;
 
     private MediaRepresentationSection mediaRepresentationSection;
     /**
@@ -77,21 +79,25 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
             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);
+            label.setText("Preparation Date (yyyy-mm-dd)");
+//            label.setLayoutData(LayoutConstants.LEFT());
+            date = new DateElement(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()){
+
+            //the first PrimaryMediaSource is used for storing the reference
+            Reference<?> publishedIn = null;
+            for(IdentifiableSource source:media.getSources()){
                 if(source.getType()==OriginalSourceType.PrimaryMediaSource){
-                    publishedIn = source;
+                    publishedIn = source.getCitation();
                     break;
                 }
             }
-            selection_publishedIn = formFactory.createSelectionElement(IdentifiableSource.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
+            selection_publishedIn = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
 
             mediaRepresentationSection = formFactory.createMediaRepresentationSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
             mediaRepresentationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
@@ -117,10 +123,7 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
             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);
+            DateTime dateTime = date.getController().getDateTime();
             media.setMediaCreated(dateTime);
         }
         else if(eventSource==selectionArtist){
@@ -136,7 +139,19 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
             getEntity().setAccessionNumber(text_accessionNumber.getText());
         }
         else if(eventSource==selection_publishedIn){
-            getEntity().addSource(selection_publishedIn.getSelection());
+            IdentifiableSource primaryMediaSource = null;
+            for(IdentifiableSource source:media.getSources()){
+                if(source.getType()==OriginalSourceType.PrimaryMediaSource){
+                    primaryMediaSource = source;
+                }
+            }
+            if(primaryMediaSource==null){
+                primaryMediaSource = IdentifiableSource.NewInstance(OriginalSourceType.PrimaryMediaSource);
+                media.addSource(primaryMediaSource);
+            }
+            else{
+                primaryMediaSource.setCitation(selection_publishedIn.getSelection());
+            }
         }
     }
 }
index 5eb06d06e687890f86084d95aed5fd41cef32e67..4842391de8b705be7880ad31e63fc570e126be7d 100644 (file)
@@ -123,6 +123,23 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
             }
             label += fieldUnit.getFieldNumber()!=null?fieldUnit.getFieldNumber():"";
         }
+        else if(element instanceof MediaSpecimen){
+            MediaSpecimen mediaSpecimen = (MediaSpecimen)element;
+            label += mediaSpecimen.getMediaSpecimen().getTitle()!=null?mediaSpecimen.getMediaSpecimen().getTitle().getText()+", ":"[no motif]";
+            label += mediaSpecimen.getMediaSpecimen().getArtist()!=null?mediaSpecimen.getMediaSpecimen().getArtist()+", ":"";
+            label += mediaSpecimen.getAccessionNumber()!=null?mediaSpecimen.getAccessionNumber()+", ":"";
+            Collection collection = mediaSpecimen.getCollection();
+            if(collection!=null){
+                label += collection.getName()!=null?collection.getName()+" ":"";
+            }
+        }
+        else if(element instanceof DnaSample
+                || (element instanceof DerivedUnit
+                        && ((SpecimenOrObservationBase<?>) element).getRecordBasis()==SpecimenOrObservationType.DnaSample)){
+            //TODO implement
+            label += element.toString();
+
+        }
         else if(element instanceof DerivedUnit){
             DerivedUnit derivedUnit = (DerivedUnit)element;
             if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
@@ -143,21 +160,10 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
                 label += derivedUnit.getBarcode()!=null?derivedUnit.getBarcode():"";
             }
             else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.TissueSample){
+                //TODO: implement
 //                kindofTissue + SampleDesignation
             }
         }
-        else if(element instanceof MediaSpecimen){
-            MediaSpecimen mediaSpecimen = (MediaSpecimen)element;
-            //TODO implement
-            label += "Motif?";
-        }
-        else if(element instanceof DnaSample
-                || (element instanceof DerivedUnit
-                        && ((SpecimenOrObservationBase<?>) element).getRecordBasis()==SpecimenOrObservationType.DnaSample)){
-            //TODO implement
-            label += element.toString();
-
-        }
         else if(element instanceof Sequence){
             Sequence sequence = (Sequence)element;
             label += "SampleDesignation?"+", ";
@@ -176,6 +182,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider {
         if(label.isEmpty()){
             label = element.toString();
         }
+        //remove last comma
         else if(label.endsWith(", ")){
             label = label.substring(0, label.length()-2);
         }