You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2013/06/07 08:25:47 UTC
svn commit: r1490517 - in
/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings:
data/user/dao/ persistence/beans/user/ web/user/profile/ web/util/
Author: solomax
Date: Fri Jun 7 06:25:20 2013
New Revision: 1490517
URL: http://svn.apache.org/r1490517
Log:
[OPENMEETINGS-615] new Messages forms is updated:
1) user autocomplete + creation works (validation should still be added)
2) UI improvements
Added:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/PrivateMessage.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java?rev=1490517&r1=1490516&r2=1490517&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java Fri Jun 7 06:25:20 2013
@@ -55,7 +55,7 @@ public class PrivateMessagesDao implemen
privateMessage.setFrom(from);
privateMessage.setTo(to);
privateMessage.setOwner(owner);
- privateMessage.setBookedRoom(bookedRoom);
+ privateMessage.setBookedRoom(Boolean.TRUE.equals(bookedRoom));
privateMessage.setRoom(room);
privateMessage.setParentMessage(parentMessageId);
privateMessage.setIsTrash(false);
Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/PrivateMessage.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/PrivateMessage.java?rev=1490517&r1=1490516&r2=1490517&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/PrivateMessage.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/user/PrivateMessage.java Fri Jun 7 06:25:20 2013
@@ -112,7 +112,7 @@ public class PrivateMessage implements S
@Column(name="booked_room")
@Element(data=true)
- private Boolean bookedRoom;
+ private boolean bookedRoom;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="rooms_id")
@@ -193,13 +193,13 @@ public class PrivateMessage implements S
this.owner = owner;
}
- public Boolean getBookedRoom() {
+ public boolean isBookedRoom() {
return bookedRoom;
}
- public void setBookedRoom(Boolean bookedRoom) {
+ public void setBookedRoom(boolean bookedRoom) {
this.bookedRoom = bookedRoom;
}
-
+
public Room getRoom() {
return room;
}
Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html?rev=1490517&r1=1490516&r2=1490517&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.html Fri Jun 7 06:25:20 2013
@@ -41,7 +41,7 @@
<td colspan="2"><textarea class="messages body" wicket:id="message" ></textarea></td>
</tr>
<tr>
- <td colspan="2"><input type="checkbox" wicket:id="room" /><label wicket:for="room"><wicket:ommessage key="1218"/></label></td>
+ <td colspan="2"><input type="checkbox" wicket:id="bookedRoom" /><label wicket:for="bookedRoom"><wicket:ommessage key="1218"/></label></td>
</tr>
<tr wicket:id="roomParamsBlock">
<td colspan="2" wicket:id="roomParams">
@@ -51,15 +51,15 @@
<table>
<tr>
<td><wicket:ommessage key="194"/></td>
- <td><select class="messages selector" wicket:id="roomType"></select></td>
+ <td><select class="messages selector" wicket:id="room.roomtype"></select></td>
</tr>
<tr>
<td><wicket:ommessage key="570" /></td>
- <td><span wicket:id="start"></span></td>
+ <td><span type="text" wicket:id="start"></span></td>
</tr>
<tr>
<td><wicket:ommessage key="571" /></td>
- <td><span wicket:id="end"></span></td>
+ <td><span type="text" wicket:id="end"></span></td>
</tr>
</table>
</td>
Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java?rev=1490517&r1=1490516&r2=1490517&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessageDialog.java Fri Jun 7 06:25:20 2013
@@ -18,28 +18,29 @@
*/
package org.apache.openmeetings.web.user.profile;
-import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.util.RoomTypeDropDown.getRoomTypes;
import java.util.Arrays;
+import java.util.Date;
import java.util.List;
-import org.apache.openmeetings.data.user.dao.UsersDao;
+import org.apache.openmeetings.persistence.beans.room.Room;
import org.apache.openmeetings.persistence.beans.user.PrivateMessage;
-import org.apache.openmeetings.persistence.beans.user.User;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.util.RoomTypeDropDown;
+import org.apache.openmeetings.web.util.UserAutoCompleteTextField;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.yui.calendar.DateTimeField;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-import com.googlecode.wicket.jquery.core.renderer.ITextRenderer;
-import com.googlecode.wicket.jquery.ui.form.autocomplete.AutoCompleteTextField;
import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
@@ -50,42 +51,55 @@ public class MessageDialog extends Abstr
private DialogButton cancel = new DialogButton(WebSession.getString(219));
private final WebMarkupContainer roomParamsBlock = new WebMarkupContainer("roomParamsBlock");
private final WebMarkupContainer roomParams = new WebMarkupContainer("roomParams");
+ private final IModel<Date> modelStart = Model.of(new Date());
+ private final IModel<Date> modelEnd = Model.of(new Date());
@Override
public int getWidth() {
return 650;
}
- public MessageDialog(String id, IModel<PrivateMessage> model) {
+ @Override
+ protected void onOpen(AjaxRequestTarget target) {
+ modelStart.setObject(new Date());
+ modelEnd.setObject(new Date()); //TODO should we add 1 hour or generalize with Calendar???
+ PrivateMessage p = new PrivateMessage();
+ Room r = new Room();
+ r.setAppointment(true);
+ r.setRoomtype(getRoomTypes().get(0));
+ p.setRoom(r);
+ setModelObject(p);
+ roomParams.setVisible(getModelObject().isBookedRoom());
+ form.setModelObject(p);
+ target.add(form);
+ super.onOpen(target);
+ }
+
+ public MessageDialog(String id, CompoundPropertyModel<PrivateMessage> model) {
super(id, WebSession.getString(1209), model);
form = new Form<PrivateMessage>("form", getModel());
- form.add(new AutoCompleteTextField<User>("to", new UserTextRenderer()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected List<User> getChoices(String input) {
- return getBean(UsersDao.class).get(input, 0, 10, null);
- }
- });
+ form.add(new UserAutoCompleteTextField("to"));
form.add(new TextField<String>("subject"));
form.add(new TextArea<String>("message"));
form.add(roomParamsBlock.setOutputMarkupId(true));
- form.add(new CheckBox("room", Model.of(getModelObject().getRoom() != null)).add(new AjaxEventBehavior("click") {
+ final CheckBox bookedRoom = new CheckBox("bookedRoom");
+ form.add(bookedRoom.setOutputMarkupId(true).add(new AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;
- boolean val = false;
@Override
protected void onEvent(AjaxRequestTarget target) {
- roomParams.setVisible(val = !val);
- target.add(roomParamsBlock);
+ PrivateMessage p = MessageDialog.this.getModelObject();
+ p.setBookedRoom(!p.isBookedRoom());
+ roomParams.setVisible(p.isBookedRoom());
+ target.add(bookedRoom, roomParamsBlock);
}
}));
roomParamsBlock.add(roomParams);
- roomParams.add(new RoomTypeDropDown("roomType"));
- roomParams.add(new WebMarkupContainer("start"));
- roomParams.add(new WebMarkupContainer("end"));
- add(form);
+ roomParams.add(new RoomTypeDropDown("room.roomtype"));
+ roomParams.add(new DateTimeField("start", modelStart));
+ roomParams.add(new DateTimeField("end", modelEnd));
+ add(form.setOutputMarkupId(true));
}
@Override
@@ -114,16 +128,4 @@ public class MessageDialog extends Abstr
// TODO Auto-generated method stub
}
-
- private static class UserTextRenderer implements ITextRenderer<User> {
- private static final long serialVersionUID = 1L;
-
- public String getText(User u) {
- return u == null ? "" : String.format("%s %s <%s>", u.getFirstname(), u.getLastname(), u.getAdresses().getEmail());
- }
-
- public String getText(User u, String expression) {
- return getText(u);
- }
- }
}
Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html?rev=1490517&r1=1490516&r2=1490517&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html Fri Jun 7 06:25:20 2013
@@ -40,7 +40,7 @@
<div wicket:id="container">
<div><b><wicket:ommessage key="1206"/> (<span wicket:id="unread"></span>)</b></div>
<div wicket:id="navigator"></div>
- <table style="width: 100%;">
+ <table id="messagesTable" style="width: 100%;">
<thead>
<tr>
<th><span wicket:id="orderById"></span><wicket:ommessage key="1205"/></th>
Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java?rev=1490517&r1=1490516&r2=1490517&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java Fri Jun 7 06:25:20 2013
@@ -49,12 +49,14 @@ import org.apache.wicket.markup.html.bas
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import ro.fortsoft.wicket.dashboard.web.util.ConfirmAjaxCallListener;
import com.googlecode.wicket.jquery.core.JQueryBehavior;
+//TODO not released yet import com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTableBehavior;
public class MessagesContactsPanel extends UserPanel {
private static final long serialVersionUID = 8098087441571734957L;
@@ -69,7 +71,7 @@ public class MessagesContactsPanel exten
private final WebMarkupContainer inbox = new WebMarkupContainer("inbox");
private final WebMarkupContainer sent = new WebMarkupContainer("sent");
private final WebMarkupContainer trash = new WebMarkupContainer("trash");
- private final MessageDialog newMessage = new MessageDialog("newMessage", Model.of(new PrivateMessage()));
+ private final MessageDialog newMessage = new MessageDialog("newMessage", new CompoundPropertyModel<PrivateMessage>(new PrivateMessage()));
private void setDefaultFolderClass() {
inbox.add(AttributeAppender.replace("class", "email inbox clickable"));
@@ -92,6 +94,7 @@ public class MessagesContactsPanel exten
selectedModel.setObject(id);
setDefaultFolderClass();
selectFolder(folder);
+ //TODO not released yet container.add(new FixedHeaderTableBehavior("#messagesTable", new Options("height", 100)));
if (target != null) {
target.add(folders, container);
}
@@ -127,7 +130,6 @@ public class MessagesContactsPanel exten
@Override
protected void onEvent(AjaxRequestTarget target) {
- newMessage.setModelObject(new PrivateMessage());
newMessage.open(target);
}
}).add(new JQueryBehavior(".email.new", "button")));
Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java?rev=1490517&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UserAutoCompleteTextField.java Fri Jun 7 06:25:20 2013
@@ -0,0 +1,90 @@
+/*
+ * 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.Application.getBean;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.openmeetings.data.user.dao.UsersDao;
+import org.apache.openmeetings.persistence.beans.user.Address;
+import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.persistence.beans.user.User.Type;
+import org.apache.wicket.util.convert.IConverter;
+
+import com.googlecode.wicket.jquery.core.renderer.ITextRenderer;
+import com.googlecode.wicket.jquery.ui.form.autocomplete.AutoCompleteTextField;
+
+public class UserAutoCompleteTextField extends AutoCompleteTextField<User> {
+ private static final long serialVersionUID = 1L;
+ private UserTextRenderer renderer;
+ private IConverter<User> converter = new IConverter<User>() {
+ private static final long serialVersionUID = 1L;
+
+ public User convertToObject(String value, Locale locale) {
+ if (value != null && value.equals(UserAutoCompleteTextField.this.getModelValue())) {
+ return UserAutoCompleteTextField.this.getModelObject();
+ } else {
+ //TODO validate input !!!!!!!!!!!!!!!!!
+ User u = new User();
+ u.setType(Type.contact);
+ u.setAdresses(new Address());
+ u.getAdresses().setEmail(value);
+ return u;
+ }
+ }
+
+ public String convertToString(User value, Locale locale) {
+ return UserAutoCompleteTextField.this.renderer.getText(value);
+ }
+ };
+
+ public UserAutoCompleteTextField(String id) {
+ super(id, new UserTextRenderer());
+ this.renderer = new UserTextRenderer(); //FIXME ugly
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <C> IConverter<C> getConverter(Class<C> type) {
+ if (type.isAssignableFrom(User.class)) {
+ return (IConverter<C>)converter;
+ } else {
+ return super.getConverter(type);
+ }
+ }
+
+ @Override
+ protected List<User> getChoices(String input) {
+ return getBean(UsersDao.class).get(input, 0, 10, null);
+ }
+
+ private static class UserTextRenderer implements ITextRenderer<User> {
+ private static final long serialVersionUID = 1L;
+
+ public String getText(User u) {
+ return u == null ? "" : String.format("%s %s <%s>", u.getFirstname(), u.getLastname(), u.getAdresses().getEmail());
+ }
+
+ public String getText(User u, String expression) {
+ return getText(u);
+ }
+ }
+}