Package org.zkoss.zcaldemo

Source Code of org.zkoss.zcaldemo.CalendarDemoComposer

package org.zkoss.zcaldemo;

import java.text.*;
import java.util.*;
import java.util.Calendar;

import org.zkoss.calendar.*;
import org.zkoss.calendar.api.CalendarEvent;
import org.zkoss.calendar.event.CalendarsEvent;
import org.zkoss.calendar.impl.*;
import org.zkoss.util.Locales;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Page;
import org.zkoss.zk.ui.WebApps;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.ForwardEvent;
import org.zkoss.zk.ui.metainfo.ComponentInfo;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import org.zkoss.zul.Timer;

public class CalendarDemoComposer extends GenericForwardComposer {
 
  private static final long serialVersionUID = 201011240904L;
  private boolean hasPE;
  private SimpleCalendarModel cm;
  private Calendars calendars;
  private Chart mychart;
  private Popup updateMsg;
  private  Label popupLabel;
  private  Label label;
  private Timer timer;
  private Span FDOW;
 
  private Window createEvent;
  private Datebox createEvent$ppbegin;
  private Datebox createEvent$ppend;
  private Listbox createEvent$ppbt;
  private Listbox createEvent$ppet;
  private Checkbox createEvent$ppallDay;
  private Checkbox createEvent$pplocked;
  private Combobox createEvent$ppcolor;
  private Textbox createEvent$ppcnt;
 
  private Window editEvent;
  private Datebox editEvent$ppbegin;
  private Datebox editEvent$ppend;
  private Listbox editEvent$ppbt;
  private Listbox editEvent$ppet;
  private Checkbox editEvent$ppallDay;
  private Checkbox editEvent$pplocked;
  private Combobox editEvent$ppcolor;
  private Textbox editEvent$ppcnt;
 
 
  @Override
  public ComponentInfo doBeforeCompose(Page page, Component parent,
      ComponentInfo compInfo) {
    initTimeDropdown(page);
    // prepare model data
    initCalendarModel(page);
    hasPE = WebApps.getFeature("pe");
    page.setAttribute("hasPE", hasPE);
    return super.doBeforeCompose(page, parent, compInfo);
  }
 
  @Override
  public void doAfterCompose(Component comp) throws Exception {
    super.doAfterCompose(comp);
    syncModel();
    updateDateLabel();
    FDOW.setVisible("month".equals(calendars.getMold()) || calendars.getDays() == 7);
  }

  private void updateDateLabel() {
    Date b = calendars.getBeginDate();
    Date e = calendars.getEndDate();
    SimpleDateFormat sdfV = new SimpleDateFormat(
        "yyyy/MMM/dd", Locales.getCurrent());
    sdfV.setTimeZone(calendars.getDefaultTimeZone());
    label.setValue(sdfV.format(b) + " - " + sdfV.format(e));
  }

  private void initTimeDropdown(Page page) {
    List dateTime = new LinkedList();
   
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
   
    for (int i = 0; i < 288; i++) {
      dateTime.add(sdf.format(calendar.getTime()));
      calendar.add(Calendar.MINUTE, 5);
    }
    page.setAttribute("dateTime", dateTime);
  }
 
