SmartGwt – Personalizar el editor de Eventos de un Calendario

marzo 21, 2013

SmartGwt tiene el widget Calendar para mostrar, crear y editar eventos. Por default, tiene un editor con controles para modificar las propiedades básicas de un evento: startDate, endDate, name y description.
Si quieres agregar más propiedades a tus Eventos, puedes utilizar el método setEventEditorFields)
Pero que pasa cuando quieres modificar por completo, o mejor dicho, sustituir el Editor por defecto. Desde la versión 2.5 de SmartGwt lo puedes hacer de manera fácil utilizando el evento BackgroundClick) de la siguiente manera

Para crear un evento cuando el usuario selecciona un rango de tiempo mediante un click o arrastrando el mouse

    final Calendar calendar = new Calendar();
    calendar.setShowQuickEventDialog(false);
    calendar.setShowAddEventButton(false);
    calendar.addBackgroundClickHandler(new BackgroundClickHandler() {
        @Override
    public void onBackgroundClick(BackgroundClickEvent event) {
        event.cancel();
        clearCalendarSelection(calendar);
        CalendarEvent evnt = new CalendarEvent();
        evnt.setStartDate(event.getStartDate());
        evnt.setEndDate(event.getEndDate());
        editEvent(evnt); // show custom Event Editor
    }
    };);

Para crear un evento cuando se da clic en una fecha en la vista de “Mes”

    calendar.addDayBodyClickHandler(new DayBodyClickHandler() {
        @Override
        public void onDayBodyClick(DayBodyClickEvent event) {
            event.cancel();
            CalendarEvent evnt = new CalendarEvent();
            evnt.setStartDate(event.getDate());
            evnt.setEndDate(event.getDate());
            editEvent(evnt);
        }
    });

Para modificar un Evento existente

    calendar.addEventClickHandler(new EventClickHandler() {
        @Override
        public void onEventClick(CalendarEventClick event) {
            event.cancel();
            clearCalendarSelection(calendar);
            editEvent(event.getEvent());
        }
    });

Notesé que es necesario llamar el método clearCalendarSelection para evitar que al dar clic en un Evento después de seleccionar un rango se dispare también el evento BackgroundClick, además del evento EventClick

private native final void clearCalendarSelection(Calendar calendar)/*-{
    obj = calendar.@com.smartgwt.client.widgets.BaseWidget::getJsObj()();
    obj.clearTimeSelection();
}-*/;

Fuentes:
http://forums.smartclient.com/showthread.php?p=102142#post102142
https://code.google.com/p/smartgwt/issues/detail?id=267
http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/widgets/calendar/events/BackgroundClickHandler.html
http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/widgets/calendar/Calendar.html
http://forums.smartclient.com/showthread.php?p=102139#post102139

3 comentarios to “SmartGwt – Personalizar el editor de Eventos de un Calendario”

  1. Paulo Says:

    De esta forma es posible guardar la información en un BD? verdad?

  2. Paulo Says:

    Muchas gracias, lo intentare.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: