sgwt: 5.0p
ff: 26
ff: 26
Code:
public class Main7 implements EntryPoint {
public static class DateUtil {
private static final DateTimeFormat dtf = DateTimeFormat.getFormat(PredefinedFormat.ISO_8601);
public static Date combine(Date date, Date time) {
if(date != null && time != null){
Date date0 = new Date(date.getTime());
date0.setHours(time.getHours());
date0.setMinutes(time.getMinutes());
date0.setSeconds(time.getSeconds());
return date0;
}
return date;
}
}
public static class ClientOnlyDataSource extends com.smartgwt.client.data.DataSource {
public ClientOnlyDataSource(Record[] records, DataSourceField... fields){
setFields(fields);
setTestData(records);
setClientOnly(true);
}
}
public static class EditEventDialog extends Dialog{
private static int tid = 100;
public EditEventDialog(final Calendar calendar, final CalendarEvent event, final boolean isNew){
setTitle("Edit Event");
setHeight(175);
setIsModal(true);
setCanDragResize(true);
setCanDragReposition(true);
addItem(new VLayout(4){{
final DynamicForm form = new DynamicForm(){{
setDataSource(new ClientOnlyDataSource(new Record[]{event}, new DataSourceIntegerField("id"){{
setPrimaryKey(true);
}}));
setFields(new TimeItem("startDate", "Start Time"),
new TimeItem("endDate", "End Time"),
new TextItem("name", "Label"),
new SpinnerItem("quantity", "Quantity"));
editRecord(event);
}};
addMember(form);
addMember(new HLayout(4){{
setAlign(Alignment.RIGHT);
addMember(new Button("Save"){{
addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event0) {
final Object quantity = form.getValue("quantity");
form.setValue("description", "Quantity: " + quantity);
Record record = form.getValuesAsRecord();
Date startDate = record.getAttributeAsDate("startDate");
Date endDate = record.getAttributeAsDate("endDate");
startDate = DateUtil.combine(event.getStartDate(), startDate);
endDate = DateUtil.combine(event.getEndDate(), endDate);
String name = record.getAttribute("name");
String description = record.getAttribute("description");
if(isNew){
calendar.addEvent(startDate, endDate, name, description, new HashMap(){{
put("id", ++ tid);
put("quantity", quantity);
}});
}else{
event.setStartDate(startDate);
event.setEndDate(endDate);
event.setName(name);
event.setDescription(description);
event.setAttribute("quantity", quantity);
}
calendar.markForRedraw();
close();
}
});
}});
addMember(new Button("Cancel"){{
addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
close();
}
});
}});
}});
}});
}
}
@Override
public void onModuleLoad() {
new Calendar(){{
final Calendar _this = this;
Record[] records = new Record[10];
for(int i = 0; i < 10; i++) {
final int j = i;
records[i] = new Record(){{
setAttribute("id", j);
setAttribute("startDate", getDate(j, 10));
setAttribute("endDate", getDate(j, 11));
setAttribute("name", "Test - " + j);
}
private Date getDate(int j, int hour) {
Date date = new Date();
date.setDate(date.getDate() + j);
date.setHours(hour);
date.setMinutes(0);
date.setSeconds(0);
return date;
}};
}
setAutoFetchData(true);
setDataSource(new ClientOnlyDataSource(records, new DataSourceIntegerField("id"){{
setPrimaryKey(true);
}}));
setEventDialogCustomizer(new EventDialogCustomizer() {
@Override
public boolean showEventDialog(CalendarEvent event, Boolean isNew) {
new EditEventDialog(_this, event, isNew).show();
return false;
}
});
}}.show();
}
}