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 2014/11/18 09:51:42 UTC

svn commit: r1640284 - in /openmeetings/trunk/singlewebapp: openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/ openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/ openmeetings-db/src/main/java/org/apache/openme...

Author: solomax
Date: Tue Nov 18 08:51:42 2014
New Revision: 1640284

URL: http://svn.apache.org/r1640284
Log:
[OPENMEETINGS-1120] Activities panel initial check-in

Added:
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/Activity.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/activities.css
Modified:
    openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java
    openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
    openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/chat.css

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java Tue Nov 18 08:51:42 2014
@@ -446,7 +446,7 @@ public class RoomManager implements IRoo
 			r.setAllowRecording(allowRecording);
 			
 			r.setChatHidden(hideChat);
-			r.setHideActivitiesAndActions(hideActivitiesAndActions);
+			r.setActivitiesHidden(hideActivitiesAndActions);
 			r.setHideActionsMenu(hideActionsMenu);
 			r.setHideFilesExplorer(hideFilesExplorer);
 			r.setHideScreenSharing(hideScreenSharing);	
@@ -787,7 +787,7 @@ public class RoomManager implements IRoo
 			r.setAllowRecording(allowRecording);
 			
 			r.setChatHidden(hideChat);
-			r.setHideActivitiesAndActions(hideActivitiesAndActions);
+			r.setActivitiesHidden(hideActivitiesAndActions);
 			r.setHideActionsMenu(hideActionsMenu);
 			r.setHideFilesExplorer(hideFilesExplorer);
 			r.setHideScreenSharing(hideScreenSharing);

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java Tue Nov 18 08:51:42 2014
@@ -177,7 +177,7 @@ public class LdapLoginManagement {
 			r = new InputStreamReader(new FileInputStream(new File(OmFileHelper.getConfDir(), ldapConfig.getConfigFileName())), "UTF-8");
 			config.load(r);
 		} catch (Exception e) {
-			log.error("Error on LdapLogin : Configurationdata couldnt be retrieved!");
+			log.error("Error on LdapLogin : Configurationdata couldn't be retrieved!");
 			return null;
 		} finally {
 			if (r != null) {

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java Tue Nov 18 08:51:42 2014
@@ -195,8 +195,8 @@ public class Room implements IDataProvid
 	private boolean chatHidden = false;
 
 	@Column(name = "hide_activities_and_actions")
-	@Element(data = true, required = false)
-	private Boolean hideActivitiesAndActions = false;
+	@Element(name = "hideActivitiesAndActions", data = true, required = false)
+	private boolean activitiesHidden = false;
 
 	@Column(name = "hide_files_explorer")
 	@Element(data = true, required = false)
@@ -469,12 +469,12 @@ public class Room implements IDataProvid
 		this.chatHidden = chatHidden;
 	}
 
-	public Boolean getHideActivitiesAndActions() {
-		return hideActivitiesAndActions;
+	public boolean isActivitiesHidden() {
+		return activitiesHidden;
 	}
 
-	public void setHideActivitiesAndActions(Boolean hideActivitiesAndActions) {
-		this.hideActivitiesAndActions = hideActivitiesAndActions;
+	public void setActivitiesHidden(boolean activitiesHidden) {
+		this.activitiesHidden = activitiesHidden;
 	}
 
 	public Boolean getHideFilesExplorer() {

Modified: openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java Tue Nov 18 08:51:42 2014
@@ -523,7 +523,7 @@ public class ImportInitvalues {
 		r.setAllowRecording(true);
 		
 		r.setChatHidden(false);
-		r.setHideActivitiesAndActions(false);
+		r.setActivitiesHidden(false);
 		r.setHideActionsMenu(false);
 		r.setHideFilesExplorer(false);
 		r.setHideScreenSharing(false);	

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java Tue Nov 18 08:51:42 2014
@@ -168,7 +168,7 @@ public class RoomForm extends AdminBaseF
 
 		add(new CheckBox("hideTopBar"));
 		add(new CheckBox("chatHidden"));
-		add(new CheckBox("hideActivitiesAndActions"));
+		add(new CheckBox("activitiesHidden"));
 		add(new CheckBox("hideFilesExplorer"));
 		add(new CheckBox("hideActionsMenu"));
 		add(new CheckBox("hideScreenSharing"));

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html Tue Nov 18 08:51:42 2014
@@ -143,7 +143,7 @@
 				                <label><wicket:ommessage key="1436" /></label><input type="checkbox" class="formcheckbox" wicket:id="chatHidden" />
 				            </div>
                             <div class="formelement">
-                                <label><wicket:ommessage key="1437" /></label><input type="checkbox" class="formcheckbox" wicket:id="hideActivitiesAndActions" />
+                                <label><wicket:ommessage key="1437" /></label><input type="checkbox" class="formcheckbox" wicket:id="activitiesHidden" />
 				            </div>
                             <div class="formelement">
                                 <label><wicket:ommessage key="1438" /></label><input type="checkbox" class="formcheckbox" wicket:id="hideFilesExplorer" />

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html Tue Nov 18 08:51:42 2014
@@ -62,6 +62,7 @@
 		<div wicket:id="createPoll"></div>
 		<div wicket:id="vote"></div>
 		<div wicket:id="pollResults"></div>
+		<div wicket:id="activitiesPanel"></div>
 	</div>
 	<div wicket:id="accessDenied"></div>
 </wicket:panel>

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Tue Nov 18 08:51:42 2014
@@ -70,6 +70,8 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.common.tree.MyRecordingTreeProvider;
 import org.apache.openmeetings.web.common.tree.PublicRecordingTreeProvider;
 import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.room.activities.ActivitiesPanel;
+import org.apache.openmeetings.web.room.activities.Activity;
 import org.apache.openmeetings.web.room.message.RoomMessage;
 import org.apache.openmeetings.web.room.poll.CreatePollDialog;
 import org.apache.openmeetings.web.room.poll.PollResultsDialog;
@@ -224,6 +226,7 @@ public class RoomPanel extends BasePanel
 	private final boolean showFiles;
 	private final Button shareBtn = new Button("share");
 	private final Button askBtn = new Button("ask");
+	private final ActivitiesPanel activities;
 	
 	public RoomPanel(String id, long _roomId) {
 		this(id, getBean(RoomDao.class).get(_roomId));
@@ -379,6 +382,7 @@ public class RoomPanel extends BasePanel
 		room.add(createPoll = new CreatePollDialog("createPoll", roomId));
 		room.add(vote = new VoteDialog("vote", roomId));
 		room.add(pollResults = new PollResultsDialog("pollResults", roomId));
+		room.add((activities = new ActivitiesPanel("activitiesPanel", roomId)).setVisible(!r.isActivitiesHidden()));
 		add(room, accessDenied);
 	}
 
@@ -401,11 +405,13 @@ public class RoomPanel extends BasePanel
 						updateUserMenuIcons(wsEvent.getHandler());
 						break;
 					case roomEnter:
+						activities.addActivity(m.getSentUserId(), Activity.Type.roomEnter, wsEvent.getHandler());
 						updateUserMenuIcons(wsEvent.getHandler());
 					case roomExit:
 						//TODO check user/remove tab
 						users.setList(getUsers());
 						wsEvent.getHandler().add(userList);
+						activities.addActivity(m.getSentUserId(), Activity.Type.roomExit, wsEvent.getHandler());
 						break;
 					default:
 						break;

Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html?rev=1640284&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html Tue Nov 18 08:51:42 2014
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+	<div class="ui-widget-header">
+		<div onclick="toggleActivities();" class="control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:ommessage key="1363"/></div></div>
+	</div>
+	<div wicket:id="container" class="area ui-widget-content"></div>
+</wicket:panel>
+</html>

Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java?rev=1640284&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java Tue Nov 18 08:51:42 2014
@@ -0,0 +1,119 @@
+/*
+ * 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.room.activities;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.room.RoomPanel.isModerator;
+
+import java.util.Map;
+import java.util.Queue;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+import org.apache.openmeetings.web.common.BasePanel;
+import org.apache.openmeetings.web.room.activities.Activity.Type;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class ActivitiesPanel extends BasePanel {
+	private static final long serialVersionUID = 1L;
+	private static final Logger log = Red5LoggerFactory.getLogger(ActivitiesPanel.class, webAppRootKey);
+	private static final String PARAM_UID = "uid";
+	private static final String ACTION = "action";
+	private static final String PARAM_ROOM_ID = "roomid";
+	private enum Action {
+		accept, decline, close
+	};
+	private final Queue<Activity> activities = new ConcurrentLinkedQueue<Activity>();
+	private final long roomId;
+	private final WebMarkupContainer container = new WebMarkupContainer("container");
+	private final AbstractDefaultAjaxBehavior action = new AbstractDefaultAjaxBehavior() {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected void respond(AjaxRequestTarget target) {
+			try {
+				long uid = getRequest().getRequestParameters().getParameterValue(PARAM_UID).toLong(); 
+				long roomId = getRequest().getRequestParameters().getParameterValue(PARAM_ROOM_ID).toLong();
+				assert(ActivitiesPanel.this.roomId == roomId);
+				Action action = Action.valueOf(getRequest().getRequestParameters().getParameterValue(ACTION).toString());
+				Activity a = null;//activities.get(uid);
+				if (a != null) {
+					if (action == Action.close && (a.getType() == Type.roomEnter || a.getType() == Type.roomExit)) {
+						activities.remove(uid);
+					} else if (isModerator(getUserId(), roomId)) {
+						switch (a.getType()) {
+							case askModeration:
+								break;
+							default:
+								break;	
+						}
+					}
+				} else {
+					log.error("It seems like we are being hacked!!!!");
+				}
+			} catch (Exception e) {
+				log.error("Unexpected exception while processing activity action", e);
+			}
+		}
+	};/*
+	private ListView<Activity> lv = new ListView<Activity>("activities", activities) {
+		@Override
+		protected void populateItem(ListItem<Activity> arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+	};*/
+
+	public void addActivity(Long userId, Activity.Type type, AjaxRequestTarget target) {
+		if (getUserId() != userId) {
+			Activity a = new Activity(userId,  type);
+			//activities.put(a.getUid(), a);
+			target.add(container);
+		}
+	}
+	
+	public ActivitiesPanel(String id, long roomId) {
+		super(id);
+		this.roomId = roomId;
+		setOutputMarkupPlaceholderTag(true);
+		setMarkupId(id);
+		add(container.setOutputMarkupId(true));
+		add(action);
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(ActivitiesPanel.class, "activities.js"))));
+		response.render(CssHeaderItem.forUrl("css/activities.css"));
+	}
+}

Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/Activity.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/Activity.java?rev=1640284&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/Activity.java (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/Activity.java Tue Nov 18 08:51:42 2014
@@ -0,0 +1,46 @@
+package org.apache.openmeetings.web.room.activities;
+
+import java.io.Serializable;
+import java.util.UUID;
+
+public class Activity implements Serializable {
+	private static final long serialVersionUID = 1L;
+	public enum Type { //TODO maybe additional type is not necessary
+		roomEnter
+		, roomExit
+		, askModeration //TODO check
+	}
+	private String uid;
+	private Long sender;
+	private Type type;
+	
+	public Activity(Long sender, Type type) {
+		this.uid = UUID.randomUUID().toString();
+		this.sender = sender;
+		this.type = type;
+	}
+
+	public String getUid() {
+		return uid;
+	}
+
+	public void setUid(String uid) {
+		this.uid = uid;
+	}
+
+	public Long getSender() {
+		return sender;
+	}
+
+	public void setSender(Long sender) {
+		this.sender = sender;
+	}
+
+	public Type getType() {
+		return type;
+	}
+
+	public void setType(Type type) {
+		this.type = type;
+	}
+}

Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js?rev=1640284&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js Tue Nov 18 08:51:42 2014
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+var closeBlock = "<span class='ui-icon ui-icon-close' role='presentation'></span>"
+	, closedHeight = "20px", openedHeight = "345px";
+function openActivities() {
+	if ($('#activitiesPanel').height() < 24) {
+		$('#activitiesPanel .control.block .ui-icon').removeClass('ui-icon-carat-1-n').addClass('ui-icon-carat-1-s');
+		$('#activitiesPanel').animate({height: openedHeight}, 1000);
+	}
+}
+function closeActivities() {
+	var activities = $('#activitiesPanel');
+	if ($('#activitiesPanel').height() > 24) {
+		$('#activitiesPanel .control.block .ui-icon').removeClass('ui-icon-carat-1-s').addClass('ui-icon-carat-1-n');
+		activities.animate({height: closedHeight}, 1000);
+	}
+}
+function toggleActivities() {
+	if ($('#activitiesPanel').height() < 24) {
+		openActivities();
+	} else {
+		closeActivities();
+	}
+}

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html Tue Nov 18 08:51:42 2014
@@ -21,7 +21,7 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
 	<div id="chat" class="ui-widget-header">
-		<div id="controlBlock" onclick="toggleChat();" class="ui-widget-header ui-state-active"><div id="control" class="ui-icon ui-icon-carat-1-n sort-icon"></div></div>
+		<div onclick="toggleChat();" class=" control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:ommessage key="244"/></div></div>
 		<div id="chatTabs">
 			<ul>
 				<li><a href="#chatTab-all"><wicket:ommessage key="1494"/></a></li>

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java Tue Nov 18 08:51:42 2014
@@ -54,6 +54,7 @@ import org.apache.wicket.ajax.json.JSONE
 import org.apache.wicket.ajax.json.JSONObject;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
@@ -66,7 +67,6 @@ import org.apache.wicket.protocol.ws.api
 import org.apache.wicket.protocol.ws.api.registry.IWebSocketConnectionRegistry;
 import org.apache.wicket.protocol.ws.api.registry.PageIdKey;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
@@ -146,7 +146,6 @@ public class ChatPanel extends BasePanel
 
 	public ChatPanel(String id) {
 		super(id);
-		setOutputMarkupId(true);
 		setOutputMarkupPlaceholderTag(true);
 		setMarkupId(id);
 
@@ -198,14 +197,11 @@ public class ChatPanel extends BasePanel
 		target.appendJavaScript(sb);
 	}
 	
-	private ResourceReference newResourceReference() {
-		return new JavaScriptResourceReference(ChatPanel.class, "chat.js");
-	}
-	
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
-		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(newResourceReference())));
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(ChatPanel.class, "chat.js"))));
+		response.render(CssHeaderItem.forUrl("css/chat.css"));
 		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("acceptMessage", acceptMessage, explicit(PARAM_ROOM_ID), explicit(PARAM_MSG_ID)), "acceptMessage")));
 	}
 	

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js Tue Nov 18 08:51:42 2014
@@ -20,7 +20,7 @@ var chatTabs, tabTemplate = "<li><a href
 	, msgTemplate = "<div id='chat-msg-id-#{id}'><span class='from'>#{from}</span><span class='date'>#{sent}</span>#{msg}</div>"
 	, acceptTemplate = "<span class='tick om-icon align-right clickable' data-msgid='#{msgid}' data-roomid='#{roomid}' onclick='var e=$(this);acceptMessage(e.data(\"roomid\"),e.data(\"msgid\"));e.parent().remove();'></span>"
 	, closeBlock = "<span class='ui-icon ui-icon-close' role='presentation'></span>"
