ref #6658: add calendar widget to dateElement
authorKatja Luther <k.luther@bgbm.org>
Wed, 14 Jun 2017 12:49:58 +0000 (14:49 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 14 Jun 2017 12:49:58 +0000 (14:49 +0200)
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/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
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaQualityDetailElement.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/ui/section/reference/ReferenceDetailElement.java

index 46487c23cb56ced04fd75e483eec76accb87377e..7929518820b13354a963115611fd77fcaa988bbd 100644 (file)
@@ -40,6 +40,7 @@ import org.eclipse.ui.forms.IFormColors;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.eclipse.ui.internal.forms.widgets.FormFonts;
 import org.joda.time.DateTime;
 import org.joda.time.Partial;
@@ -2892,10 +2893,11 @@ public class CdmFormFactory extends FormToolkit {
 //        return dateElement;
 //    }
     
-    public DateElement createDateElement(ICdmFormElement formElement, String labelText, DateTime dateTime, int style){
+    public DateElement createDateElement(ICdmFormElement formElement, String labelText, DateTime dateTime, int style, boolean editableText){
         Label label = new Label(formElement.getLayoutComposite(), style);
-         label.setText(labelText+" (yyyy-MM-dd)");
-         DateElement dateElement = new DateElement(formElement.getLayoutComposite(), dateTime, style);
+         label.setText(labelText);
+         label.setLayoutData(new TableWrapData(TableWrapData.LEFT, TableWrapData.MIDDLE, 1, 1));
+         DateElement dateElement = new DateElement(formElement.getLayoutComposite(), dateTime, style, editableText);
          dateElement.initController(this, formElement);
          return dateElement;
     }
index d84a1ce58c96a86ea9d94438ba7b609866631039..d70a87b6d29a5ea18a9174e56fe8c298c2a609da 100644 (file)
@@ -9,17 +9,20 @@
 package eu.etaxonomy.taxeditor.ui.mvc.element;
 
 
+import java.awt.FontMetrics;
 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.jface.viewers.CellEditor.LayoutData;
 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.GC;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -35,6 +38,7 @@ import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
 //import org.joda.time.DateTime;
 
+import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
@@ -52,7 +56,9 @@ public class DateElement extends AbstractCdmComposite<DateElementController>  {
     private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
     private org.joda.time.DateTime initialDateTime;
     private Text textDate;
-   // private final Button openDateDialog;
+    private final Button openDateDialog;
+    
+    private static final String pattern = "yyyy-MM-dd HH:mm:ss";
    
 
     /**
@@ -60,7 +66,7 @@ public class DateElement extends AbstractCdmComposite<DateElementController>  {
      * @param parent
      * @param style
      */
-    public DateElement(Composite parent, org.joda.time.DateTime initialDateTime, int style) {
+    public DateElement(Composite parent, org.joda.time.DateTime initialDateTime, int style, boolean editableText) {
         super(parent, style);
         this.initialDateTime = initialDateTime;
         addDisposeListener(new DisposeListener() {
@@ -81,43 +87,57 @@ public class DateElement extends AbstractCdmComposite<DateElementController>  {
             tableWrapLayout.bottomMargin = 0;
             setLayout(tableWrapLayout);
         }
+     
+        Composite composite = new Composite (this, SWT.NONE);
+       GridLayout layout = new GridLayout ();
+    
+       layout.numColumns = 2;
+               
+       composite.setLayout(layout);
+       composite.setSize(400, composite.getSize().y);
+       int width = composite.getSize().x;
+       
+       // textDate = new Text(composite, SWT.BORDER|SWT.FILL);
+       textDate = toolkit.createText(composite, "yyyy-mm-dd HH:mm:ss", style);
+        textDate.setEditable(editableText);
+       
+        GridData gridData = new GridData();
+        gridData.minimumWidth = 200;
+     
+        
+        textDate.setLayoutData(gridData);
+        openDateDialog = new Button (composite, SWT.PUSH);
+        Image image = ImageResources.getImage(ImageResources.DATE);
+   //     openDateDialog.setText ("Open Date Dialog");
+        openDateDialog.setImage(image);
+       
+        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);
 
-        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 ();
-//             }
-//        });
+                       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, time));
+                               dialog.close ();
+                               }
+                       });
+                       dialog.setDefaultButton (ok);
+                       dialog.pack ();
+                       dialog.open ();
+               }
+        });
        
         toolkit.adapt(textDate, true, true);
     }
