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(); } }
Comment