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