  private void initCalendarModel(Page page) {
    SimpleDateFormat dataSDF = new SimpleDateFormat("yyyy/MM/dd HH:mm");
    Calendar cal = Calendar.getInstance();
    int mod = cal.get(Calendar.MONTH) + 1;
    int year = cal.get(Calendar.YEAR);
    String date2 = mod > 9 ? year + "/" + mod + "" :  year + "/" + "0" + mod;
    String date1 = --mod > 9 ?  year + "/" + mod + "" :  year + "/" + "0" + mod;
    ++mod;
    String date3 = ++mod > 9 ?  year + "/" + mod + "" :  year + "/" + "0" + mod;
    String[][] evts = {
      // Red Events 
      {date1 + "/28 00:00", date1 + "/29 00:00", "#A32929", "#D96666", "ZK Jet Released"},
      {date1 + "/04 02:00", date1 + "/05 03:00", "#A32929", "#D96666", "Experience ZK SpreadSheet Live Demo!"}
      {date2 + "/12 10:00", date2 + "/12 20:00", "#A32929", "#D96666", "SF 2009 CCA Open: Nominate ZK Now!"}
      {date2 + "/21 05:00", date2 + "/21 07:00", "#A32929", "#D96666", "New Features of ZK Spreadsheet 1.0.0 RC2"}
      {date2 + "/08 00:00", date2 + "/09 00:00", "#A32929", "#D96666", "ZK Spreadsheet 1.0.0 RC2 Released"}
      // Blue Events
      {date1 + "/29 03:00", date2 + "/02 06:00", "#3467CE", "#668CD9", "ZK 3.6.1 Released"}
      {date2 + "/02 10:00", date2 + "/02 12:30", "#3467CE", "#668CD9", "New Feature of ZK 3.6.1"}
      {date2 + "/17 14:00", date2 + "/18 16:00", "#3467CE", "#668CD9", "Case Study - Mecatena"}
      {date2 + "/26 00:00", date2 + "/27 00:00", "#3467CE", "#668CD9", "Small talk: A Preview Of ZK Spreadsheet 1.0"}
      {date3 + "/01 14:30", date3 + "/01 17:30", "#3467CE", "#668CD9", "ZK Unit Testing Project - zunit"},
      // Purple Events
      {date1 + "/29 08:00", date2 + "/03 12:00", "#7A367A", "#B373B3", "ZK Studio 0.9.3 released"},
      {date2 + "/07 08:00", date2 + "/07 12:00", "#7A367A", "#B373B3", "Tutorial : Reading from the DB with Netbeans and ZK"}
      {date2 + "/13 11:00", date2 + "/13 14:30", "#7A367A", "#B373B3", "Small talk - ZK Charts"}
      {date2 + "/16 14:00", date2 + "/18 16:00", "#7A367A", "#B373B3", "Style Guide for ZK 3.6 released !"}
      {date3 + "/02 12:00", date3 + "/02 17:00", "#7A367A", "#B373B3", "Small talk -- Simple Database Access From ZK"},
      // Khaki Events
      {date1 + "/03 00:00", date1 + "/04 00:00", "#88880E", "#BFBF4D", "ZK 3.6.0 Released !"},
      {date2 + "/04 00:00", date2 + "/07 00:00", "#88880E", "#BFBF4D", "Sun Microsystems Recruiting"},
      {date2 + "/13 05:00", date2 + "/13 07:00", "#88880E", "#BFBF4D", "How to Test ZK Application with Selenium"},
      {date2 + "/24 19:30", date2 + "/24 20:00", "#88880E", "#BFBF4D", "ZK Alfresco Talk"},
      {date3 + "/03 00:00", date3 + "/04 00:00", "#88880E", "#BFBF4D", "ZK selected as SourceForge.net Project of the Month"},
      // Green Events
      {date1 + "/28 10:00", date1 + "/28 12:30", "#0D7813", "#4CB052", "ZK Mobile 0.8.10 Released"},
      {date2 + "/03 00:00", date2 + "/03 05:30", "#0D7813", "#4CB052", "ZK Gmaps 2.0_11 released"},
      {date2 + "/05 20:30", date2 + "/06 00:00", "#0D7813", "#4CB052", "Refresh with Five New ZK Themes!"},
      {date2 + "/23 00:00", date2 + "/25 16:30", "#0D7813", "#4CB052", "ZK Roadmap 2009 Announced"},
      {date3 + "/01 08:30", date3 + "/01 19:30", "#0D7813", "#4CB052", "Build Database CRUD Application in 6 Steps"}
    };

    // fill the events' data
    cm = new SimpleCalendarModel();

    for (int i = 0; i < evts.length; i++) {
      SimpleCalendarEvent sce = new SimpleCalendarEvent();
      try {
        sce.setBeginDate(dataSDF.parse(evts[i][0]));
        sce.setEndDate(dataSDF.parse(evts[i][1]));
      } catch (ParseException e) {
        e.printStackTrace();
      }
      sce.setHeaderColor(evts[i][2]);
      sce.setContentColor(evts[i][3]);
      // ce.setTitle() if any, otherwise, the time stamp is assumed.
      sce.setContent(evts[i][4]);
      cm.add(sce);
    }
    page.setAttribute("cm", cm);
  }

