fix #6658: add mediaCreated date field
authorKatja Luther <k.luther@bgbm.org>
Tue, 13 Jun 2017 09:33:54 +0000 (11:33 +0200)
committerKatja Luther <k.luther@bgbm.org>
Tue, 13 Jun 2017 09:33:54 +0000 (11:33 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java

index 708d4b5ddff6b9eda554baf393dab2afbb029496..d84a1ce58c96a86ea9d94438ba7b609866631039 100644 (file)
@@ -8,19 +8,38 @@
 */
 package eu.etaxonomy.taxeditor.ui.mvc.element;
 
+
+import java.util.Calendar;
+import java.util.ConcurrentModificationException;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DateTime;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
 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 org.joda.time.DateTime;
 
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 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.IPropertyChangeEmitter;
 import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite;
 
 /**
@@ -28,18 +47,20 @@ import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite;
  * @date 16.06.2014
  *
  */
-public class DateElement extends AbstractCdmComposite<DateElementController> {
+public class DateElement extends AbstractCdmComposite<DateElementController>  {
 
     private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
-    private final DateTime initialDateTime;
-    private final Text textDate;
+    private org.joda.time.DateTime initialDateTime;
+    private Text textDate;
+   // private final Button openDateDialog;
+   
 
     /**
      * Create the composite.
      * @param parent
      * @param style
      */
-    public DateElement(Composite parent, DateTime initialDateTime, int style) {
+    public DateElement(Composite parent, org.joda.time.DateTime initialDateTime, int style) {
         super(parent, style);
         this.initialDateTime = initialDateTime;
         addDisposeListener(new DisposeListener() {
@@ -63,6 +84,41 @@ public class DateElement extends AbstractCdmComposite<DateElementController> {
 
         textDate = new Text(this, SWT.BORDER | SWT.WRAP);
         textDate.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+      
+//        openDateDialog = new Button (this, SWT.PUSH);
+//        Image image = getDisplay().getSystemImage(SWT.DATE);
+//        openDateDialog.setText ("Open Date Dialog");
+//        openDateDialog.addSelectionListener (new SelectionAdapter() {
+//             @Override
+//             public void widgetSelected(SelectionEvent e){
+//                     final Shell dialog = new Shell (parent.getShell(), SWT.DIALOG_TRIM);
+//             
+//                     dialog.setLayout (new GridLayout (3, false));
+//
+//                     final DateTime calendar = new DateTime (dialog, SWT.CALENDAR | SWT.BORDER);
+//                     //final DateTime time = new DateTime (dialog, SWT.TIME | SWT.SHORT);
+//
+//                     new Label (dialog, SWT.NONE);
+//                     new Label (dialog, SWT.NONE);
+//                     Button ok = new Button (dialog, SWT.PUSH);
+//                     ok.setText ("OK");
+//                     ok.setLayoutData(new GridData (SWT.FILL, SWT.CENTER, false, false));
+//                     ok.addSelectionListener (new SelectionAdapter() {
+//                     @Override
+//                     public void widgetSelected(SelectionEvent e){
+//                             setData(makeJodaFromSWT(calendar));
+//                             setTextDate((calendar.getMonth () + 1) + "/" + calendar.getDay () + "/" + calendar.getYear ());
+//                                     System.out.println ("Calendar date selected (MM/DD/YYYY) = " + (calendar.getMonth () + 1) + "/" + calendar.getDay () + "/" + calendar.getYear ());
+//                             //      System.out.println ("Time selected (HH:MM) = " + time.getHours () + ":" + (time.getMinutes () < 10 ? "0" : "") + time.getMinutes ());
+//                                     dialog.close ();
+//                             }
+//                     });
+//                     dialog.setDefaultButton (ok);
+//                     dialog.pack ();
+//                     dialog.open ();
+//             }
+//        });
+       
         toolkit.adapt(textDate, true, true);
     }
 
@@ -71,10 +127,59 @@ public class DateElement extends AbstractCdmComposite<DateElementController> {
      */
     @Override
     protected void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
-        controller = new DateElementController(this, formFactory, parentElement, initialDateTime, SWT.NONE);
+        controller = new DateElementController(this, formFactory, parentElement, initialDateTime);
         formFactory.adapt(controller);
     }
     public Text getTextDate() {
         return textDate;
     }
+    
+//    public void setTextDate(String text){
+//     textDate.setText(text);
+//    }
+//    /**
+//      * <p>
+//      * Setter for the field <code>entity</code>.
+//      * </p>
+//      *
+//      * @param selection
+//      *            a T object.
+//      */
+//     public void setEntity(org.joda.time.DateTime time) {
+//             this.initialDateTime = time;
+//             
+//     }
+//     
+//     
+//               public static org.joda.time.DateTime makeJodaFromSWT(
+//                                             org.eclipse.swt.widgets.DateTime widget) {
+//                 return new org.joda.time.DateTime(widget.getYear(),
+//                                     widget.getMonth(),
+//                                     widget.getDay(),
+//                                     widget.getHours(),
+//                                     widget.getMinutes(),
+//                                     widget.getSeconds());
+//               }
+//
+//               public static void updateSWTwithJoda(
+//                                             org.eclipse.swt.widgets.DateTime widget,
+//                                             org.joda.time.DateTime dateTime) {
+//                 widget.setYear(dateTime.getYear());
+//                 widget.setMonth(dateTime.getMonthOfYear());
+//                 widget.setDay(dateTime.getDayOfMonth());
+//                 widget.setHours(dateTime.getHourOfDay());
+//                 widget.setMinutes(dateTime.getMinuteOfHour());
+//                 widget.setSeconds(dateTime.getSecondOfMinute());
+//               }
+//             
+//               public void setData (org.joda.time.DateTime data) {
+//                             this.initialDateTime = data;
+//                             
+//                     }
+
+               
+               
+               
+         
+
 }
index 13644ea9ae2c08596a781f5812aef6d9c2f3c18f..b854e3ddad30ae2dce67cf8d9f7d77134965abbb 100644 (file)
@@ -13,6 +13,8 @@ import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.widgets.Text;
 import org.joda.time.DateTime;
 
+import com.sun.istack.logging.Logger;
+
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
@@ -37,13 +39,21 @@ public class DateElementController extends AbstractCdmFormElement implements IEn
      * @param initialDateTime
      * @param none
      */
-    public DateElementController(DateElement dateTimeElement, CdmFormFactory formFactory, ICdmFormElement parentElement, DateTime initialDateTime, int none) {
+    public DateElementController(DateElement dateTimeElement, CdmFormFactory formFactory, ICdmFormElement parentElement, DateTime initialDateTime) {
         super(formFactory, parentElement);
         this.textDate = dateTimeElement.getTextDate();
         this.textDate.setText(initialDateTime!=null?initialDateTime.toString("yyyy-MM-dd"):"");
         addControl(textDate);
         textDate.addModifyListener(this);
     }
+    
+//    public DateElementController(DateElementFormElement dateTimeElement, CdmFormFactory formFactory,  DateTime initialDateTime) {
+//        super(formFactory, dateTimeElement);
+//        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.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
@@ -56,7 +66,7 @@ public class DateElementController extends AbstractCdmFormElement implements IEn
             this.dateTime = parsedDateTime;
             firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
         } catch (IllegalArgumentException iae) {
-            //nothing
+            System.err.println(iae.getMessage());
         }
     }
 
index fec44b37831e5aa43d3d102a2893b398346af049..ae1801dbdd463426f74bcc0adc7d239ec7ffa626 100644 (file)
@@ -33,6 +33,7 @@ import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
 import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement;
+import eu.etaxonomy.taxeditor.ui.mvc.element.DateElementFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
@@ -53,7 +54,7 @@ public class MediaMetaElement extends AbstractEntityCollectionElement<Media> imp
     private LanguageStringWithLabelElement text_description;
     private LanguageStringWithLabelElement text_title;
     private MediaDetailElement mediaDetailElement;
-  //  private DateElement dateElement;
+    private DateElement mediaCreated;
     private SelectionArbitrator selectionArbitrator;
 
     public MediaMetaElement(CdmFormFactory cdmFormFactory,
@@ -84,10 +85,11 @@ public class MediaMetaElement extends AbstractEntityCollectionElement<Media> imp
         text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
         selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style);
         addElement(selection_artist);
+        mediaCreated = formFactory.createDateElement(element, "Media Created", null, style);
+        addElement(mediaCreated.getController());
         text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
-       // dateElement = formFactory.createDateElement(element, "Media created", null, style);
-       // addControl(dateElement);
-       
+        
+    
         
         
         mediaDetailElement = formFactory.createMediaDetailElement(element);
@@ -119,7 +121,7 @@ public class MediaMetaElement extends AbstractEntityCollectionElement<Media> imp
         }
 
         text_title.setLanguageString(title);
-       // dateElement.setData(element.getMediaCreated());
+        mediaCreated.setData(element.getMediaCreated());
 
     }
 
@@ -147,9 +149,9 @@ public class MediaMetaElement extends AbstractEntityCollectionElement<Media> imp
             if (getParentElement() instanceof AbstractCdmDetailSection) {
                 ((AbstractCdmDetailSection<?>) getParentElement()).updateTitle();
             }
-//        } else if (eventSource == dateElement){
-//             org.joda.time.DateTime date = dateElement.getController().getDateTime();
-//             getEntity().setMediaCreated(date);
+        } else if (eventSource == mediaCreated.getController()){
+               org.joda.time.DateTime date = mediaCreated.getController().getDateTime();
+               getEntity().setMediaCreated(date);
         }
     }