Author: solomax
Date: Mon Dec 22 12:19:39 2014
New Revision: 1647298

URL: http://svn.apache.org/r1647298
Log:
[OPENMEETINGS-1126, OPENMEETINGS-1131, OPENMEETINGS-1139] LocalDateTime is used 
to create/update/display appointments, timezone issues should be fixed

Added:
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java
Modified:
    openmeetings/branches/3.0.x/ivy.xml
    openmeetings/branches/3.0.x/ivysettings.xml
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
    openmeetings/branches/3.0.x/src/main/webapp/css/theme.css
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/MainPage.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java

Modified: openmeetings/branches/3.0.x/ivy.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/ivy.xml?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/ivy.xml (original)
+++ openmeetings/branches/3.0.x/ivy.xml Mon Dec 22 12:19:39 2014
@@ -259,12 +259,13 @@
                <dependency org="org.apache.wicket" 
name="wicket-native-websocket-tomcat" rev="6.18.0" conf="openmeetings->*" 
transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-core" rev="6.18.0" conf="openmeetings->*" 
transitive="false"/>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui" rev="6.18.0" conf="openmeetings->*" transitive="false"/>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-calendar" rev="6.18.0" conf="openmeetings->*" 
transitive="false"/>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-plugins" rev="6.18.0" conf="openmeetings->*" 
transitive="false"/>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-kendo-ui" rev="6.18.0" conf="openmeetings->*" transitive="false"/>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-kendo-ui-theme-default" rev="6.18.0" conf="openmeetings->*" 
transitive="false"/>
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-core" rev="6.18.1-20141222.092315-2" 
conf="openmeetings->*" transitive="false"/>
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui" rev="6.18.1-20141222.092324-2" conf="openmeetings->*" 
transitive="false"/>
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-calendar" rev="6.18.1-20141222.092622-2" 
conf="openmeetings->*" transitive="false"/>
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-plugins" rev="6.18.1-20141222.092613-2" 
conf="openmeetings->*" transitive="false"/>
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-kendo-ui" rev="6.18.1-20141222.092631-2" conf="openmeetings->*" 
transitive="false"/>
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-kendo-ui-theme-default" rev="6.18.1-20141222.092718-2" 
conf="openmeetings->*" transitive="false"/>
+               <dependency org="org.threeten" name="threetenbp" rev="1.2" 
conf="openmeetings->*" transitive="false"/>
                <dependency org="ro.fortsoft.wicket.dashboard" 
name="wicket-dashboard-core" rev="0.12.0" conf="openmeetings->*" 
transitive="false">
                        <include type="jar" />
                </dependency>

Modified: openmeetings/branches/3.0.x/ivysettings.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/ivysettings.xml?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/ivysettings.xml (original)
+++ openmeetings/branches/3.0.x/ivysettings.xml Mon Dec 22 12:19:39 2014
@@ -38,9 +38,9 @@
                        <url name="smslib" m2compatible="true">
                                <artifact 
pattern="http://smslib.org/maven2/v3/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]";
 />
                        </url>
-                       <!--url name="wicket-jquery-ui" m2compatible="true">
-                               <artifact 
pattern="https://oss.sonatype.org/content/repositories/snapshots/[organisation]/[artifact]/6.13.1-SNAPSHOT/[artifact]-[revision].[ext]";
 />
-                       </url-->
+                       <url name="wicket-jquery-ui" m2compatible="true">
+                               <artifact 
pattern="https://oss.sonatype.org/content/repositories/snapshots/[organisation]/[artifact]/6.18.1-SNAPSHOT/[artifact]-[revision].[ext]";
 />
+                       </url>
                </chain>
        </resolvers>
        <triggers>

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
 Mon Dec 22 12:19:39 2014
