The "DateTimeItem" item in Smart GWT allows you to specify the date and the time together as a single field and ultimately it can be mapped to java.util.Date field in your model (or a field in your controller class).
DateTimeItem startDateTime = new DateTimeItem("startDateTime","Start Datetime");
After picking a date from the calendar, the 'DateTimeItem' shows the value in the following format by default.
MM/dd/yyyy HH:mm
It sets the time part to 00:00. I wanted to have time part to set the browser's time.
After searching on the internet and doing some experiments, I ended up with the following solution.
I am creating a custom class by extending "DateTimeItem" class of smart GWT and overrides the 'transformInput' method.
package mypackage; import java.util.Date; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.TimeZone; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.FormItemInputTransformer; import com.smartgwt.client.widgets.form.fields.DateTimeItem; import com.smartgwt.client.widgets.form.fields.FormItem; public class MyDateTimeItem extends DateTimeItem { public MyDateTimeItem(String name, String title) { super(name, title); this.setUseTextField(true); this.setWidth(125); this.setInputTransformer(new FormItemInputTransformer() { @Override public Object transformInput(DynamicForm form, FormItem item, Object value, Object oldValue) { DateTimeFormat dtFormet = DateTimeFormat.getFormat("MM/dd/yyyy HH:mm"); String strCurrentDateTime = dtFormet.format(new Date()); String strSelectedDateTime = dtFormet.format((Date)value, TimeZone.createTimeZone(0)); if (oldValue != null) { // Changing date. if (strSelectedDateTime.split(" ")[1].equals("00:00")) { //Selecting new date time from the picker while keeping old value in the input field. return strSelectedDateTime.split(" ")[0] + " " + strCurrentDateTime.split(" ")[1]; } return strSelectedDateTime; } return strSelectedDateTime.split(" ")[0] + " " + strCurrentDateTime.split(" ")[1]; } }); } }
MyDateTimeItem startDateTime = new MyDateTimeItem("startDateTime","Start Datetime");
nice one
ReplyDelete