  private void syncModel() {
    if (!hasPE) return;
    List list = cm.get(calendars.getBeginDate(), calendars.getEndDate(), null);
    double red = 0, blue = 0, green = 0, purple = 0, khaki = 0;
    int size = list.size();
    for (Iterator it = list.iterator(); it.hasNext();) {
      String color = ((CalendarEvent)it.next()).getContentColor();
      if ("#D96666".equals(color))
        red += 1;
      else if ("#668CD9".equals(color))
        blue += 1;
      else if ("#4CB052".equals(color))
        green += 1;
      else if ("#B373B3".equals(color))
        purple += 1;
      else
        khaki += 1;
    }
     PieModel model = new SimplePieModel();
     model.setValue("Red Events", new Double(size > 0 ? (red/size)*100 : 0));
     model.setValue("Blue Events", new Double(size > 0 ? (blue/size)*100 : 0));
     model.setValue("Green Events", new Double(size > 0 ? (green/size)*100: 0));
     model.setValue("Khaki Events", new Double(size > 0 ? (khaki/size)*100: 0));
     model.setValue("Purple Events", new Double(size > 0 ? (purple/size)*100 : 0));
     mychart.setModel(model);
  }
 
  public void onEventCreate$calendars(ForwardEvent event) {
    CalendarsEvent evt = (CalendarsEvent) event.getOrigin();
    int left = evt.getX();
    int top = evt.getY();
    int timeslots = calendars.getTimeslots();
    int timeslotTime = 60 / timeslots;
    if (top + 245 > evt.getDesktopHeight())
      top = evt.getDesktopHeight() - 245;
    if (left + 410 > evt.getDesktopWidth())
      left = evt.getDesktopWidth() - 410;
    createEvent.setLeft(left + "px");
    createEvent.setTop(top + "px");
    SimpleDateFormat create_sdf = new SimpleDateFormat("HH:mm");
    create_sdf.setTimeZone(calendars.getDefaultTimeZone());
    String[] times = create_sdf.format(evt.getBeginDate()).split(":");
    int hours = Integer.parseInt(times[0]) * timeslots;
    int mins = Integer.parseInt(times[1]);
    int bdTimeSum = hours + mins;
    hours += mins / timeslotTime;
   
    createEvent$ppbt.setSelectedIndex(hours * 12 / timeslots);
    times = create_sdf.format(evt.getEndDate()).split(":");
    hours = Integer.parseInt(times[0]) * timeslots;
    mins = Integer.parseInt(times[1]);
    int edTimeSum = hours + mins;
    hours += mins / timeslotTime;
    ((Listbox)createEvent.getFellow("ppet")).setSelectedIndex(hours * 12 / timeslots);
    boolean isAllday = (bdTimeSum + edTimeSum) == 0;
   
    createEvent$ppbegin.setTimeZone(calendars.getDefaultTimeZone());
    createEvent$ppbegin.setValue(evt.getBeginDate());
    createEvent$ppend.setTimeZone(calendars.getDefaultTimeZone());
    createEvent$ppend.setValue(evt.getEndDate());
    createEvent$ppallDay.setChecked(isAllday);
    createEvent$pplocked.setChecked(false);
    createEvent$ppbt.setVisible(!isAllday);
    createEvent$ppet.setVisible(!isAllday);

    createEvent.setVisible(true);
    createEvent.setAttribute("calevent", evt);
    evt.stopClearGhost();
  }
 
  public void onClose$createEvent(ForwardEvent event) {
    event.getOrigin().stopPropagation();
    ((CalendarsEvent)createEvent.getAttribute("calevent")).clearGhost();
    createEvent.setVisible(false);
  }
 