@@ -237,26 +237,17 @@ public class AppointmentDao {
        }
        
        public List<Appointment> getAppointmentsByRange(Long userId, Date 
start, Date end) {
-               Calendar calstart = Calendar.getInstance();
-               calstart.setTime(start);
-               calstart.set(Calendar.HOUR, 0);
-
-               Calendar calend = Calendar.getInstance();
-               calend.setTime(end);
-               calend.set(Calendar.HOUR, 23);
-               calend.set(Calendar.MINUTE, 59);
-               
-               log.debug("Start " + calstart.getTime() + " End " + 
calend.getTime());
+               log.debug("Start " + start + " End " + end);
 
                TypedQuery<Appointment> query = 
em.createNamedQuery("appointmentsInRange", Appointment.class);
-               query.setParameter("starttime", calstart.getTime());
-               query.setParameter("endtime", calend.getTime());
+               query.setParameter("starttime", start);
+               query.setParameter("endtime", end);
                query.setParameter("userId", userId);
                
                List<Appointment> listAppoints = new 
ArrayList<Appointment>(query.getResultList()); 
                TypedQuery<Appointment> q1 = 
em.createNamedQuery("joinedAppointmentsInRange", Appointment.class);
-               q1.setParameter("starttime", calstart.getTime());
-               q1.setParameter("endtime", calend.getTime());
+               q1.setParameter("starttime", start);
+               q1.setParameter("endtime", end);
                q1.setParameter("userId", userId);
                for (Appointment a : q1.getResultList()) {
                        a.setConnectedEvent(true); //TODO need to be reviewed

Modified: openmeetings/branches/3.0.x/src/main/webapp/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/css/theme.css?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/css/theme.css (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/css/theme.css Mon Dec 22 
12:19:39 2014
@@ -594,3 +594,6 @@ select.messages.selector {
 .user.info.panel fieldset table, .user.info.panel fieldset table textarea {
        width: 100%;
 }
+.date.time.picker {
+       font-size: 12px;
+}

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/MainPage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/MainPage.java?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/MainPage.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/MainPage.java
 Mon Dec 22 12:19:39 2014
@@ -38,6 +38,7 @@ import org.apache.openmeetings.web.util.
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import 
org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
@@ -66,6 +67,7 @@ public class MainPage extends BaseInited
        
        public MainPage(PageParameters pp) {
                super();
+               add(new AjaxClientInfoBehavior());
                contents = new WebMarkupContainer("contents");
                add(contents.add(new 
WebMarkupContainer(CHILD_ID)).setOutputMarkupId(true).setMarkupId("contents"));
                menu = new MenuPanel("menu");

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
 Mon Dec 22 12:19:39 2014
@@ -29,11 +29,11 @@
                                </tr>
                                <tr>
                                        <td><wicket:ommessage key="570" /></td>
-                                       <td><span wicket:id="start"></span></td>
+                                       <td><span class="date time picker" 
wicket:id="start"></span></td>
                                </tr>
                                <tr>
                                        <td><wicket:ommessage key="571" /></td>
-                                       <td><span wicket:id="end"></span></td>
+                                       <td><span class="date time picker" 
wicket:id="end"></span></td>
                                </tr>
                                <tr>
                                        <td><wicket:ommessage key="565" /></td>

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 Mon Dec 22 12:19:39 2014
@@ -46,13 +46,13 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.MainPage;
 import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
+import org.apache.openmeetings.web.util.CalendarHelper;
 import org.apache.openmeetings.web.util.FormatHelper;
 import org.apache.openmeetings.web.util.RoomTypeDropDown;
 import org.apache.openmeetings.web.util.UserMultiChoice;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
 import org.apache.wicket.behavior.AttributeAppender;
-import org.apache.wicket.extensions.yui.calendar.DateTimeField;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
@@ -61,12 +61,14 @@ import org.apache.wicket.markup.html.for
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.util.CollectionModel;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
+import org.threeten.bp.LocalDateTime;
 
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
 import 
com.googlecode.wicket.jquery.ui.plugins.wysiwyg.toolbar.DefaultWysiwygToolbar;
@@ -76,6 +78,7 @@ import com.googlecode.wicket.jquery.ui.w
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
 import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+import com.googlecode.wicket.kendo.ui.form.datetime.local.DateTimePicker;
 
 public class AppointmentDialog extends AbstractFormDialog<Appointment> {
        private static final long serialVersionUID = 1L;
@@ -98,22 +101,24 @@ public class AppointmentDialog extends A
                return 650;
        }
        
-       public void setModelObjectWithAjaxTarget(Appointment object, 
AjaxRequestTarget target) {
-               form.setModelObject(object);
-               form.setEnabled(isOwner(object));
-               log.debug(" -- setModelObjectWithAjaxTarget -- Current model " 
+ object);
-               if (object.getId() != null) {
-                       delete.setVisible(isOwner(object), target);
-                       enterRoom.setVisible(object.getRoom() != null, target);
+       public void setModelObjectWithAjaxTarget(Appointment a, 
AjaxRequestTarget target) {
+               form.setModelObject(a);
+               form.start.setModelObject(CalendarHelper.getDate(a.getStart()));
+               form.end.setModelObject(CalendarHelper.getDate(a.getEnd()));
+               form.setEnabled(isOwner(a));
+               log.debug(" -- setModelObjectWithAjaxTarget -- Current model " 
+ a);
+               if (a.getId() != null) {
+                       delete.setVisible(isOwner(a), target);
+                       enterRoom.setVisible(a.getRoom() != null, target);
                } else {
                        delete.setVisible(false, target);
                        enterRoom.setVisible(false, target);
                }
-               save.setVisible(isOwner(object), target);
-               super.setModelObject(object);
+               save.setVisible(isOwner(a), target);
+               super.setModelObject(a);
        }
        
-       public AppointmentDialog(String id, String title, CalendarPanel 
calendarPanel, IModel<Appointment> model) {
+       public AppointmentDialog(String id, String title, CalendarPanel 
calendarPanel, CompoundPropertyModel<Appointment> model) {
                super(id, title, model, true);
                log.debug(" -- AppointmentDialog -- Current model " + 
getModel().getObject());
                this.calendarPanel = calendarPanel;
@@ -207,6 +212,8 @@ public class AppointmentDialog extends A
                }
         }
         a.setMeetingMembers(attendees);
+        a.setStart(CalendarHelper.getDate(form.start.getModelObject()));
+        a.setEnd(CalendarHelper.getDate(form.end.getModelObject()));
         getBean(AppointmentDao.class).update(a, getUserId());
                target.add(feedback);
                calendarPanel.refresh(target);
@@ -219,8 +226,8 @@ public class AppointmentDialog extends A
        private class AppointmentForm extends Form<Appointment> {
                private static final long serialVersionUID = 1L;
                private boolean createRoom = true;
-               private final DateTimeField start;
-               private final DateTimeField end;
+               private DateTimePicker start = new DateTimePicker("start", 
Model.of(LocalDateTime.now()), "yyyy/MM/dd", "HH:mm:ss");  //FIXME use user 
locale
+               private DateTimePicker end = new DateTimePicker("end", 
Model.of(LocalDateTime.now()), "yyyy/MM/dd", "HH:mm:ss");  //FIXME use user 
locale
                private final PasswordTextField pwd = new 
PasswordTextField("password");
                private final Label owner = new Label("aowner", Model.of(""));
                private final DropDownChoice<RoomType> roomType = new 
RoomTypeDropDown("room.roomtype");
@@ -274,7 +281,7 @@ public class AppointmentDialog extends A
                        owner.setVisible(!isOwner(a));
                }
                
-               public AppointmentForm(String id, IModel<Appointment> model) {
+               public AppointmentForm(String id, 
CompoundPropertyModel<Appointment> model) {
                        super(id, model);
                        setOutputMarkupId(true);
                        add(new AttributeAppender("class", new 
Model<String>("appointmentPopUp"), " "));
@@ -285,8 +292,8 @@ public class AppointmentDialog extends A
                        add(toolbar);
                        add(new WysiwygEditor("description", toolbar));
                        add(new TextField<String>("location"));
-                       add(start = new DateTimeField("start"));
-                       add(end = new DateTimeField("end"));
+                       add(start);
+                       add(end);
                        pwd.setEnabled(getModelObject().isPasswordProtected());
                        pwd.setOutputMarkupId(true);
                        add(pwd);
@@ -348,7 +355,7 @@ public class AppointmentDialog extends A
                
                @Override
                protected void onValidate() {
-                       if 
(end.getConvertedInput().before(start.getConvertedInput())) {
+                       if 
(end.getConvertedInput().isBefore(start.getConvertedInput())) {
                                error(WebSession.getString(1592));
                        }
                }

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
 Mon Dec 22 12:19:39 2014
@@ -18,13 +18,15 @@
  */
 package org.apache.openmeetings.web.user.calendar;
 
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.util.CalendarHelper;
 
 import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
 import com.googlecode.wicket.jquery.ui.calendar.CalendarModel;
@@ -40,9 +42,8 @@ public class AppointmentModel extends Ca
        @Override
        protected List<? extends CalendarEvent> load() {
                List<CalendarEvent> list = new ArrayList<CalendarEvent>();
-               for (Appointment a : 
Application.getBean(AppointmentDao.class).getAppointmentsByRange(WebSession.getUserId(),
 this.getStart(), this.getEnd())) {
-                       CalendarEvent c = new OmCalendarEvent(a);
-                       list.add(c);
+               for (Appointment a : 
Application.getBean(AppointmentDao.class).getAppointmentsByRange(getUserId(), 
CalendarHelper.getDate(getStart()), CalendarHelper.getDate(getEnd()))) {
+                       list.add(new OmCalendarEvent(a));
                }
                return list;
        }

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
 Mon Dec 22 12:19:39 2014
@@ -21,7 +21,6 @@ package org.apache.openmeetings.web.user
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CALENDAR_FIRST_DAY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getClientTimeZone;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.util.Date;
@@ -33,6 +32,7 @@ import org.apache.openmeetings.db.dao.us
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.openmeetings.web.util.CalendarHelper;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.json.JSONArray;
@@ -44,6 +44,9 @@ import org.apache.wicket.model.CompoundP
 import org.apache.wicket.util.time.Duration;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
+import org.threeten.bp.LocalDateTime;
+import org.threeten.bp.ZonedDateTime;
+import org.threeten.bp.temporal.ChronoUnit;
 
 import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.calendar.Calendar;
@@ -116,9 +119,9 @@ public class CalendarPanel extends UserP
                Options options = new Options();
                options.set("header", "{left: 'prevYear,prev,next,nextYear 
today', center: 'title', right: 'month,agendaWeek,agendaDay'}");
                options.set("allDaySlot", false);
-               options.set("axisFormat", "'HH(:mm)'");
+               options.set("axisFormat", Options.asString("H(:mm)"));
                options.set("defaultEventMinutes", 60);
-               options.set("timeFormat", "{agenda: 'HH:mm{ - HH:mm}', '': 
'HH(:mm)'}");
+               options.set("timeFormat", Options.asString("H(:mm)"));
 
                options.set("buttonText", "{month: '" + 
WebSession.getString(801) +
                                                                "', week: '" + 
WebSession.getString(800) + 
@@ -188,24 +191,16 @@ public class CalendarPanel extends UserP
                        //no need to override onDayClick
                        
                        @Override
-                       public void onSelect(AjaxRequestTarget target, 
CalendarView view, Date start, Date end, boolean allDay) {
-                               java.util.Calendar cStart = 
java.util.Calendar.getInstance(getClientTimeZone());
-                               cStart.setTime(start);
-                               
target.appendJavaScript(String.format("setDatepickerDate('datepicker', new 
Date(%s,%s,%s));", cStart.get(java.util.Calendar.YEAR), 
cStart.get(java.util.Calendar.MONTH), cStart.get(java.util.Calendar.DATE)));
+                       public void onSelect(AjaxRequestTarget target, 
CalendarView view, LocalDateTime start, LocalDateTime end, boolean allDay) {
                                Appointment a = getDefault();
-                               if (CalendarView.month == view && 
start.equals(end)) {
-                                       java.util.Calendar cNow = 
java.util.Calendar.getInstance(getClientTimeZone());
-                                       
cStart.set(java.util.Calendar.HOUR_OF_DAY, 
cNow.get(java.util.Calendar.HOUR_OF_DAY));
-                                       cStart.set(java.util.Calendar.MINUTE, 
cNow.get(java.util.Calendar.MINUTE));
-                                       cStart.set(java.util.Calendar.SECOND, 
0);
-                                       
cStart.set(java.util.Calendar.MILLISECOND, 0);
-                                       a.setStart(cStart.getTime());
-                                       
cStart.add(java.util.Calendar.HOUR_OF_DAY, 1);
-                                       a.setEnd(cStart.getTime());
-                               } else {
-                                       a.setStart(start);
-                                       a.setEnd(end);
+                               LocalDateTime s = start, e = end;
+                               if (CalendarView.month == view) {
+                                       LocalDateTime now = 
ZonedDateTime.now(CalendarHelper.getZoneId()).toLocalDateTime();
+                                       s = 
start.withHour(now.getHour()).withMinute(now.getMinute());
+                                       e = s.plus(1, ChronoUnit.HOURS);
                                }
+                               a.setStart(CalendarHelper.getDate(s));
+                               a.setEnd(CalendarHelper.getDate(e));
                                dialog.setModelObjectWithAjaxTarget(a, target);
                                
                                dialog.open(target);

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java?rev=1647298&r1=1647297&r2=1647298&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
 Mon Dec 22 12:19:39 2014
@@ -18,40 +18,19 @@
  */
 package org.apache.openmeetings.web.user.calendar;
 
-import static org.apache.openmeetings.web.app.WebSession.ISO8601_FORMAT_STRING;
-import static org.apache.openmeetings.web.app.WebSession.getCalendar;
-import static org.apache.openmeetings.web.app.WebSession.getUserTimeZone;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-
 import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.web.util.CalendarHelper;
 
-import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
 
 public class OmCalendarEvent extends CalendarEvent {
        private static final long serialVersionUID = 1L;
-       private final DateFormat ISO8601;
        
        public OmCalendarEvent(Appointment a) {
-               super(a.getId().intValue(), a.getTitle(), a.getStart(), 
a.getEnd());
+               super(a.getId().intValue(), a.getTitle(), null);
+               setStart(CalendarHelper.getDate(a.getStart()));
+               setEnd(CalendarHelper.getDate(a.getEnd()));
                setEditable(AppointmentDialog.isOwner(a));
                setAllDay(false);
-               ISO8601 = new SimpleDateFormat(ISO8601_FORMAT_STRING);
-               ISO8601.setCalendar(getCalendar());
-               ISO8601.setTimeZone(getUserTimeZone());
-       }
-       
-       @Override
-       protected Options createOptions() {
-               Options o = super.createOptions();
-               if (getStart() != null) {
-                       o.set("start", "\"" + ISO8601.format(getStart()) + 
"\"");
-               }
-               if (getEnd() != null) {
-                       o.set("end", "\"" + ISO8601.format(getEnd()) + "\"");
-               }
-               return o;
        }
 }

Added: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java?rev=1647298&view=auto
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java
 (added)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java
 Mon Dec 22 12:19:39 2014
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.web.app.WebSession.getUserTimeZone;
+
+import java.util.Date;
+
+import org.threeten.bp.Instant;
+import org.threeten.bp.LocalDate;
+import org.threeten.bp.LocalDateTime;
+import org.threeten.bp.ZoneId;
+
+public class CalendarHelper {
+       public static ZoneId getZoneId() {
+               return ZoneId.of(getUserTimeZone().getID());
+       }
+       
+       public static Date getDate(LocalDate d) {
+               return getDate(d.atStartOfDay());
+       }
+
+       public static Date getDate(LocalDateTime d) {
+               return new 
Date(d.atZone(getZoneId()).toInstant().toEpochMilli());
+       }
+
+       public static LocalDateTime getDate(Date d) {
+               return 
Instant.ofEpochMilli(d.getTime()).atZone(ZoneId.of(getUserTimeZone().getID())).toLocalDateTime();
+       }
+}


Reply via email to