|
From: <mat...@us...> - 2008-01-11 09:14:45
|
Revision: 647
http://webical.svn.sourceforge.net/webical/?rev=647&view=rev
Author: mattijshoitink
Date: 2008-01-11 01:14:43 -0800 (Fri, 11 Jan 2008)
Log Message:
-----------
- Updated resource files for dutch and english
- Added confirmation screen when removing an event or calendar
- Updated the Event Details page
Modified Paths:
--------------
trunk/webical-core/src/main/java/org/webical/dao/hibernateImpl/EventDaoWebDavHibernateBufferedImpl.java
trunk/webical-core/src/main/java/org/webical/ical/Recurrence.java
trunk/webical-core/src/main/java/org/webical/ical/RecurrenceUtil.java
trunk/webical-core/src/main/java/org/webical/web/action/EditEventAction.java
trunk/webical-core/src/main/java/org/webical/web/action/EventSelectedAction.java
trunk/webical-core/src/main/java/org/webical/web/action/ShowCalendarAction.java
trunk/webical-core/src/main/java/org/webical/web/action/StoreEventAction.java
trunk/webical-core/src/main/java/org/webical/web/component/HeaderPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/calendar/CalendarPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/calendar/DatePickerPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/calendar/DayViewPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/calendar/EventsListView.java
trunk/webical-core/src/main/java/org/webical/web/component/calendar/MonthDayPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/calendar/WeekDayPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/calendar/model/WrappingEventsModel.java
trunk/webical-core/src/main/java/org/webical/web/component/event/EventForm.java
trunk/webical-core/src/main/java/org/webical/web/component/event/EventWrapper.java
trunk/webical-core/src/main/java/org/webical/web/component/settings/UserSettingsForm.java
trunk/webical-core/src/main/java/org/webical/web/component/settings/UserSettingsPanel.java
trunk/webical-core/src/main/java/org/webical/web/pages/BasePage.java
trunk/webical-core/src/main/resources/org/webical/web/component/HeaderPanel.html
trunk/webical-core/src/main/resources/org/webical/web/component/HeaderPanel.properties
trunk/webical-core/src/main/resources/org/webical/web/component/HeaderPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/component/calendar/CalendarAddEditPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/component/calendar/CalendarListPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/component/calendar/CalendarPanel.html
trunk/webical-core/src/main/resources/org/webical/web/component/calendar/CalendarPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/component/settings/CalendarSettingsPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/component/settings/SettingsCalendarListPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/component/settings/UserSettingsPanel.html
trunk/webical-core/src/main/resources/org/webical/web/component/settings/UserSettingsPanel.properties
trunk/webical-core/src/main/resources/org/webical/web/component/settings/UserSettingsPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/pages/ErrorPage.html
trunk/webical-core/src/main/resources/org/webical/web/pages/ErrorPage.properties
trunk/webical-core/src/main/resources/org/webical/web/pages/ErrorPage_nl.properties
trunk/webical-core/src/test/java/org/webical/web/component/EventAddEditPanelTest.java
trunk/webical-core/src/test/java/org/webical/web/component/EventDetailsViewPanelTest.java
Added Paths:
-----------
trunk/webical-core/src/main/java/org/webical/web/action/ReloadApplicationAction.java
trunk/webical-core/src/main/java/org/webical/web/action/RemoveEventAction.java
trunk/webical-core/src/main/java/org/webical/web/component/ConfirmActionPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/event/ConfirmRecurringActionPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/event/EventDetailsPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/event/EventFormPanel.java
trunk/webical-core/src/main/resources/org/webical/web/component/ConfirmActionPanel.html
trunk/webical-core/src/main/resources/org/webical/web/component/ConfirmActionPanel.properties
trunk/webical-core/src/main/resources/org/webical/web/component/ConfirmActionPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/component/event/ConfirmRecurringActionPanel.html
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventDetailsPanel.html
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventDetailsPanel.properties
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventDetailsPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventFormPanel.html
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventFormPanel.properties
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventFormPanel_nl.properties
Removed Paths:
-------------
trunk/webical-core/src/main/java/org/webical/web/action/UpdateRecurringEventDecissionAction.java
trunk/webical-core/src/main/java/org/webical/web/component/event/EventAddEditPanel.java
trunk/webical-core/src/main/java/org/webical/web/component/event/EventDetailsViewPanel.java
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventAddEditPanel.html
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventAddEditPanel.properties
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventAddEditPanel_nl.properties
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventDetailsViewPanel.html
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventDetailsViewPanel.properties
trunk/webical-core/src/main/resources/org/webical/web/component/event/EventDetailsViewPanel_nl.properties
Modified: trunk/webical-core/src/main/java/org/webical/dao/hibernateImpl/EventDaoWebDavHibernateBufferedImpl.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/dao/hibernateImpl/EventDaoWebDavHibernateBufferedImpl.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/dao/hibernateImpl/EventDaoWebDavHibernateBufferedImpl.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -41,8 +41,8 @@
import org.webical.dao.UpdateConflictException;
import org.webical.dao.annotation.Transaction;
import org.webical.dao.util.WebDavCalendarSynchronisation;
+import org.webical.ical.RecurrenceUtil;
import org.webical.settings.ApplicationSettingsFactory;
-import org.webical.util.RecurrenceUtils;
/**
*
@@ -420,7 +420,7 @@
try {
//Check if the events are applicable for the given date range
for (Event event : recurringEvents) {
- if(RecurrenceUtils.isApplicableForDateRange(event, dtStart, dtEnd)){
+ if(RecurrenceUtil.isApplicableForDateRange(event, dtStart, dtEnd)){
applicableEvents.add(event);
}
}
@@ -429,7 +429,7 @@
//already is the list to show
for( Event event : dbEvents ){
- if(RecurrenceUtils.isApplicableForDateRange(event, dtStart, dtEnd) && !applicableEvents.contains(event)){
+ if(RecurrenceUtil.isApplicableForDateRange(event, dtStart, dtEnd) && !applicableEvents.contains(event)){
applicableEvents.add(event);
}
}
Modified: trunk/webical-core/src/main/java/org/webical/ical/Recurrence.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/ical/Recurrence.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/ical/Recurrence.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -23,7 +23,7 @@
import java.util.Date;
/**
- * Wrapper for recurrence information used in the fronend
+ * Wrapper for recurrence information used in the frontend
* @author ivo
*
*/
@@ -33,9 +33,9 @@
public static final int MONTHLY = 3;
public static final int YEARLY = 4;
- private int frequency;
- private int count = -1;
- private int interval;
+ private Integer frequency;
+ private Integer count;
+ private Integer interval;
private Date endDay;
public Recurrence() {
@@ -66,10 +66,10 @@
this.endDay = endDay;
}
- public int getCount() {
+ public Integer getCount() {
return count;
}
- public void setCount(int count) {
+ public void setCount(Integer count) {
this.count = count;
}
public Date getEndDay() {
@@ -78,16 +78,16 @@
public void setEndDay(Date endDay) {
this.endDay = endDay;
}
- public int getFrequency() {
+ public Integer getFrequency() {
return frequency;
}
- public void setFrequency(int frequency) {
+ public void setFrequency(Integer frequency) {
this.frequency = frequency;
}
- public int getInterval() {
+ public Integer getInterval() {
return interval;
}
- public void setInterval(int interval) {
+ public void setInterval(Integer interval) {
this.interval = interval;
}
}
Modified: trunk/webical-core/src/main/java/org/webical/ical/RecurrenceUtil.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/ical/RecurrenceUtil.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/ical/RecurrenceUtil.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -22,25 +22,35 @@
import java.text.ParseException;
import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
import net.fortuna.ical4j.model.Date;
+import net.fortuna.ical4j.model.DateList;
+import net.fortuna.ical4j.model.DateTime;
import net.fortuna.ical4j.model.Recur;
+import net.fortuna.ical4j.model.parameter.Value;
import net.fortuna.ical4j.model.property.ExRule;
import net.fortuna.ical4j.model.property.RRule;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.webical.Event;
import org.webical.manager.WebicalException;
/**
* Collection of utility methods used on Recurrence
- * @author ivo
+ * @author Ivo van Dongen
+ * @author Mattijs Hoitink
*
*/
public class RecurrenceUtil {
-
+ private static Log log = LogFactory.getLog(RecurrenceUtil.class);
+
/**
* Sets the recurrence information on the event's RRule
* @param event the event to update
@@ -61,7 +71,7 @@
//Add the new recurrence
Recur recur = null;
- if(recurrence.getCount() != -1 && recurrence.getCount() > 0) {
+ if(recurrence.getCount() != null && recurrence.getCount() > 0) {
recur = new Recur(getFrequentcyString(recurrence.getFrequency()), recurrence.getCount());
} else if(recurrence.getEndDay() != null){
recur = new Recur(getFrequentcyString(recurrence.getFrequency()), new Date(recurrence.getEndDay()));
@@ -107,10 +117,16 @@
*/
public static void clearRecurrence(Event event) {
//Clear all recurrence attributes
- event.getrDate().clear();
+ /*event.getrDate().clear();
event.getrRule().clear();
event.getExDate().clear();
- event.getExRule().clear();
+ event.getExRule().clear();*/
+
+ // Reset all recurrence attributes
+ event.setrDate(null);
+ event.setrRule(null);
+ event.setExDate(null);
+ event.setExRule(null);
}
/**
@@ -172,6 +188,213 @@
}
return -1;
}
+
+ /**
+ * Converts the frequency to a field identifier used by {@see java.util.Calendar}.
+ * @param frequency The frequency identifier
+ * @return the @see java.util.Calendar} field identifier
+ */
+ private static int getCalendarIdentifierForFrequency(int frequency) {
+ switch (frequency) {
+ case Recurrence.DAILY : return Calendar.DAY_OF_YEAR;
+ case Recurrence.WEEKLY : return Calendar.WEEK_OF_YEAR;
+ case Recurrence.MONTHLY : return Calendar.MONTH;
+ case Recurrence.YEARLY : return Calendar.YEAR;
+ default: return -1;
+ }
+ }
+ /**
+ * Determines if the event is recurrent
+ * @param event the {@link Event} to check
+ * @return true if the {@link Event} is recurrent
+ */
+ public static boolean isRecurrent(Event event) {
+ if(!event.getrRule().isEmpty() || !event.getrDate().isEmpty()){
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Checks if the {@link Event} is applicable for the given range taking into account recurrence information
+ * @param event the {@link Event}
+ * @param startDate the start of the range
+ * @param endDate the end of the range
+ * @return true if the {@link Event} is applicable for this range
+ * @throws ParseException
+ */
+ public static boolean isApplicableForDateRange(Event event, java.util.Date startDate, java.util.Date endDate) throws ParseException {
+ if(event.getDtStart() != null) {
+ if(isRecurrent(event)) {
+
+ //Property: RRULE
+ Recur recur = null;
+ try {
+ if(event.getrRule() != null){
+ recur = new Recur(event.getrRule().iterator().next());
+ }
+ } catch (ParseException e) {
+ log.error("Could not parse recurrence information", e );
+ throw e;
+ }
+
+ ExRule exRule = new ExRule();
+ exRule.setRecur(recur);
+
+ DateTime fromDate = new DateTime(event.getDtStart());
+ DateTime dtStart = new DateTime(startDate.getTime()-1000);
+ DateTime dtEnd = new DateTime(endDate.getTime()-1000);
+
+ DateList datesFromRecur = recur.getDates(fromDate, dtStart, dtEnd, Value.DATE_TIME);
+ Set<java.util.Date> dates = event.getrDate();
+
+ //Property RDate
+ for(java.util.Date date : dates){
+ datesFromRecur.add(date);
+ }
+
+ if(datesFromRecur.size() > 0){
+
+ //Property: EXDATE
+ for(Iterator i = event.getExDate().iterator(); i.hasNext(); ){
+ if(startDate.equals(new Date(((java.util.Date)i.next()).getTime()))){
+ return false;
+ }
+ }
+
+ //PROPERTY: EXRULE
+ if(event.getExRule().iterator().hasNext()){
+
+ Recur exRecur;
+ try {
+ exRecur = new Recur(event.getExRule().iterator().next());
+ } catch (ParseException e) {
+ log.error("Could not parse recurrence information", e );
+ throw e;
+ }
+
+ DateList datesFromExRule = exRecur.getDates(fromDate, dtStart, dtEnd,Value.DATE_TIME);
+
+ if(datesFromExRule.size() > 0){
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ } else if((event.getDtStart().before(startDate) && event.getDtEnd().before(startDate)) || (event.getDtStart().after(endDate) && event.getDtEnd().after(endDate))){
+ //Event is not in daterange
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks if the {@link Event} is applicable on the given day taking into account recurrence information
+ * @param event the {@link Event}
+ * @param date the {@link Date}
+ * @return true if the {@link Event} is applicable for this range
+ * @throws ParseException
+ */
+ public static boolean isApplicableOnDate(Event event, java.util.Date date) throws ParseException {
+ return isApplicableForDateRange(event, date, date);
+ }
+
+ /**
+ * Excludes the first Event from the second Event's recurrence rule
+ * @param eventToExclude The Event to exclude
+ * @param eventWithRange The event which recurrence rule should be updated
+ * @param clearRecurrenceFromExcludedEvent True if the recurrence from the exlcuded event should be cleared
+ */
+ public static void excludeEventFromRecurrenceRule(Event eventToExclude, Event eventWithRange, boolean clearRecurrenceFromExcludedEvent) {
+ // Exclude the new event from its old range
+ eventWithRange.getExDate().add(eventToExclude.getDtStart());
+
+ if(clearRecurrenceFromExcludedEvent) {
+ clearRecurrence(eventToExclude);
+ }
+ }
+
+ /**
+ * Excludes the given Date from the Events recurrence rule.
+ * @param dateToExclude The date to exclude
+ * @param eventWithRange The Event with recurrence to exclude the Date from
+ */
+ public static void excludeDateFromRecurrenceRule(java.util.Date dateToExclude, Event eventWithRange) {
+ eventWithRange.getExDate().add(dateToExclude);
+ }
+
+ public static java.util.Date getNextOccurrenceDate(Event event, java.util.Date occurrenceDate) throws WebicalException, ParseException {
+ if(event == null || !isRecurrent(event)) {
+ throw new WebicalException("This event is not recurrent: " + event);
+ }
+
+ Recurrence recurrence = getRecurrenceFromRecurrenceRuleSet(event.getrRule());
+ if(recurrence != null) {
+
+ // Check for use of count to determine the end date
+ if(recurrence.getCount() > 0 && recurrence.getInterval() > 0) {
+ GregorianCalendar endDateCalendar = new GregorianCalendar();
+
+ endDateCalendar.setTime(event.getDtStart());
+ int amountToAdd = (recurrence.getCount() * recurrence.getInterval());
+ endDateCalendar.add(getCalendarIdentifierForFrequency(recurrence.getFrequency()), amountToAdd);
+
+ if(isApplicableOnDate(event, endDateCalendar.getTime())) {
+ return endDateCalendar.getTime();
+ }
+ return null;
+ }
+
+ }
+ return null;
+ }
+
+ public static java.util.Date getPreviousOccurrenceDate(Event event, java.util.Date occurrenceDate) throws WebicalException {
+ if(event == null || !isRecurrent(event)) {
+ throw new WebicalException("This event is not recurrent: " + event);
+ } else if(occurrenceDate == null) {
+ throw new WebicalException("The occurence date can not be null");
+ }
+
+ return null;
+ }
+
+ public static java.util.Date getLastOccurrenceDate(Event event) throws WebicalException {
+ if(event == null || !isRecurrent(event)) {
+ throw new WebicalException("This event is not recurrent: " + event);
+ }
+
+ Recurrence recurrence = getRecurrenceFromRecurrenceRuleSet(event.getrRule());
+ if(recurrence != null) {
+
+ // Check if the recurrence end date is set. Use this as last date value
+ if(recurrence.getEndDay() != null) {
+ return recurrence.getEndDay();
+ }
+
+ // Check for use of count to determine the end date
+ if(recurrence.getCount() >= 1 && recurrence.getInterval() >= 1) {
+ GregorianCalendar endDateCalendar = new GregorianCalendar();
+
+ endDateCalendar.setTime(event.getDtStart());
+ int amountToAdd = (recurrence.getCount() * recurrence.getInterval());
+ endDateCalendar.add(getCalendarIdentifierForFrequency(recurrence.getFrequency()), amountToAdd);
+
+ return endDateCalendar.getTime();
+ }
+
+ }
+
+ return null;
+ }
+
}
Modified: trunk/webical-core/src/main/java/org/webical/web/action/EditEventAction.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/action/EditEventAction.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/action/EditEventAction.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -20,6 +20,9 @@
package org.webical.web.action;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.webical.Event;
@@ -32,21 +35,27 @@
private static final long serialVersionUID = 1L;
private Event selectedEvent;
+ private GregorianCalendar selectedEventDate;
- public EditEventAction(Event selectedEvent) {
+ public EditEventAction(Event selectedEvent, Calendar selectedEventDate) {
this.selectedEvent = selectedEvent;
+ this.selectedEventDate = (GregorianCalendar) selectedEventDate;
}
public Event getSelectedEvent() {
return selectedEvent;
}
+ public Calendar getSelectedEventDate() {
+ return selectedEventDate;
+ }
+
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
- return "EditEventAction: selectedEvent = " + selectedEvent;
+ return "EditEventAction: selectedEvent = " + selectedEvent + ", selectedEventDate = " + selectedEventDate.getTime();
}
public AjaxRequestTarget getAjaxRequestTarget() {
Modified: trunk/webical-core/src/main/java/org/webical/web/action/EventSelectedAction.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/action/EventSelectedAction.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/action/EventSelectedAction.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -35,30 +35,30 @@
private static final long serialVersionUID = 1L;
/**
- * The date of the selected Event.
- */
- private GregorianCalendar eventDate;
-
- /**
* The selected Event.
*/
private Event selectedEvent;
/**
+ * The date of the selected Event.
+ */
+ private GregorianCalendar eventDate;
+
+ /**
* Constructor.
* @param selectedEvent The Event selected
- * @param eventDate The date for the selected Event
+ * @param selectedEventDate The date the selected event is on
*/
- public EventSelectedAction(Event selectedEvent, Calendar eventDate) {
+ public EventSelectedAction(Event selectedEvent, Calendar selectedEventDate) {
this.selectedEvent = selectedEvent;
- this.eventDate = (GregorianCalendar) eventDate;
+ this.eventDate = (GregorianCalendar) selectedEventDate;
}
/**
- * Gets the date for the selected Event.
- * @return The date for the selected Event
+ * Gets the date the selected Event is on.
+ * @return The date the selected Event is on
*/
- public Calendar getEventDate() {
+ public Calendar getSelectedEventDate() {
return eventDate;
}
Added: trunk/webical-core/src/main/java/org/webical/web/action/ReloadApplicationAction.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/action/ReloadApplicationAction.java (rev 0)
+++ trunk/webical-core/src/main/java/org/webical/web/action/ReloadApplicationAction.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -0,0 +1,32 @@
+/*
+ * Webical - http://www.webical.org
+ * Copyright (C) 2007 Func. Internet Integration
+ *
+ * This file is part of Webical.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.webical.web.action;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+
+public class ReloadApplicationAction implements IAction {
+ private static final long serialVersionUID = 1L;
+
+ public AjaxRequestTarget getAjaxRequestTarget() {
+ return null;
+ }
+
+}
Property changes on: trunk/webical-core/src/main/java/org/webical/web/action/ReloadApplicationAction.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/webical-core/src/main/java/org/webical/web/action/RemoveEventAction.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/action/RemoveEventAction.java (rev 0)
+++ trunk/webical-core/src/main/java/org/webical/web/action/RemoveEventAction.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -0,0 +1,47 @@
+/*
+ * Webical - http://www.webical.org
+ * Copyright (C) 2007 Func. Internet Integration
+ *
+ * This file is part of Webical.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.webical.web.action;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.webical.Event;
+
+public class RemoveEventAction implements IAction {
+ private static final long serialVersionUID = 1L;
+
+ private Event eventToRemove;
+
+ public RemoveEventAction(Event eventToRemove) {
+ this.eventToRemove = eventToRemove;
+ }
+
+ public AjaxRequestTarget getAjaxRequestTarget() {
+ return null;
+ }
+
+ public Event getEventToRemove() {
+ return eventToRemove;
+ }
+
+ public void setEventToRemove(Event eventToRemove) {
+ this.eventToRemove = eventToRemove;
+ }
+
+}
Property changes on: trunk/webical-core/src/main/java/org/webical/web/action/RemoveEventAction.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/webical-core/src/main/java/org/webical/web/action/ShowCalendarAction.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/action/ShowCalendarAction.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/action/ShowCalendarAction.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -26,10 +26,14 @@
private static final long serialVersionUID = 1L;
private AjaxRequestTarget target;
+
+ /**
+ * Should the calendar be reloaded to update the events shown. Default is true.
+ */
private boolean reloadCalendarView;
public ShowCalendarAction() {
- this(false, null);
+ this(true, null);
}
public ShowCalendarAction(boolean reloadCalendar) {
@@ -37,7 +41,7 @@
}
public ShowCalendarAction(AjaxRequestTarget target) {
- this(false, target);
+ this(true, target);
}
public ShowCalendarAction(boolean reloadCalenarView, AjaxRequestTarget target) {
Modified: trunk/webical-core/src/main/java/org/webical/web/action/StoreEventAction.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/action/StoreEventAction.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/action/StoreEventAction.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -1,39 +1,66 @@
package org.webical.web.action;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.webical.Event;
+/**
+ * Action to store one or multiple events
+ *
+ * @author mattijs
+ *
+ */
public class StoreEventAction implements IAction {
private static final long serialVersionUID = 1L;
- private Event event;
+ private List<Event> events = new ArrayList<Event>();
private AjaxRequestTarget target;
+ private boolean justStore;
- public StoreEventAction() {
- setAjaxRequestTarget(null);
- }
-
- public StoreEventAction(AjaxRequestTarget target) {
- setAjaxRequestTarget(target);
- }
-
public StoreEventAction(Event eventToStore) {
setEvent(eventToStore);
setAjaxRequestTarget(null);
}
+
+ public StoreEventAction(List<Event> eventsToStore) {
+ setEvents(eventsToStore);
+ setAjaxRequestTarget(null);
+ }
public StoreEventAction(Event eventToStore, AjaxRequestTarget target) {
- setEvent(eventToStore);
+ this(eventToStore);
setAjaxRequestTarget(target);
}
+
+ public StoreEventAction(List<Event> eventsToStore, AjaxRequestTarget target) {
+ setEvents(eventsToStore);
+ setAjaxRequestTarget(target);
+ }
+ public boolean storeMultiple() {
+ return (this.events != null) && (this.events.size() > 1);
+ }
+
public Event getEvent() {
- return event;
+ return events.get(0);
}
+
+ public List<Event> getEvents() {
+ return events;
+ }
public void setEvent(Event event) {
- this.event = event;
+ if(this.events.contains(event)) {
+ this.events.remove(event);
+ }
+ this.events.add(event);
}
+
+ public void setEvents(List<Event> events) {
+ this.events = events;
+ }
public AjaxRequestTarget getAjaxRequestTarget() {
return target;
@@ -42,4 +69,12 @@
public void setAjaxRequestTarget(AjaxRequestTarget target) {
this.target = target;
}
+
+ public boolean isJustStore() {
+ return justStore;
+ }
+
+ public void setJustStore(boolean justStore) {
+ this.justStore = justStore;
+ }
}
Deleted: trunk/webical-core/src/main/java/org/webical/web/action/UpdateRecurringEventDecissionAction.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/action/UpdateRecurringEventDecissionAction.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/action/UpdateRecurringEventDecissionAction.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -1,18 +0,0 @@
-package org.webical.web.action;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-
-public class UpdateRecurringEventDecissionAction implements IAction {
- private static final long serialVersionUID = 1L;
-
- private AjaxRequestTarget target;
-
- public AjaxRequestTarget getAjaxRequestTarget() {
- return target;
- }
-
- public void setAjaxRequestTarget(AjaxRequestTarget target) {
- this.target = target;
- }
-
-}
Added: trunk/webical-core/src/main/java/org/webical/web/component/ConfirmActionPanel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/ConfirmActionPanel.java (rev 0)
+++ trunk/webical-core/src/main/java/org/webical/web/component/ConfirmActionPanel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -0,0 +1,85 @@
+/*
+ * Webical - http://www.webical.org
+ * Copyright (C) 2007 Func. Internet Integration
+ *
+ * This file is part of Webical.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.webical.web.component;
+
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.StringResourceModel;
+
+public abstract class ConfirmActionPanel extends AbstractBasePanel {
+ private static final long serialVersionUID = 1L;
+
+ private final String MESSAGE_LABEL_MARKUP_ID = "messageLabel";
+ private final String CONFIRM_LINK_MARKUP_ID = "confirmLink";
+ private final String CANCEL_LINK_MARKUP_ID = "cancelLink";
+
+ private IModel message;
+ private Label messageLabel;
+ private Link confirmLink, cancelLink;
+
+ public ConfirmActionPanel(String markupId, String message) {
+ super(markupId, ConfirmActionPanel.class);
+ this.message = new Model(message);
+ }
+
+ public ConfirmActionPanel(String markupId, StringResourceModel model) {
+ this(markupId, model.getString());
+ }
+
+ public void setupCommonComponents() {
+ messageLabel = new Label(MESSAGE_LABEL_MARKUP_ID, message);
+ addOrReplace(messageLabel);
+ }
+
+ public void setupAccessibleComponents() {
+ confirmLink = new Link(CONFIRM_LINK_MARKUP_ID) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick() {
+ ConfirmActionPanel.this.onConfirm();
+ }
+ };
+ addOrReplace(confirmLink);
+
+ cancelLink = new Link(CANCEL_LINK_MARKUP_ID) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick() {
+ ConfirmActionPanel.this.onCancel();
+ }
+
+ };
+ addOrReplace(cancelLink);
+ }
+
+ public void setupNonAccessibleComponents() {
+ // NOTHING TO DO (YET?)
+ }
+
+ public abstract void onConfirm();
+
+ public abstract void onCancel();
+
+}
Property changes on: trunk/webical-core/src/main/java/org/webical/web/component/ConfirmActionPanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/webical-core/src/main/java/org/webical/web/component/HeaderPanel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/HeaderPanel.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/component/HeaderPanel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -41,7 +41,6 @@
// Markup ID's
private static final String LOGOUT_LINK_MARKUP_ID = "logoutLink";
- private static final String LOGOUT_LABEL_MARKUP_ID = "logoutLink.label";
private static final String SETTINGS_PANEL_LINK_MARKUP_ID = "settingsPanelLink";
private static final String CALENDAR_VIEW_LINK_MARKUP_ID = "calendarViewsPanelLink";
private static final String WELCOME_LABEL_MARKUP_ID = "welcomeLabel";
@@ -75,8 +74,6 @@
}
};
- Label logoutLinkLabel = new Label(LOGOUT_LABEL_MARKUP_ID, "Logout");
- logoutLink.add(logoutLinkLabel);
addOrReplace(logoutLink);
}
Modified: trunk/webical-core/src/main/java/org/webical/web/component/calendar/CalendarPanel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/calendar/CalendarPanel.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/component/calendar/CalendarPanel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -39,7 +39,6 @@
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.webical.Event;
-import org.webical.User;
import org.webical.manager.CalendarManager;
import org.webical.manager.EventManager;
import org.webical.manager.WebicalException;
@@ -49,6 +48,7 @@
import org.webical.web.action.EventSelectedAction;
import org.webical.web.action.FormFinishedAction;
import org.webical.web.action.IAction;
+import org.webical.web.action.RemoveEventAction;
import org.webical.web.action.ShowCalendarAction;
import org.webical.web.action.StoreEventAction;
import org.webical.web.action.SwitchCalendarVisibilityAction;
@@ -58,8 +58,8 @@
import org.webical.web.component.AbstractBasePanel;
import org.webical.web.component.calendar.model.DatePickerModel;
import org.webical.web.component.calendar.model.DateSwitcherModel;
-import org.webical.web.component.event.EventAddEditPanel;
-import org.webical.web.component.event.EventDetailsViewPanel;
+import org.webical.web.component.event.EventDetailsPanel;
+import org.webical.web.component.event.EventFormPanel;
/**
* CalendarPanel holds the different calendar views and allows switching between them with tabs. <br />
@@ -82,7 +82,6 @@
private static final String CALENDAR_VIEW_PANEL_MARKUP_ID = "calendarViewPanel";
private static final String CALENDAR_VIEW_PANEL_CONTENT_MARKUP_ID = "panel";
private static final String ADD_EVENT_LINK_MARKUP_ID = "addEventLink";
- private static final String ADD_EVENT_LABEL_MARKUP_ID = "addEventLabel";
private static final String DATESWITCHER_MARKUP_ID = "dateSwitcher";
private static final String DATEPICKER_MARKUP_ID = "datePicker";
private static final String CALENDARLIST_PANEL_MARKUP_ID = "calendarPanel";
@@ -95,7 +94,7 @@
/** List of actions handled by this panel */
@SuppressWarnings("unchecked")
- protected static Class[] PANELACTIONS = new Class[] { DaySelectedAction.class, WeekSelectedAction.class, EventSelectedAction.class, AddEventAction.class, EditEventAction.class, ShowCalendarAction.class, SwitchCalendarVisibilityAction.class, FormFinishedAction.class, StoreEventAction.class };
+ protected static Class[] PANELACTIONS = new Class[] { DaySelectedAction.class, WeekSelectedAction.class, EventSelectedAction.class, AddEventAction.class, EditEventAction.class, ShowCalendarAction.class, SwitchCalendarVisibilityAction.class, FormFinishedAction.class, StoreEventAction.class, RemoveEventAction.class };
/** Used by Spring to inject the Calendar Manager. */
@SpringBean(name="calendarManager")
@@ -168,8 +167,6 @@
}
};
- addEventLabel = new Label(ADD_EVENT_LABEL_MARKUP_ID, new StringResourceModel(ADD_EVENT_LABEL_MARKUP_ID, this, null));
- addEventLink.add(addEventLabel);
add(addEventLink);
/*
@@ -284,8 +281,10 @@
// Filter the actions that can be handled by this panel
if(Arrays.asList(PANELACTIONS).contains(action.getClass())) {
// Day Selected
- if(action.getClass().equals(DaySelectedAction.class)) {
- CalendarPanel.this.changeCalendarView(CalendarPanel.DAY_VIEW, ((DaySelectedAction) action).getDaySelected(), null);
+ if(isAction(DaySelectedAction.class, action)) {
+ setCurrentDate(((DaySelectedAction) action).getDaySelected());
+ setCurrentCalendarView(CalendarPanel.DAY_VIEW);
+ this.internalOnAction(new ShowCalendarAction());
}
// Week Selected
else if(action.getClass().equals(WeekSelectedAction.class)) {
@@ -293,7 +292,8 @@
}
// Show event details
else if(action.getClass().equals(EventSelectedAction.class)) {
- EventDetailsViewPanel contentPanel = new EventDetailsViewPanel(CALENDAR_VIEW_PANEL_MARKUP_ID, ((EventSelectedAction) action).getSelectedEvent()) {
+ EventSelectedAction eventSelectedAction = (EventSelectedAction) action;
+ EventDetailsPanel contentPanel = new EventDetailsPanel(CALENDAR_VIEW_PANEL_MARKUP_ID, eventSelectedAction.getSelectedEvent(), eventSelectedAction.getSelectedEventDate()) {
private static final long serialVersionUID = 1L;
@Override
@@ -307,7 +307,7 @@
}
// Add Event
else if(action.getClass().equals(AddEventAction.class)) {
- EventAddEditPanel contentPanel = new EventAddEditPanel(CALENDAR_VIEW_PANEL_MARKUP_ID, null, false, ((AddEventAction) action).getEventDate(), null, "") {
+ EventFormPanel contentPanel = new EventFormPanel(CALENDAR_VIEW_PANEL_MARKUP_ID, null, ((AddEventAction) action).getEventDate()) {
private static final long serialVersionUID = 1L;
@Override
@@ -322,7 +322,7 @@
// Edit event
else if(action.getClass().equals(EditEventAction.class)) {
EditEventAction editEventAction = (EditEventAction) action;
- EventAddEditPanel contentPanel = new EventAddEditPanel(CALENDAR_VIEW_PANEL_MARKUP_ID, editEventAction.getSelectedEvent(), false, new GregorianCalendar(), null, "") {
+ EventFormPanel contentPanel = new EventFormPanel(CALENDAR_VIEW_PANEL_MARKUP_ID, editEventAction.getSelectedEvent(), editEventAction.getSelectedEventDate()) {
private static final long serialVersionUID = 1L;
@Override
@@ -358,10 +358,14 @@
// Create a new ShowCalendarAction to reload the Calendar View
this.internalOnAction(new ShowCalendarAction(true));
}
-
+ // Store Event
else if(isAction(StoreEventAction.class, action)) {
this.storeEvent((StoreEventAction) action);
}
+ // Remove Event
+ else if(isAction(RemoveEventAction.class, action)) {
+ this.removeEvent((RemoveEventAction) action);
+ }
}
// Pass the onther actions to the parent component
else {
@@ -407,7 +411,6 @@
* @return The panel for the current view
*/
public CalendarViewPanel getCurrentViewPanel() {
- //return (CalendarViewPanel) tabs.get(getCurrentView()).getPanel(CALENDAR_VIEWS_CONTENT_PANEL_MARKUP_ID);
return currentViewPanel;
}
@@ -422,11 +425,6 @@
private boolean isAction(Class comparisonClass, IAction action) {
return action.getClass().equals(comparisonClass);
}
- /**
- * Implemented by the parent component to handle actions from this panel.
- * @param action The action to pass on
- */
- public abstract void onAction(IAction action);
/**
* Creates a tabbed panel for the calendar tabs
@@ -561,31 +559,80 @@
}
private void storeEvent(StoreEventAction storeEventAction) {
- System.out.println("Storing event");
-
- Event eventToStore = storeEventAction.getEvent();
//Save the event
try {
- eventManager.storeEvent(eventToStore);
+ for(Event currentEvent : storeEventAction.getEvents()) {
+ eventManager.storeEvent(currentEvent);
+ }
- log.debug("Event " + eventToStore.getSummary() + " for calendar " + eventToStore.getCalendar() + " stored on " + eventToStore.getDtStart() + " - " + eventToStore.getDtEnd());
+ if(!storeEventAction.isJustStore()) {
+ // Change back to the calendar
+ CalendarPanel.this.internalOnAction(new ShowCalendarAction(true));
+ }
- // Change back to the calendar
- CalendarPanel.this.internalOnAction(new ShowCalendarAction(true));
-
-
} catch (WebicalException e) {
- System.out.println("!!!! PANIC !!!");
- throw new WebicalWebAplicationException("Event could not be saved: " + eventToStore.getSummary(), e);
+ throw new WebicalWebAplicationException("Event could not be saved", e);
}
}
- private void removeEvent() {
-
+ private void removeEvent(RemoveEventAction action) {
+ try {
+ eventManager.removeEvent(action.getEventToRemove());
+ } catch (WebicalException e) {
+ throw new WebicalWebAplicationException(e);
+ }
+ CalendarPanel.this.internalOnAction(new ShowCalendarAction());
}
/**
+ * Enable only the selected calendar in the view for the current user
+ * @param calendar The calendar to show
+ * @param target The Ajax Target of the panel
+ */
+ private void enableOnlyThisCalendar(org.webical.Calendar calendar, AjaxRequestTarget target) {
+ try {
+ calendar.setVisible(true);
+ calendarManager.storeCalendar(calendar);
+
+ List<org.webical.Calendar> calendars = calendarManager.getCalendars(WebicalSession.getWebicalSession().getUser());
+ if(calendars != null && calendars.size() > 0) {
+ for (org.webical.Calendar calendarToDisable : calendars) {
+ if(!calendarToDisable.equals(calendar)) {
+ calendarToDisable.setVisible(false);
+ calendarManager.storeCalendar(calendarToDisable);
+ }
+ }
+ }
+ } catch (WebicalException e) {
+ throw new WebicalWebAplicationException("Could not store calendar", e);
+ }
+
+ // Reload the calendar to update the events shown
+ this.internalOnAction(new ShowCalendarAction());
+ }
+
+ /**
+ * Enable all calendars in the view for the current user
+ * @param target The Ajax Target of the panel
+ */
+ private void enableAllCalendars(AjaxRequestTarget target) {
+ try {
+ List<org.webical.Calendar> calendars = calendarManager.getCalendars(WebicalSession.getWebicalSession().getUser());
+ if(calendars != null && calendars.size() > 0) {
+ for (org.webical.Calendar calendar : calendars) {
+ calendar.setVisible(true);
+ calendarManager.storeCalendar(calendar);
+ }
+ }
+ } catch (WebicalException e) {
+ throw new WebicalWebAplicationException("Could not store calendar", e);
+ }
+ // Reload the calendar to update the events shown
+ this.internalOnAction(new ShowCalendarAction());
+ }
+
+ /**
* Updates the date selector models.
* @see org.webical.web.component.AbstractBasePanel#onBeforeRender()
*/
@@ -608,23 +655,11 @@
}
/**
- * Get a list of calendars accesible to this user
- * @param user the User
- * @return List<Calendar> the list with user calendars
+ * Implemented by the parent component to handle actions from this panel.
+ * @param action The action to pass on
*/
- private List<org.webical.Calendar> getAvailableCalendars(User user) {
- List<org.webical.Calendar> availableCalendars = null;
- try {
- availableCalendars = calendarManager.getCalendars(user);
- if(availableCalendars == null){
- availableCalendars = new ArrayList<org.webical.Calendar>();
- }
- } catch (WebicalException e) {
- availableCalendars = new ArrayList<org.webical.Calendar>();
- }
- return availableCalendars;
- }
-
+ public abstract void onAction(IAction action);
+
/**
* Used by spring to set the Calendar Manager.
* @param calendarManager The Calendar Manager
Modified: trunk/webical-core/src/main/java/org/webical/web/component/calendar/DatePickerPanel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/calendar/DatePickerPanel.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/component/calendar/DatePickerPanel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -33,6 +33,7 @@
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
import org.webical.web.action.DaySelectedAction;
import org.webical.web.action.IAction;
@@ -155,16 +156,18 @@
*/
private class DatePickerForm extends Form {
private static final long serialVersionUID = 1L;
-
- private static final String CHANGE_DATE_LABEL = "change_date_label";
+
+ // Markup ID's
private static final String CHANGE_DATE_BUTTON_MARKUP_ID = "changeDateButton";
private static final String CURRENT_DATE_FIELD_MARKUP_ID = "changeDateField";
private static final String CHANGE_DATE_LABEL_MARKUP_ID = "changeDateLabel";
-
+ // Resource ID's
+ private static final String CHANGE_DATE_LABEL_RESOURCE_ID = "change_date_label";
+ private static final String CHANGE_DATE_BUTTON_RESOURCE_ID = "change_date_label";
+
private Label changeDateLabel;
private DateTextField changeDateTextField;
private Button changeDateButton;
- private StringResourceModel changeDateResourceModel;
/**
* Constructor
@@ -174,12 +177,10 @@
public DatePickerForm(String markupId, IModel model) {
super(markupId, model);
- changeDateResourceModel = new StringResourceModel(CHANGE_DATE_LABEL, this, null);
+ changeDateTextField = new DateTextField(CURRENT_DATE_FIELD_MARKUP_ID, WebicalSession.getWebicalSession().getUserSettings().getDateFormat());
+ changeDateLabel = new Label(CHANGE_DATE_LABEL_MARKUP_ID, new StringResourceModel(CHANGE_DATE_LABEL_RESOURCE_ID, this, new Model("Pick Date")));
+ changeDateButton = new Button(CHANGE_DATE_BUTTON_MARKUP_ID, new StringResourceModel(CHANGE_DATE_BUTTON_RESOURCE_ID, this, new Model("Show")));
- changeDateTextField = new DateTextField(CURRENT_DATE_FIELD_MARKUP_ID);
- changeDateLabel = new Label(CHANGE_DATE_LABEL_MARKUP_ID, changeDateResourceModel);
- changeDateButton = new Button(CHANGE_DATE_BUTTON_MARKUP_ID, changeDateResourceModel);
-
add(changeDateLabel);
add(changeDateTextField);
add(changeDateButton);
Modified: trunk/webical-core/src/main/java/org/webical/web/component/calendar/DayViewPanel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/calendar/DayViewPanel.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/component/calendar/DayViewPanel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -67,7 +67,7 @@
private final String viewPeriodFormat = "MMMM dd, yyyy";
/** The current date */
- private GregorianCalendar currentDate;
+ private GregorianCalendar dayDate;
private Label dayHeadingLabel;
private Link addLink;
@@ -84,16 +84,16 @@
/**
* Constructor
* @param markupId The ID used in markup
- * @param date The current date
+ * @param dayDate The date this panel is representing
*/
- public DayViewPanel(String markupId, Calendar currentDate) {
+ public DayViewPanel(String markupId, Calendar dayDate) {
super(markupId, DayViewPanel.class);
- this.currentDate = (GregorianCalendar) currentDate;
+ this.dayDate = (GregorianCalendar) dayDate;
// Set the start time for the range
- startDate = CalendarUtils.getStartOfDay(this.currentDate.getTime());
- endDate = CalendarUtils.getEndOfDay(this.currentDate.getTime());
+ startDate = CalendarUtils.getStartOfDay(this.dayDate.getTime());
+ endDate = CalendarUtils.getEndOfDay(this.dayDate.getTime());
eventsModel = new EventsModel(startDate, endDate);
dateFormat = new SimpleDateFormat("EEEE", getLocale());
@@ -104,7 +104,8 @@
* @see org.webical.web.component.IAccessibilitySwitchingComponent#setupCommonComponents()
*/
public void setupCommonComponents() {
- // NOTHING TO DO
+ dayHeadingLabel = new Label(DAY_HEADING_LABEL_MARKUP_ID, dateFormat.format(dayDate.getTime()));
+ addOrReplace(dayHeadingLabel);
}
/* (non-Javadoc)
@@ -112,7 +113,7 @@
*/
public void setupAccessibleComponents() {
- eventsListView = new EventsListView(EVENT_ITEM_MARKUP_ID, eventsModel) {
+ eventsListView = new EventsListView(EVENT_ITEM_MARKUP_ID, eventsModel, dayDate) {
private static final long serialVersionUID = 1L;
@Override
@@ -140,12 +141,11 @@
@Override
public void onClick() {
// generate AddEventAction
- DayViewPanel.this.onAction(new AddEventAction(currentDate));
+ DayViewPanel.this.onAction(new AddEventAction(dayDate));
}
};
add(addLink);
- renderModelDependentLabels();
}
@@ -157,41 +157,6 @@
}
/**
- * Renders the labels that are subject to model changes.
- * This method is called from onBeforeRender(), after setupCommonComponents(),
- * setupAccessibleComponents() and setupNonAccessibleComponents() are executed
- * and every time the page is loaded.
- */
- private void renderModelDependentLabels() {
- // Render the label for the day heading with the (updated) current date
- dayHeadingLabel = new Label(DAY_HEADING_LABEL_MARKUP_ID, dateFormat.format(currentDate.getTime()));
- addOrReplace(dayHeadingLabel);
- }
-
- /**
- * Updates the EventsModel range and re-renders components subject to model changes
- * @see org.webical.web.component.AbstractBasePanel#onBeforeRender()
- */
- /*@Override
- public void onBeforeRender() {
- super.onBeforeRender();
-
- // Update the range for the event model
- //startDate.setTime(currentDate.getTime().getTime());
- // Calculate the end of the range for the event model
- //GregorianCalendar rangeEndCal = new GregorianCalendar();
- //rangeEndCal.setTime(startDate);
- //rangeEndCal.add(Calendar.DAY_OF_WEEK, 1);
- //endDate.setTime(rangeEndCal.getTime().getTime());
-
- // (Re-)render the list with events
- //eventsListView.modelChanged();
-
- // Render model dependent labels
- renderModelDependentLabels();
- }*/
-
- /**
* Handles actions generated by this panel.
* @param action The action to handle
*/
Modified: trunk/webical-core/src/main/java/org/webical/web/component/calendar/EventsListView.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/calendar/EventsListView.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/component/calendar/EventsListView.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -21,6 +21,7 @@
package org.webical.web.component.calendar;
import java.text.SimpleDateFormat;
+import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.wicket.markup.html.basic.Label;
@@ -51,6 +52,8 @@
@SuppressWarnings("unchecked")
protected static Class[] PANELACTIONS = new Class[] { };
+ private GregorianCalendar listDate;
+
// Panel components
private Label timeLabel;
private Link eventLink;
@@ -65,9 +68,11 @@
* Constructor.
* @param id The ID to use in markup
* @param model The {@code EventsModel} to use
+ * @param listDate the date this list is representing
*/
- public EventsListView(String id, EventsModel model) {
+ public EventsListView(String id, EventsModel model, Calendar listDate) {
super(id, model);
+ this.listDate = (GregorianCalendar) listDate;
}
/**
@@ -80,7 +85,6 @@
final GregorianCalendar currentDate = new GregorianCalendar();
currentDate.setTime(currentEvent.getDtStart());
- //DateFormat df = SimpleDateFormat.getTimeInstance(DateFormat.SHORT, getLocale());
SimpleDateFormat dateFormat = new SimpleDateFormat(WebicalSession.getWebicalSession().getUserSettings().getTimeFormat(), getLocale());
String timeLabelText = "";
@@ -97,7 +101,7 @@
@Override
public void onClick() {
- EventsListView.this.onAction(new EventSelectedAction(currentEvent, currentDate));
+ EventsListView.this.onAction(new EventSelectedAction(currentEvent, listDate));
}
};
eventLink.add(new Label(EVENT_TITLE_LABEL_MARKUP_ID, currentEvent.getSummary()));
Modified: trunk/webical-core/src/main/java/org/webical/web/component/calendar/MonthDayPanel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/calendar/MonthDayPanel.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/component/calendar/MonthDayPanel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -107,7 +107,7 @@
addEventLink.setVisible(CalendarPanel.enableAddEvent);
add(addEventLink);
- dayEventsListView = new EventsListView(EVENT_ITEM_MARKUP_ID, eventsModel) {
+ dayEventsListView = new EventsListView(EVENT_ITEM_MARKUP_ID, eventsModel, dayDate) {
private static final long serialVersionUID = 1L;
@Override
Modified: trunk/webical-core/src/main/java/org/webical/web/component/calendar/WeekDayPanel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/calendar/WeekDayPanel.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/component/calendar/WeekDayPanel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -89,7 +89,7 @@
addEventLink.setVisible(CalendarPanel.enableAddEvent);
add(addEventLink);
- dayEventsListView = new EventsListView(EVENT_ITEM_MARKUP_ID, eventsModel) {
+ dayEventsListView = new EventsListView(EVENT_ITEM_MARKUP_ID, eventsModel, dayDate) {
private static final long serialVersionUID = 1L;
@Override
Modified: trunk/webical-core/src/main/java/org/webical/web/component/calendar/model/WrappingEventsModel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/calendar/model/WrappingEventsModel.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/component/calendar/model/WrappingEventsModel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -28,7 +28,7 @@
import org.webical.Event;
import org.webical.comparator.EventStartTimeComparator;
-import org.webical.util.RecurrenceUtils;
+import org.webical.ical.RecurrenceUtil;
/**
* Model to put on top of an EventsModel or another WrappingEventsModel.
@@ -71,7 +71,7 @@
for(Event currentEvent : allEvents) {
// Get the events for this range, including recurrent events
try {
- if(RecurrenceUtils.isApplicableForDateRange(currentEvent, getStartDate(), getEndDate())){
+ if(RecurrenceUtil.isApplicableForDateRange(currentEvent, getStartDate(), getEndDate())){
eventsInRange.add(currentEvent);
}
} catch (ParseException e) {
Added: trunk/webical-core/src/main/java/org/webical/web/component/event/ConfirmRecurringActionPanel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/event/ConfirmRecurringActionPanel.java (rev 0)
+++ trunk/webical-core/src/main/java/org/webical/web/component/event/ConfirmRecurringActionPanel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -0,0 +1,103 @@
+/*
+ * Webical - http://www.webical.org
+ * Copyright (C) 2007 Func. Internet Integration
+ *
+ * This file is part of Webical.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.webical.web.component.event;
+
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.model.Model;
+import org.webical.web.component.AbstractBasePanel;
+
+public abstract class ConfirmRecurringActionPanel extends AbstractBasePanel {
+ private static final long serialVersionUID = 1L;
+
+ private final String MESSAGE_LABEL_MARKUP_ID = "messageLabel";
+ private final String CONFIRM_THIS_LINK_MARKUP_ID = "confirmThisLink";
+ private final String CONFIRM_ALL_LINK_MARKUP_ID = "confirmAllLink";
+ private final String CONFIRM_FOLLOWING_LINK_MARKUP_ID = "confirmFollowingLink";
+ private final String CANCEL_LINK_MARKUP_ID = "cancelLink";
+
+ private Model message;
+ private Label messageLabel;
+ private Link confirmThisLink, confirmAllLink, confirmFollowingLink, cancelLink;
+
+ public ConfirmRecurringActionPanel(String markupId, String message) {
+ super(markupId, ConfirmRecurringActionPanel.class);
+ this.message = new Model(message);
+ }
+
+ public void setupCommonComponents() {
+ messageLabel = new Label(MESSAGE_LABEL_MARKUP_ID, message);
+ addOrReplace(messageLabel);
+ }
+
+ public void setupAccessibleComponents() {
+ confirmThisLink = new Link(CONFIRM_THIS_LINK_MARKUP_ID) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick() {
+ ConfirmRecurringActionPanel.this.onConfirmThis();
+ }
+ };
+ addOrReplace(confirmThisLink);
+
+ confirmAllLink = new Link(CONFIRM_ALL_LINK_MARKUP_ID) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick() {
+ ConfirmRecurringActionPanel.this.onConfirmAll();
+ }
+ };
+ addOrReplace(confirmAllLink);
+
+ confirmFollowingLink = new Link(CONFIRM_FOLLOWING_LINK_MARKUP_ID) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick() {
+ ConfirmRecurringActionPanel.this.onConfirmFollowing();
+ }
+ };
+ addOrReplace(confirmFollowingLink);
+
+ cancelLink = new Link(CANCEL_LINK_MARKUP_ID) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick() {
+ ConfirmRecurringActionPanel.this.onCancel();
+ }
+ };
+ addOrReplace(cancelLink);
+
+ }
+
+ public void setupNonAccessibleComponents() {
+ // NOTHING TO DO (YET?)
+ }
+
+ public abstract void onConfirmAll();
+ public abstract void onConfirmThis();
+ public abstract void onConfirmFollowing();
+ public abstract void onCancel();
+
+}
Property changes on: trunk/webical-core/src/main/java/org/webical/web/component/event/ConfirmRecurringActionPanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/webical-core/src/main/java/org/webical/web/component/event/EventAddEditPanel.java
===================================================================
--- trunk/webical-core/src/main/java/org/webical/web/component/event/EventAddEditPanel.java 2008-01-11 09:08:10 UTC (rev 646)
+++ trunk/webical-core/src/main/java/org/webical/web/component/event/EventAddEditPanel.java 2008-01-11 09:14:43 UTC (rev 647)
@@ -1,103 +0,0 @@
-/*
- * Webical - http://www.webical.org
- * Copyright (C) 2007 Func. ...
[truncated message content] |