import com.itmill.toolkit.terminal.PaintTarget;\r
import com.itmill.toolkit.ui.DateField;\r
\r
-// TODO use Calendar\r
-// TODO lazyLoading\r
+// TODO send one month at a time, do lazyLoading\r
// TODO check date limit when updating variables\r
// TODO Allow item selection\r
public class CalendarField extends DateField implements Container.Viewer {\r
\r
+ private static final String TAGNAME = "calendarfield";\r
+ \r
private Date minDate;\r
private Date maxDate;\r
\r
* use the default documentation from implemented interface.\r
*/\r
public String getTag() {\r
- return "calendarfield";\r
+ return TAGNAME;\r
}\r
\r
public void init() {\r
}\r
\r
private boolean checkDataSource(Container dataSource) {\r
- /*\r
- * if (!(dataSource instanceof Container.Sortable)) { // we really want\r
- * the data source to be sortable return false; }\r
- */\r
+\r
// Check old propertyIds\r
if (this.itemEndPropertyId != null) {\r
Class c = dataSource.getType(this.itemEndPropertyId);\r
\r
import com.google.gwt.core.client.GWT;\r
import com.google.gwt.user.client.ui.Widget;\r
-import com.itmill.toolkit.demo.reservation.gwt.client.ui.ICalendar;\r
+import com.itmill.toolkit.demo.reservation.gwt.client.ui.ICalendarField;\r
import com.itmill.toolkit.demo.reservation.gwt.client.ui.IGoogleMap;\r
import com.itmill.toolkit.terminal.gwt.client.DefaultWidgetSet;\r
import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
if ("com.itmill.toolkit.terminal.gwt.client.ui.IGoogleMap"\r
.equals(className)) {\r
return new IGoogleMap();\r
- } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ICalendar"\r
+ } else if ("com.itmill.toolkit.terminal.gwt.client.ui.ICalendarField"\r
.equals(className)) {\r
- return new ICalendar();\r
+ return new ICalendarField();\r
}\r
\r
return super.createWidget(uidl);\r
if ("googlemap".equals(tag)) {\r
return "com.itmill.toolkit.terminal.gwt.client.ui.IGoogleMap";\r
} else if ("calendarfield".equals(tag)) {\r
- return "com.itmill.toolkit.terminal.gwt.client.ui.ICalendar";\r
+ return "com.itmill.toolkit.terminal.gwt.client.ui.ICalendarField";\r
}\r
\r
return super.resolveWidgetTypeName(uidl);\r
+++ /dev/null
-package com.itmill.toolkit.demo.reservation.gwt.client.ui;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Date;\r
-import java.util.HashMap;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-\r
-import com.google.gwt.user.client.DOM;\r
-import com.google.gwt.user.client.Element;\r
-import com.google.gwt.user.client.ui.FlexTable;\r
-import com.google.gwt.user.client.ui.SimplePanel;\r
-import com.google.gwt.user.client.ui.SourcesTableEvents;\r
-import com.google.gwt.user.client.ui.TableListener;\r
-import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;\r
-import com.itmill.toolkit.terminal.gwt.client.DateTimeService;\r
-import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
-import com.itmill.toolkit.terminal.gwt.client.ui.CalendarEntry;\r
-import com.itmill.toolkit.terminal.gwt.client.ui.CalendarPanel;\r
-import com.itmill.toolkit.terminal.gwt.client.ui.IDateField;\r
-import com.itmill.toolkit.terminal.gwt.client.ui.CalendarPanel.CalendarEntrySource;\r
-\r
-public class ICalendar extends IDateField {\r
-\r
- private CalendarPanel calPanel;\r
-\r
- private SimplePanel hourPanel;\r
-\r
- private FlexTable hourTable;\r
-\r
- private EntrySource entrySource;\r
-\r
- private TableListener ftListener = new HourTableListener();\r
-\r
- private int realResolution = RESOLUTION_DAY;\r
-\r
- private static final String CLASSNAME = IDateField.CLASSNAME\r
- + "-entrycalendar";\r
-\r
- public ICalendar() {\r
- super();\r
- setStyleName(CLASSNAME);\r
- calPanel = new CalendarPanel(this);\r
- add(calPanel);\r
- this.entrySource = new EntrySource();\r
- calPanel.setCalendarEntrySource(this.entrySource);\r
- calPanel.addTableListener(new TableListener() {\r
- public void onCellClicked(SourcesTableEvents sender, int row,\r
- int cell) {\r
- buildDayView(date);\r
- }\r
- });\r
- }\r
-\r
- public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
- super.updateFromUIDL(uidl, client);\r
- // We want to draw our own hour list\r
- this.realResolution = currentResolution;\r
- this.currentResolution = RESOLUTION_DAY;\r
- if (uidl.hasAttribute("min")) {\r
- String mins = uidl.getStringAttribute("min");\r
- long min = (mins != null ? Long.parseLong(mins) : 0);\r
- String maxs = uidl.getStringAttribute("max");\r
- long max = (maxs != null ? Long.parseLong(maxs) : 0);\r
- Date minDate = (min > 0 ? new Date(min) : null);\r
- Date maxDate = (max > 0 ? new Date(max) : null);\r
- calPanel.setLimits(minDate, maxDate);\r
- }\r
- this.entrySource.clear();\r
- for (Iterator cit = uidl.getChildIterator(); cit.hasNext();) {\r
- UIDL child = (UIDL) cit.next();\r
- if (child.getTag().equals("items")) {\r
- for (Iterator iit = child.getChildIterator(); iit.hasNext();) {\r
- UIDL item = (UIDL) iit.next();\r
- this.entrySource.addItem(item);\r
- }\r
- break;\r
- }\r
- }\r
- calPanel.updateCalendar();\r
- buildDayView(this.date);\r
- }\r
-\r
- protected void buildDayView(Date date) {\r
- boolean firstRender = true;\r
- if (this.hourPanel == null) {\r
- this.hourPanel = new SimplePanel();\r
- this.hourPanel.setStyleName(CLASSNAME + "-hours");\r
- this.calPanel.getFlexCellFormatter().setColSpan(8, 0, 7);\r
- this.calPanel.setWidget(8, 0, this.hourPanel);\r
- } else {\r
- firstRender = false;\r
- this.hourPanel.clear();\r
- }\r
- this.hourTable = new FlexTable();\r
- this.hourTable.addTableListener(this.ftListener);\r
- this.hourPanel.add(this.hourTable);\r
- this.hourTable.setCellSpacing(1);\r
-\r
- for (int i = 0; i < 24; i++) {\r
- String style = (i % 2 == 0 ? "even" : "odd");\r
- if (realResolution >= RESOLUTION_HOUR) {\r
- if (this.date != null && this.date.getHours() == i) {\r
- style = "selected";\r
- }\r
- }\r
- hourTable.getRowFormatter().setStyleName(i,\r
- CLASSNAME + "-row-" + style);\r
- String hstr = (i < 10 ? "0" : "") + i + ":00";\r
- if (this.dts.isTwelveHourClock()) {\r
- String ampm = (i < 12 ? "am" : "pm");\r
- hstr = (i <= 12 ? i : i - 12) + ":00 " + ampm;\r
- }\r
- hourTable.setHTML(i, 0, "<span>" + hstr + "</span>");\r
- hourTable.getCellFormatter()\r
- .setStyleName(i, 0, CLASSNAME + "-time");\r
- }\r
-\r
- List entries = this.entrySource.getEntries(date,\r
- DateTimeService.RESOLUTION_DAY);\r
- int currentCol = 1;\r
- for (Iterator it = entries.iterator(); it.hasNext();) {\r
- CalendarEntry entry = (CalendarEntry) it.next();\r
- int start = 0;\r
- int hours = 24;\r
- if (!entry.isNotime()) {\r
- Date d = entry.getStart();\r
- // TODO consider month&year as well\r
- start = (d.getDate() < date.getDate() ? 0 : d.getHours());\r
- d = entry.getEnd();\r
- hours = (d.getDate() > date.getDate() ? 24 : d.getHours())\r
- - start;\r
- if (hours == 0) {\r
- // We can't draw entries smaller than one\r
- hours = 1;\r
- }\r
- }\r
- int col = currentCol;\r
- if (col > 1) {\r
- while (!this.hourTable.isCellPresent(start, col - 1))\r
- col--;\r
- }\r
- this.hourTable.setHTML(start, col, "<span>"\r
- + (entry.getTitle() != null ? entry.getTitle() : " ")\r
- + "</span>");\r
- this.hourTable.getFlexCellFormatter().setRowSpan(start, col, hours);\r
- this.hourTable.getFlexCellFormatter().setStyleName(start, col,\r
- CLASSNAME + "-entry");\r
- String sn = entry.getStyleName();\r
- if (sn != null && !sn.equals("")) {\r
- this.hourTable.getFlexCellFormatter().addStyleName(start, col,\r
- CLASSNAME + "-" + entry.getStyleName());\r
- }\r
- Element el = this.hourTable.getFlexCellFormatter().getElement(\r
- start, col);\r
-\r
- String tooltip;\r
- if (DateTimeService.isSameDay(entry.getStart(), entry.getEnd())) {\r
- tooltip = (start < 10 ? "0" : "") + start + ":00";\r
- if (this.dts.isTwelveHourClock()) {\r
- String ampm = (start < 12 ? "am" : "pm");\r
- tooltip = (start <= 12 ? start : start - 12) + ":00 "\r
- + ampm;\r
-\r
- }\r
- tooltip += " (" + hours + "h) ";\r
- if (entry.getTitle()!=null) {\r
- tooltip += entry.getTitle() + "\n ";\r
- }\r
- } else {\r
- tooltip = entry.getStringForDate(entry.getEnd()) + "\n ";\r
- }\r
- if (entry.getDescription()!=null) {\r
- tooltip += "\"" + entry.getDescription() + "\"";\r
- }\r
- DOM.setElementProperty(el, "title", tooltip);\r
-\r
- currentCol++;\r
- }\r
-\r
- // int hour = new Date().getHours()+1; // scroll to current hour\r
- int hour = this.date.getHours() + 1; // scroll to selected hour\r
- int h1 = (int) this.hourPanel.getOffsetHeight() / 2;\r
- int oh = this.hourTable.getOffsetHeight();\r
- int h2 = (int) (hour / 24.0 * oh);\r
- int scrollTop = (int) h2 - h1;\r
- Element el = this.hourPanel.getElement();\r
- setScrollTop(el, scrollTop);\r
-\r
- }\r
-\r
- private native void setScrollTop(Element el, int scrollTop) /*-{\r
- el.scrollTop = scrollTop;\r
- }-*/;\r
-\r
- private class HourTableListener implements TableListener {\r
-\r
- public void onCellClicked(SourcesTableEvents sender, int row, int cell) {\r
- if (realResolution < RESOLUTION_HOUR || date == null) {\r
- return;\r
- }\r
- date.setHours(row);\r
- client.updateVariable(id, "hour", row, immediate);\r
- }\r
-\r
- }\r
-\r
- private class EntrySource implements CalendarPanel.CalendarEntrySource {\r
-\r
- private HashMap dates = new HashMap();\r
-\r
- public void addItem(UIDL item) {\r
- String styleName = item.getStringAttribute("styleName");\r
- Integer id = new Integer(item.getIntAttribute("id"));\r
- long start = Long.parseLong(item.getStringAttribute("start"));\r
- Date startDate = new Date(start);\r
- long end = -1;\r
- try {\r
- end = Long.parseLong(item.getStringAttribute("end"));\r
- } catch (Exception IGNORED) {\r
- // IGNORED attribute not required\r
- }\r
- Date endDate = (end > 0 && end != start ? new Date(end) : new Date(\r
- start));\r
- String title = item.getStringAttribute("title");\r
- String desc = item.getStringAttribute("description");\r
- boolean notime = item.getBooleanAttribute("notime");\r
- CalendarEntry entry = new CalendarEntry(styleName, startDate,\r
- endDate, title, desc, notime);\r
-\r
- // TODO should remove+readd if the same entry (id) is added again\r
-\r
- for (Date d = entry.getStart(); d.getYear() <= entry.getEnd()\r
- .getYear()\r
- && d.getMonth() <= entry.getEnd().getYear()\r
- && d.getDate() <= entry.getEnd().getDate(); d.setTime(d\r
- .getTime() + 86400000)) {\r
- String key = d.getYear() + "" + d.getMonth() + "" + d.getDate();\r
- ArrayList l = (ArrayList) dates.get(key);\r
- if (l == null) {\r
- l = new ArrayList();\r
- dates.put(key, l);\r
- }\r
- l.add(entry);\r
- }\r
- }\r
-\r
- public List getEntries(Date date, int resolution) {\r
- List entries = (List) dates.get(date.getYear() + ""\r
- + date.getMonth() + "" + date.getDate());\r
- ArrayList res = new ArrayList();\r
- if (entries == null) {\r
- return res;\r
- }\r
- for (Iterator it = entries.iterator(); it.hasNext();) {\r
- CalendarEntry item = (CalendarEntry) it.next();\r
- if (DateTimeService.isInRange(date, item.getStart(), item\r
- .getEnd(), resolution)) {\r
- res.add(item);\r
- }\r
- }\r
-\r
- return res;\r
- }\r
-\r
- public void clear() {\r
- dates.clear();\r
- }\r
-\r
- }\r
-\r
-}\r
--- /dev/null
+package com.itmill.toolkit.demo.reservation.gwt.client.ui;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Date;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+import com.google.gwt.user.client.DOM;\r
+import com.google.gwt.user.client.Element;\r
+import com.google.gwt.user.client.ui.FlexTable;\r
+import com.google.gwt.user.client.ui.SimplePanel;\r
+import com.google.gwt.user.client.ui.SourcesTableEvents;\r
+import com.google.gwt.user.client.ui.TableListener;\r
+import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;\r
+import com.itmill.toolkit.terminal.gwt.client.DateTimeService;\r
+import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
+import com.itmill.toolkit.terminal.gwt.client.ui.CalendarEntry;\r
+import com.itmill.toolkit.terminal.gwt.client.ui.CalendarPanel;\r
+import com.itmill.toolkit.terminal.gwt.client.ui.IDateField;\r
+import com.itmill.toolkit.terminal.gwt.client.ui.CalendarPanel.CalendarEntrySource;\r
+\r
+public class ICalendarField extends IDateField {\r
+\r
+ private CalendarPanel calPanel;\r
+\r
+ private SimplePanel hourPanel;\r
+\r
+ private FlexTable hourTable;\r
+\r
+ private EntrySource entrySource;\r
+\r
+ private TableListener ftListener = new HourTableListener();\r
+\r
+ private int realResolution = RESOLUTION_DAY;\r
+\r
+ private static final String CLASSNAME = IDateField.CLASSNAME\r
+ + "-entrycalendar";\r
+\r
+ public ICalendarField() {\r
+ super();\r
+ setStyleName(CLASSNAME);\r
+ calPanel = new CalendarPanel(this);\r
+ add(calPanel);\r
+ this.entrySource = new EntrySource();\r
+ calPanel.setCalendarEntrySource(this.entrySource);\r
+ calPanel.addTableListener(new TableListener() {\r
+ public void onCellClicked(SourcesTableEvents sender, int row,\r
+ int cell) {\r
+ buildDayView(date);\r
+ }\r
+ });\r
+ }\r
+\r
+ public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
+ super.updateFromUIDL(uidl, client);\r
+ // We want to draw our own hour list\r
+ this.realResolution = currentResolution;\r
+ this.currentResolution = RESOLUTION_DAY;\r
+ if (uidl.hasAttribute("min")) {\r
+ String mins = uidl.getStringAttribute("min");\r
+ long min = (mins != null ? Long.parseLong(mins) : 0);\r
+ String maxs = uidl.getStringAttribute("max");\r
+ long max = (maxs != null ? Long.parseLong(maxs) : 0);\r
+ Date minDate = (min > 0 ? new Date(min) : null);\r
+ Date maxDate = (max > 0 ? new Date(max) : null);\r
+ calPanel.setLimits(minDate, maxDate);\r
+ }\r
+ this.entrySource.clear();\r
+ for (Iterator cit = uidl.getChildIterator(); cit.hasNext();) {\r
+ UIDL child = (UIDL) cit.next();\r
+ if (child.getTag().equals("items")) {\r
+ for (Iterator iit = child.getChildIterator(); iit.hasNext();) {\r
+ UIDL item = (UIDL) iit.next();\r
+ this.entrySource.addItem(item);\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ calPanel.updateCalendar();\r
+ buildDayView(this.date);\r
+ }\r
+\r
+ protected void buildDayView(Date date) {\r
+ boolean firstRender = true;\r
+ if (this.hourPanel == null) {\r
+ this.hourPanel = new SimplePanel();\r
+ this.hourPanel.setStyleName(CLASSNAME + "-hours");\r
+ this.calPanel.getFlexCellFormatter().setColSpan(8, 0, 7);\r
+ this.calPanel.setWidget(8, 0, this.hourPanel);\r
+ } else {\r
+ firstRender = false;\r
+ this.hourPanel.clear();\r
+ }\r
+ this.hourTable = new FlexTable();\r
+ this.hourTable.addTableListener(this.ftListener);\r
+ this.hourPanel.add(this.hourTable);\r
+ this.hourTable.setCellSpacing(1);\r
+\r
+ for (int i = 0; i < 24; i++) {\r
+ String style = (i % 2 == 0 ? "even" : "odd");\r
+ if (realResolution >= RESOLUTION_HOUR) {\r
+ if (this.date != null && this.date.getHours() == i) {\r
+ style = "selected";\r
+ }\r
+ }\r
+ hourTable.getRowFormatter().setStyleName(i,\r
+ CLASSNAME + "-row-" + style);\r
+ String hstr = (i < 10 ? "0" : "") + i + ":00";\r
+ if (this.dts.isTwelveHourClock()) {\r
+ String ampm = (i < 12 ? "am" : "pm");\r
+ hstr = (i <= 12 ? i : i - 12) + ":00 " + ampm;\r
+ }\r
+ hourTable.setHTML(i, 0, "<span>" + hstr + "</span>");\r
+ hourTable.getCellFormatter()\r
+ .setStyleName(i, 0, CLASSNAME + "-time");\r
+ }\r
+\r
+ List entries = this.entrySource.getEntries(date,\r
+ DateTimeService.RESOLUTION_DAY);\r
+ int currentCol = 1;\r
+ for (Iterator it = entries.iterator(); it.hasNext();) {\r
+ CalendarEntry entry = (CalendarEntry) it.next();\r
+ int start = 0;\r
+ int hours = 24;\r
+ if (!entry.isNotime()) {\r
+ Date d = entry.getStart();\r
+ // TODO consider month&year as well\r
+ start = (d.getDate() < date.getDate() ? 0 : d.getHours());\r
+ d = entry.getEnd();\r
+ hours = (d.getDate() > date.getDate() ? 24 : d.getHours())\r
+ - start;\r
+ if (hours == 0) {\r
+ // We can't draw entries smaller than one\r
+ hours = 1;\r
+ }\r
+ }\r
+ int col = currentCol;\r
+ if (col > 1) {\r
+ while (!this.hourTable.isCellPresent(start, col - 1))\r
+ col--;\r
+ }\r
+ this.hourTable.setHTML(start, col, "<span>"\r
+ + (entry.getTitle() != null ? entry.getTitle() : " ")\r
+ + "</span>");\r
+ this.hourTable.getFlexCellFormatter().setRowSpan(start, col, hours);\r
+ this.hourTable.getFlexCellFormatter().setStyleName(start, col,\r
+ CLASSNAME + "-entry");\r
+ String sn = entry.getStyleName();\r
+ if (sn != null && !sn.equals("")) {\r
+ this.hourTable.getFlexCellFormatter().addStyleName(start, col,\r
+ CLASSNAME + "-" + entry.getStyleName());\r
+ }\r
+ Element el = this.hourTable.getFlexCellFormatter().getElement(\r
+ start, col);\r
+\r
+ String tooltip;\r
+ if (DateTimeService.isSameDay(entry.getStart(), entry.getEnd())) {\r
+ tooltip = (start < 10 ? "0" : "") + start + ":00";\r
+ if (this.dts.isTwelveHourClock()) {\r
+ String ampm = (start < 12 ? "am" : "pm");\r
+ tooltip = (start <= 12 ? start : start - 12) + ":00 "\r
+ + ampm;\r
+\r
+ }\r
+ tooltip += " (" + hours + "h) ";\r
+ if (entry.getTitle()!=null) {\r
+ tooltip += entry.getTitle() + "\n ";\r
+ }\r
+ } else {\r
+ tooltip = entry.getStringForDate(entry.getEnd()) + "\n ";\r
+ }\r
+ if (entry.getDescription()!=null) {\r
+ tooltip += "\"" + entry.getDescription() + "\"";\r
+ }\r
+ DOM.setElementProperty(el, "title", tooltip);\r
+\r
+ currentCol++;\r
+ }\r
+\r
+ // int hour = new Date().getHours()+1; // scroll to current hour\r
+ int hour = this.date.getHours() + 1; // scroll to selected hour\r
+ int h1 = (int) this.hourPanel.getOffsetHeight() / 2;\r
+ int oh = this.hourTable.getOffsetHeight();\r
+ int h2 = (int) (hour / 24.0 * oh);\r
+ int scrollTop = (int) h2 - h1;\r
+ Element el = this.hourPanel.getElement();\r
+ setScrollTop(el, scrollTop);\r
+\r
+ }\r
+\r
+ private native void setScrollTop(Element el, int scrollTop) /*-{\r
+ el.scrollTop = scrollTop;\r
+ }-*/;\r
+\r
+ private class HourTableListener implements TableListener {\r
+\r
+ public void onCellClicked(SourcesTableEvents sender, int row, int cell) {\r
+ if (realResolution < RESOLUTION_HOUR || date == null) {\r
+ return;\r
+ }\r
+ date.setHours(row);\r
+ client.updateVariable(id, "hour", row, immediate);\r
+ }\r
+\r
+ }\r
+\r
+ private class EntrySource implements CalendarPanel.CalendarEntrySource {\r
+\r
+ private HashMap dates = new HashMap();\r
+\r
+ public void addItem(UIDL item) {\r
+ String styleName = item.getStringAttribute("styleName");\r
+ Integer id = new Integer(item.getIntAttribute("id"));\r
+ long start = Long.parseLong(item.getStringAttribute("start"));\r
+ Date startDate = new Date(start);\r
+ long end = -1;\r
+ try {\r
+ end = Long.parseLong(item.getStringAttribute("end"));\r
+ } catch (Exception IGNORED) {\r
+ // IGNORED attribute not required\r
+ }\r
+ Date endDate = (end > 0 && end != start ? new Date(end) : new Date(\r
+ start));\r
+ String title = item.getStringAttribute("title");\r
+ String desc = item.getStringAttribute("description");\r
+ boolean notime = item.getBooleanAttribute("notime");\r
+ CalendarEntry entry = new CalendarEntry(styleName, startDate,\r
+ endDate, title, desc, notime);\r
+\r
+ // TODO should remove+readd if the same entry (id) is added again\r
+\r
+ for (Date d = entry.getStart(); d.getYear() <= entry.getEnd()\r
+ .getYear()\r
+ && d.getMonth() <= entry.getEnd().getYear()\r
+ && d.getDate() <= entry.getEnd().getDate(); d.setTime(d\r
+ .getTime() + 86400000)) {\r
+ String key = d.getYear() + "" + d.getMonth() + "" + d.getDate();\r
+ ArrayList l = (ArrayList) dates.get(key);\r
+ if (l == null) {\r
+ l = new ArrayList();\r
+ dates.put(key, l);\r
+ }\r
+ l.add(entry);\r
+ }\r
+ }\r
+\r
+ public List getEntries(Date date, int resolution) {\r
+ List entries = (List) dates.get(date.getYear() + ""\r
+ + date.getMonth() + "" + date.getDate());\r
+ ArrayList res = new ArrayList();\r
+ if (entries == null) {\r
+ return res;\r
+ }\r
+ for (Iterator it = entries.iterator(); it.hasNext();) {\r
+ CalendarEntry item = (CalendarEntry) it.next();\r
+ if (DateTimeService.isInRange(date, item.getStart(), item\r
+ .getEnd(), resolution)) {\r
+ res.add(item);\r
+ }\r
+ }\r
+\r
+ return res;\r
+ }\r
+\r
+ public void clear() {\r
+ dates.clear();\r
+ }\r
+\r
+ }\r
+\r
+}\r