Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

Calendar doesn't update when using custom event editor

$
0
0
sgwt: 5.0p
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();
        }
}


Attached Images
File Type: png screen-shot-1.png (38.4 KB)
File Type: png screen-shot-2.png (41.0 KB)
File Type: png screen-shot-3.png (39.1 KB)

Viewing all articles
Browse latest Browse all 4756

Trending Articles