From 6430b43e4a5e3def3a2778bf51f5114606cda156 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Tue, 13 Jun 2017 11:33:54 +0200 Subject: [PATCH] fix #6658: add mediaCreated date field --- .../taxeditor/ui/mvc/element/DateElement.java | 117 +++++++++++++++++- .../ui/mvc/element/DateElementController.java | 14 ++- .../ui/section/media/MediaMetaElement.java | 18 +-- 3 files changed, 133 insertions(+), 16 deletions(-) diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java index 708d4b5dd..d84a1ce58 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java @@ -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 { +public class DateElement extends AbstractCdmComposite { 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 { 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 { */ @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); +// } +// /** +// *

+// * Setter for the field entity. +// *

+// * +// * @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; +// +// } + + + + + + } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java index 13644ea9a..b854e3dda 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java @@ -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()); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java index fec44b378..ae1801dbd 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java @@ -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 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 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 imp } text_title.setLanguageString(title); - // dateElement.setData(element.getMediaCreated()); + mediaCreated.setData(element.getMediaCreated()); } @@ -147,9 +149,9 @@ public class MediaMetaElement extends AbstractEntityCollectionElement 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); } } -- 2.34.1