-	, closedHeight = "16px", openedHeight = "345px";
+	, closedHeight = "20px", openedHeight = "345px";
 $(function() {
 	Wicket.Event.subscribe("/websocket/message", function(jqEvent, msg) {
 		var m = jQuery.parseJSON(msg);
@@ -45,21 +45,21 @@ $(function() {
 	});
 });
 function openChat() {
-	if ($('#chatPanel').height() < 20) {
-		$('#chat #controlBlock #control').removeClass('ui-icon-carat-1-n').addClass('ui-icon-carat-1-s');
+	if ($('#chatPanel').height() < 24) {
+		$('#chat .control.block .ui-icon').removeClass('ui-icon-carat-1-n').addClass('ui-icon-carat-1-s');
 		$('#chatPanel, #chat').animate({height: openedHeight}, 1000);
 	}
 }
 function closeChat() {
 	var chat = $('#chatPanel');
-	if ($('#chatPanel').height() > 20) {
-		$('#chat #controlBlock #control').removeClass('ui-icon-carat-1-s').addClass('ui-icon-carat-1-n');
-		chat.animate({height: "16px"}, 1000);
+	if ($('#chatPanel').height() > 24) {
+		$('#chat .control.block .ui-icon').removeClass('ui-icon-carat-1-s').addClass('ui-icon-carat-1-n');
+		chat.animate({height: closedHeight}, 1000);
 		$('#chatPanel, #chat').animate({height: closedHeight}, 1000);
 	}
 }
 function toggleChat() {
-	if ($('#chatPanel').height() < 20) {
+	if ($('#chatPanel').height() < 24) {
 		openChat();
 	} else {
 		closeChat();

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java Tue Nov 18 08:51:42 2014
@@ -29,11 +29,10 @@ import java.util.Map;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.wicket.ajax.json.JSONException;
+import org.apache.wicket.ajax.json.JSONWriter;
 import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
 import org.apache.wicket.validation.Validatable;
-import org.json.JSONException;
-import org.json.JSONWriter;
-
 import org.wicketstuff.select2.ChoiceProvider;
 import org.wicketstuff.select2.Response;
 

Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/activities.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/activities.css?rev=1640284&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/activities.css (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/activities.css Tue Nov 18 08:51:42 2014
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+#activitiesPanel {
+	position: fixed;
+	z-index: 2000;
+	bottom: 0px;
+	left: 10px;
+	width: 600px;
+	height: 20px;
+}
+#activitiesPanel .control.block .ui-icon {
+	text-align: center;
+}
+#activitiesPanel .control.block .label {
+	display: inline-block;
+	padding-left: 20px;
+}
+#activitiesPanel .area {
+	height: 310px;
+	overflow-y: auto;
+	padding: 5px;
+}
\ No newline at end of file

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/chat.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/chat.css?rev=1640284&r1=1640283&r2=1640284&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/chat.css (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/chat.css Tue Nov 18 08:51:42 2014
@@ -22,10 +22,10 @@
 	bottom: 0px;
 	right: 10px;
 	width: 600px;
-	height: 16px;
+	height: 20px;
 }
 #chatPanel #chat {
-	height: 16px;
+	height: 20px;
 }
 #chatPanel #chat .btn-toolbar {
 	margin-top: 2px;
@@ -48,10 +48,12 @@
 	padding: 2px .5em;
 	float: left;
 }
-#chatPanel #chat #controlBlock #control {
+#chatPanel #chat .control.block .ui-icon {
 	text-align: center;
-	margin-left: 50%;
-	margin-right: 50%;
+}
+#chatPanel #chat .control.block .label {
+	display: inline-block;
+	padding-left: 20px;
 }
 #chatPanel #chat .messageArea .date {
     margin-right: 5px;