@@ -134,48 +154,36 @@ public class DateElement extends AbstractCdmComposite<DateElementController>  {
         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;
-//                             
-//                     }
+   
+    
+       
+                 public static org.joda.time.DateTime makeJodaFromSWT(
+                                               org.eclipse.swt.widgets.DateTime widget, org.eclipse.swt.widgets.DateTime dateTime) {
+                   return new org.joda.time.DateTime(widget.getYear(),
+                                       widget.getMonth(),
+                                       widget.getDay(),
+                                       dateTime.getHours(),
+                                       dateTime.getMinutes(),
+                                       dateTime.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;
+                       this.controller.setDateTime(data);
+                       this.textDate.setText(initialDateTime.toString(pattern));
+                       
+               }
 
                
                
index b854e3ddad30ae2dce67cf8d9f7d77134965abbb..825d4f7022d4024a0cdbfa547b9e6bcb902450ed 100644 (file)
@@ -42,8 +42,9 @@ public class DateElementController extends AbstractCdmFormElement implements IEn
     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"):"");
+        this.textDate.setText(initialDateTime!=null?initialDateTime.toString("yyyy-MM-dd HH:mm:ss"):"yyyy-mm-dd HH:mm:ss");
         addControl(textDate);
+        dateTime = initialDateTime;
         textDate.addModifyListener(this);
     }
     
@@ -61,18 +62,21 @@ public class DateElementController extends AbstractCdmFormElement implements IEn
     @Override
     public void modifyText(ModifyEvent e) {
         try {
-            String text = textDate.getText();
-            DateTime parsedDateTime = DateTime.parse(text);
-            this.dateTime = parsedDateTime;
+//            String text = textDate.getText();
+//            DateTime parsedDateTime = DateTime.parse(text);
+//            this.dateTime = parsedDateTime;
             firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
         } catch (IllegalArgumentException iae) {
             System.err.println(iae.getMessage());
         }
     }
 
-    public DateTime getDateTime(){
+   public DateTime getDateTime(){
         return dateTime;
-    }
+    } 
+   public void setDateTime(DateTime date){
+       dateTime = date;
+   } 
 
     /* (non-Javadoc)
      * @see eu.etaxonomy.taxeditor.ui.element.IRelevantFormElement#setIrrelevant(boolean)
index e64d697ec18a5e98051ea607c05291c76d9a7360..22af41346b16906f3b089cbe616c546d12dc24e2 100644 (file)
@@ -74,7 +74,7 @@ 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", getEntity().getMediaCreated(), style);
+        mediaCreated = formFactory.createDateElement(element, "Media Created", getEntity().getMediaCreated(), style, false);
         addElement(mediaCreated.getController());
         text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
         
index a8f2837743910e4fcd36e913456acb8c687ee537..713093b5c39dbbf2a66ef18f8b2f1282de7e5ff6 100644 (file)
@@ -68,7 +68,7 @@ public class DnaQualityDetailElement extends AbstractCdmDetailElement<DnaSample>
         numberRatioOfAbsorbance260_230 = formFactory.createNumberTextWithLabelElement(formElement, "Ratio of absorbance 260-230", ratioOfAbsorbance260_230, style);
         numberConcentration = formFactory.createNumberTextWithLabelElement(formElement, "Concentration", concentration, style);
         comboQualityTerm = formFactory.createDefinedTermComboElement(TermType.DnaQualityType, formElement, "Quality Term", qualityTerm, style);
-        dateQualityCheck = formFactory.createDateElement(formElement, "Quality Check", dnaQuality.getQualityCheckDate(), style);
+        dateQualityCheck = formFactory.createDateElement(formElement, "Quality Check", dnaQuality.getQualityCheckDate(), style, true);
     }
 
     /*
index 7cb19069fdd473513893a8240d682a4cedfec6ef..6f24bb3123c725ee7013f495030001c20f1e9e71 100644 (file)
@@ -73,7 +73,7 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<
             comboKindOfUnit = formFactory.createDefinedTermComboElement(mediaSpecimenVocabulary, 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);
-            date = formFactory.createDateElement(formElement, "Preparation Date", entity.getMediaSpecimen().getMediaCreated(), style);
+            date = formFactory.createDateElement(formElement, "Preparation Date", entity.getMediaSpecimen().getMediaCreated(), style, true);
             textMethodLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Method", media.getDescription(Language.getDefaultLanguage()), 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);
index 35f637e54b0e5b3fabf35fa86544d2a07e9e3704..11dd1fa75c12e729fbbe988edfa36d7740f76199 100755 (executable)
@@ -186,7 +186,7 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
        }
 
        private void createWebPageControls(ReferenceDetailElement referenceDetailElement, Reference reference, int style) {
-                text_accessed = formFactory.createDateElement(referenceDetailElement, "Accessed", reference.getAccessed(), style);
+                text_accessed = formFactory.createDateElement(referenceDetailElement, "Accessed", reference.getAccessed(), style, false);
                
        }