  public void onClick$okBtn$createEvent(ForwardEvent event) {
    SimpleCalendarEvent ce = new SimpleCalendarEvent();
    Calendar cal = Calendar.getInstance(calendars.getDefaultTimeZone());
    Date beginDate = createEvent$ppbegin.getValue();
    Date endDate = createEvent$ppend.getValue();
   
    int bmin = 0;
    int emin = 0;
    if (!createEvent$ppallDay.isChecked()) {
      String[] times = createEvent$ppbt.getSelectedItem().getLabel().split(":");
     
      cal.setTime(beginDate);
      cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(times[0]));
      cal.set(Calendar.MINUTE, Integer.parseInt(times[1]));
      cal.set(Calendar.SECOND, 0);
      cal.set(Calendar.MILLISECOND, 0);
      beginDate = cal.getTime();
      bmin = cal.get(Calendar.MINUTE);
      times = createEvent$ppet.getSelectedItem().getLabel().split(":");
      cal.setTime(endDate);
      cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(times[0]));
      cal.set(Calendar.MINUTE, Integer.parseInt(times[1]));
      cal.set(Calendar.SECOND, 0);
      cal.set(Calendar.MILLISECOND, 0);
      endDate = cal.getTime();
      emin = cal.get(Calendar.MINUTE);
    }
   

    if (!beginDate.before(endDate)) {
      createEvent.setVisible(false);
      alert("The end date cannot be earlier than or equal to begin date!");
      ((CalendarsEvent)createEvent.getAttribute("calevent")).clearGhost();
      return;
    }
    if (bmin == 5 || bmin == 25 || bmin == 35 || bmin == 55) {
      createEvent.setVisible(false);
      alert("The begin minute:" + bmin + ", is not supported");
      ((CalendarsEvent)createEvent.getAttribute("calevent")).clearGhost();
      return;
    }
    if (emin == 5 || emin == 25 || emin == 35 || emin == 55) {
      createEvent.setVisible(false);
      alert("The end minute:" + emin + ", doesn't support");
      ((CalendarsEvent)createEvent.getAttribute("calevent")).clearGhost();
      return;
    }
   
    String[] colors = ((String)createEvent$ppcolor.getSelectedItem().getValue()).split(",");
    ce.setHeaderColor(colors[0]);
    ce.setContentColor(colors[1]);
    ce.setBeginDate(beginDate);
    ce.setEndDate(endDate);
    ce.setContent(createEvent$ppcnt.getValue());
    ce.setLocked(createEvent$pplocked.isChecked());
    cm.add(ce);
   
    createEvent$ppcnt.setRawValue("");
    createEvent$ppbt.setSelectedIndex(0);
    createEvent$ppet.setSelectedIndex(0);
    createEvent.setVisible(false);
    syncModel();
  }
 
  public void onClick$cancelBtn$createEvent(ForwardEvent event) {
    createEvent$ppcnt.setRawValue("");
    createEvent$ppbt.setSelectedIndex(0);
    createEvent$ppet.setSelectedIndex(0);
    createEvent.setVisible(false);
    ((CalendarsEvent)createEvent.getAttribute("calevent")).clearGhost();
  }
 
  public void onEventEdit$calendars(ForwardEvent event) {
    CalendarsEvent evt = (CalendarsEvent) event.getOrigin();
   
    int left = evt.getX();
    int top = evt.getY();
    if (top + 245 > evt.getDesktopHeight())
      top = evt.getDesktopHeight() - 245;
    if (left + 410 > evt.getDesktopWidth())
      left = evt.getDesktopWidth() - 410;
   
    TimeZone tz = calendars.getDefaultTimeZone();
   
    editEvent.setLeft(left + "px");
    editEvent.setTop(top + "px");
    CalendarEvent ce = evt.getCalendarEvent();
    SimpleDateFormat edit_sdf = new SimpleDateFormat("HH:mm");
    edit_sdf.setTimeZone(tz);
    Calendar calendar = Calendar.getInstance(org.zkoss.util.Locales
        .getCurrent());
    String[] times = edit_sdf.format(ce.getBeginDate()).split(":");
    int hours = Integer.parseInt(times[0]);
    int mins = Integer.parseInt(times[1]);
    int bdTimeSum = hours + mins;
    editEvent$ppbt.setSelectedIndex(hours*12 + mins/5);
    times = edit_sdf.format(ce.getEndDate()).split(":");
    hours = Integer.parseInt(times[0]);
    mins = Integer.parseInt(times[1]);
    int edTimeSum = hours + mins;
    editEvent$ppet.setSelectedIndex(hours*12 + mins/5);
    boolean isAllday = (bdTimeSum + edTimeSum) == 0;
    editEvent$ppbegin.setTimeZone(tz);
    editEvent$ppbegin.setValue(ce.getBeginDate());
    editEvent$ppend.setTimeZone(tz);
    editEvent$ppend.setValue(ce.getEndDate());
    editEvent$ppallDay.setChecked(isAllday);
    editEvent$pplocked.setChecked(ce.isLocked());
    editEvent$ppbt.setVisible(!isAllday);
    editEvent$ppet.setVisible(!isAllday);
    editEvent$ppcnt.setValue(ce.getContent());
    String colors = ce.getHeaderColor() + "," + ce.getContentColor();
    int index = 0;
    if ("#3467CE,#668CD9".equals(colors))
      index = 1;
    else if ("#0D7813,#4CB052".equals(colors))
      index = 2;
    else if ("#88880E,#BFBF4D".equals(colors))
      index = 3;
    else if ("#7A367A,#B373B3".equals(colors))
      index = 4;
 
    switch (index) {
    case 0:
      editEvent$ppcolor.setStyle("color:#D96666;font-weight: bold;");
      break;
    case 1:
      editEvent$ppcolor.setStyle("color:#668CD9;font-weight: bold;");
      break;
    case 2:
      editEvent$ppcolor.setStyle("color:#4CB052;font-weight: bold;");
      break;
    case 3:
      editEvent$ppcolor.setStyle("color:#BFBF4D;font-weight: bold;");
      break;
    case 4:
      editEvent$ppcolor.setStyle("color:#B373B3;font-weight: bold;");
      break;
    }
    editEvent$ppcolor.setSelectedIndex(index);
    editEvent.setVisible(true);
 
    // store for the edit marco component.
    editEvent.setAttribute("ce", ce);
  }
 
  public void onClose$editEvent(ForwardEvent event) {
    event.getOrigin().stopPropagation();
    editEvent.setVisible(false);
  }
 
  public void onClick$okBtn$editEvent(ForwardEvent event) {
    SimpleCalendarEvent ce = (SimpleCalendarEvent) editEvent.getAttribute("ce");
    Calendar cal = Calendar.getInstance(calendars.getDefaultTimeZone());
    Date beginDate = editEvent$ppbegin.getValue();
    Date endDate = editEvent$ppend.getValue();
   
    int bmin = 0;
    int emin = 0;
    if (!editEvent$ppallDay.isChecked()) {
      String[] times = editEvent$ppbt.getSelectedItem().getLabel().split(":");
      cal.setTime(beginDate);
      cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(times[0]));
      cal.set(Calendar.MINUTE, Integer.parseInt(times[1]));
      cal.set(Calendar.SECOND, 0);
      cal.set(Calendar.MILLISECOND, 0);
      beginDate = cal.getTime();
      times = editEvent$ppet.getSelectedItem().getLabel().split(":");
      cal.setTime(endDate);
      cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(times[0]));
      cal.set(Calendar.MINUTE, Integer.parseInt(times[1]));
      cal.set(Calendar.SECOND, 0);
      cal.set(Calendar.MILLISECOND, 0);
      endDate = cal.getTime();
    } else {
      cal.setTime(beginDate);
      cal.set(Calendar.HOUR_OF_DAY, 0);
      cal.set(Calendar.MINUTE, 0);
      cal.set(Calendar.SECOND, 0);
      cal.set(Calendar.MILLISECOND, 0);
      beginDate = cal.getTime();
      bmin = cal.get(Calendar.MINUTE);
      cal.setTime(endDate);
      cal.set(Calendar.HOUR_OF_DAY, 0);
      cal.set(Calendar.MINUTE, 0);
      cal.set(Calendar.SECOND, 0);
      cal.set(Calendar.MILLISECOND, 0);
      endDate = cal.getTime();
      emin = cal.get(Calendar.MINUTE);
    }     
    if (!beginDate.before(endDate)) {
      editEvent.setVisible(false);
      alert("The end date cannot be earlier than or equal to begin date!");
      ((org.zkoss.calendar.event.CalendarsEvent)editEvent.getAttribute("calevent")).clearGhost();
      return;
    }
    if (bmin == 5 || bmin == 25 || bmin == 35 || bmin ==55) {
      editEvent.setVisible(false);
      alert("The begin minute:" + bmin + ", is not supported");
      ((org.zkoss.calendar.event.CalendarsEvent)editEvent.getAttribute("calevent")).clearGhost();
      return;
    }
    if (emin == 5 || emin == 25 || emin == 35 || emin ==55) {
      editEvent.setVisible(false);
      alert("The end minute:" + emin + ", doesn't support");
      ((org.zkoss.calendar.event.CalendarsEvent)editEvent.getAttribute("calevent")).clearGhost();
      return;
    }
    String[] colors = ((String)editEvent$ppcolor.getSelectedItem().getValue()).split(",");
    ce.setHeaderColor(colors[0]);
    ce.setContentColor(colors[1]);
    ce.setBeginDate(beginDate);
    ce.setEndDate(endDate);
    ce.setContent(editEvent$ppcnt.getValue());
    ce.setLocked(editEvent$pplocked.isChecked());
    cm.update(ce);
    editEvent.setVisible(false);
    syncModel();
  }

  public void onClick$deleteBtn$editEvent(ForwardEvent event) {
    try {
      Messagebox.show("Are you sure to delete the event!", "Question",
          Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION,
          new EventListener() {
            public void onEvent(Event evt) throws Exception {
              if (((Integer) evt.getData()).intValue() != Messagebox.OK)
                return;
              cm.remove((SimpleCalendarEvent) editEvent.getAttribute("ce"));
              syncModel();
            }
          });
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    editEvent.setVisible(false);
  }
 
  public void onEventUpdate$calendars(ForwardEvent event) {
    CalendarsEvent evt = (CalendarsEvent) event.getOrigin();
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/d");
    sdf1.setTimeZone(calendars.getDefaultTimeZone());
    StringBuffer sb = new StringBuffer("Update... from ");
    sb.append(sdf1.format(evt.getCalendarEvent().getBeginDate()));
    sb.append(" to ");
    sb.append(sdf1.format(evt.getBeginDate()));
    popupLabel.setValue(sb.toString());
    int left = evt.getX();
    int top = evt.getY();
    if (top + 100 > evt.getDesktopHeight())
      top = evt.getDesktopHeight() - 100;
    if (left + 330 > evt.getDesktopWidth())
      left = evt.getDesktopWidth() - 330;
    updateMsg.open(left, top);
    timer.start();
    org.zkoss.calendar.Calendars cal = (org.zkoss.calendar.Calendars) evt
        .getTarget();
    SimpleCalendarModel m = (SimpleCalendarModel) cal.getModel();
    SimpleCalendarEvent sce = (SimpleCalendarEvent) evt.getCalendarEvent();
    sce.setBeginDate(evt.getBeginDate());
    sce.setEndDate(evt.getEndDate());
    m.update(sce);
  }
 
  public void onMoveDate(ForwardEvent event) {
    if ("arrow-left".equals(event.getData()))
      calendars.previousPage();
    else calendars.nextPage();
    updateDateLabel();
    syncModel();
  }
 
  public void onToday(ForwardEvent event) {
    calendars.setCurrentDate(Calendar.getInstance(calendars.getDefaultTimeZone()).getTime());
    updateDateLabel();
    syncModel();
  }
 
  public void onSwitchTimeZone(ForwardEvent event) {
    Map zone = calendars.getTimeZones();
    if (!zone.isEmpty()) {
      Map.Entry me = (Map.Entry) zone.entrySet().iterator().next();
      calendars.removeTimeZone((TimeZone) me.getKey());
      calendars.addTimeZone((String) me.getValue(), (TimeZone) me.getKey());
    }
    syncModel();
  }
 
  public void onUpdateFirstDayOfWeek(ForwardEvent event) {
    Listbox listbox = (Listbox) event.getOrigin().getTarget();
    calendars.setFirstDayOfWeek(listbox.getSelectedItem().getLabel());
    syncModel();
  }
 
  public void onUpdateView(ForwardEvent event) {
    String text = String.valueOf(event.getData());
    int days = "Day".equals(text) ? 1: "5 Days".equals(text) ? 5: "Week".equals(text) ? 7: 0;
   
    if (days > 0) {
      calendars.setMold("default");
      calendars.setDays(days);
    } else calendars.setMold("month");
    updateDateLabel();
    FDOW.setVisible("month".equals(calendars.getMold()) || calendars.getDays() == 7);
  }
 
}
TOP

Related Classes of org.zkoss.zcaldemo.CalendarDemoComposer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.