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/27 08:17:11 UTC

svn commit: r1642038 - in /openmeetings/trunk/singlewebapp/openmeetings-web/src/main: java/org/apache/openmeetings/web/common/menu/ java/org/apache/openmeetings/web/room/ java/org/apache/openmeetings/web/room/activities/ webapp/css/

Author: solomax
Date: Thu Nov 27 07:17:11 2014
New Revision: 1642038

URL: http://svn.apache.org/r1642038
Log:
[OPENMEETINGS-1120] Activities section is improved

Modified:
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuFunctionsBehavior.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
    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/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/webapp/css/room.css
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuFunctionsBehavior.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuFunctionsBehavior.java?rev=1642038&r1=1642037&r2=1642038&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuFunctionsBehavior.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuFunctionsBehavior.java Thu Nov 27 07:17:11 2014
@@ -39,10 +39,14 @@ public class MenuFunctionsBehavior exten
 		this.menuId = menuId;
 	}
 	
+	public String getInitScript() {
+		return String.format("initMenu('%s', '%s');", menuContainerId, menuId);
+	}
+	
 	@Override
 	public void renderHead(Component component, IHeaderResponse response) {
 		super.renderHead(component, response);
 		response.render(JavaScriptHeaderItem.forReference(MENU_FUNCTIONS));
-		response.render(OnDomReadyHeaderItem.forScript(String.format("initMenu('%s', '%s');", menuContainerId, menuId)));
+		response.render(OnDomReadyHeaderItem.forScript(getInitScript()));
 	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java?rev=1642038&r1=1642037&r2=1642038&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java Thu Nov 27 07:17:11 2014
@@ -43,6 +43,7 @@ import org.apache.wicket.util.string.Str
 public class MenuPanel extends BasePanel {
 	private static final long serialVersionUID = 1L;
 	private final WebMarkupContainer menuContainer = new WebMarkupContainer("menuContainer");
+	private final MenuFunctionsBehavior mfb;
 
 	public MenuPanel(String id, List<MenuItem> menus) {
 		super(id);
@@ -96,9 +97,14 @@ public class MenuPanel extends BasePanel
 					}).setVisible(null != gl.getChildren()));
 			}
 		});
-		add(new MenuFunctionsBehavior(menuContainer.getMarkupId(), id));
+		add(mfb = new MenuFunctionsBehavior(menuContainer.getMarkupId(), id));
 	}
 	
+	public void update(AjaxRequestTarget target) {
+		target.add(menuContainer);
+		//target.appendJavaScript(String.format("$(function() {%s;});", mfb.getInitScript()));
+		target.appendJavaScript(mfb.getInitScript());
+	}
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);

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=1642038&r1=1642037&r2=1642038&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 Thu Nov 27 07:17:11 2014
@@ -405,8 +405,11 @@ public class RoomPanel extends BasePanel
 						updateUserMenuIcons(wsEvent.getHandler());
 						break;
 					case roomEnter:
-						activities.addActivity(m.getSentUserId(), Activity.Type.roomEnter, wsEvent.getHandler());
 						updateUserMenuIcons(wsEvent.getHandler());
+						users.setList(getUsers());
+						wsEvent.getHandler().add(userList);
+						activities.addActivity(m.getSentUserId(), Activity.Type.roomEnter, wsEvent.getHandler());
+						break;
 					case roomExit:
 						//TODO check user/remove tab
 						users.setList(getUsers());
@@ -521,7 +524,8 @@ public class RoomPanel extends BasePanel
 		pollVoteMenuItem.setActive(pollExists && notExternalUser && !getBean(PollDao.class).hasVoted(roomId, getUserId()));
 		pollResultMenuItem.setActive(pollExists || getBean(PollDao.class).getArchived(roomId).size() > 0);
 		//TODO sip menus
-		handler.add(menuPanel, askBtn.setVisible(!moder), shareBtn.setVisible(shareVisible));
+		menuPanel.update(handler);
+		handler.add(askBtn.setVisible(!moder), shareBtn.setVisible(shareVisible));
 	}
 	
 	private List<MenuItem> getMenu() {

Modified: 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=1642038&r1=1642037&r2=1642038&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html Thu Nov 27 07:17:11 2014
@@ -23,6 +23,14 @@
 	<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>
+	<div wicket:id="container" class="area ui-widget-content">
+		<div wicket:id="activities" class="activity item">
+			<div wicket:id="text"></div>
+			<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" role="button" title="Close">
+				<span class="ui-button-icon-primary ui-icon ui-icon-closethick"></span>
+				<span class="ui-button-text">Close</span>
+			</button>
+		</div>
+	</div>
 </wicket:panel>
 </html>

Modified: 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=1642038&r1=1642037&r2=1642038&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java Thu Nov 27 07:17:11 2014
@@ -19,14 +19,18 @@
 package org.apache.openmeetings.web.room.activities;
 
 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.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 java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.BasePanel;
 import org.apache.openmeetings.web.room.activities.Activity.Type;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
@@ -36,9 +40,9 @@ import org.apache.wicket.markup.head.IHe
 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.basic.Label;
 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;
@@ -52,20 +56,34 @@ public class ActivitiesPanel extends Bas
 	private enum Action {
 		accept, decline, close
 	};
-	private final Queue<Activity> activities = new ConcurrentLinkedQueue<Activity>();
+	private static ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() {
+		protected DateFormat initialValue() {
+			return new SimpleDateFormat("HH:mm:ss");
+		};
+	};
+	private final List<Activity> activities = new ArrayList<Activity>();
 	private final long roomId;
 	private final WebMarkupContainer container = new WebMarkupContainer("container");
 	private final AbstractDefaultAjaxBehavior action = new AbstractDefaultAjaxBehavior() {
 		private static final long serialVersionUID = 1L;
 
+		private Activity get(String uid) {
+			for (Activity a : activities) {
+				if (a.getUid().equals(uid)) {
+					return a;
+				}
+			}
+			return null;
+		}
+		
 		@Override
 		protected void respond(AjaxRequestTarget target) {
 			try {
-				long uid = getRequest().getRequestParameters().getParameterValue(PARAM_UID).toLong(); 
+				String uid = getRequest().getRequestParameters().getParameterValue(PARAM_UID).toString(); 
 				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);
+				Activity a = get(uid);
 				if (a != null) {
 					if (action == Action.close && (a.getType() == Type.roomEnter || a.getType() == Type.roomExit)) {
 						activities.remove(uid);
@@ -84,21 +102,35 @@ public class ActivitiesPanel extends Bas
 				log.error("Unexpected exception while processing activity action", e);
 			}
 		}
-	};/*
+	};
 	private ListView<Activity> lv = new ListView<Activity>("activities", activities) {
+		private static final long serialVersionUID = 1L;
+
 		@Override
-		protected void populateItem(ListItem<Activity> arg0) {
-			// TODO Auto-generated method stub
-			
+		protected void populateItem(ListItem<Activity> item) {
+			Activity a = item.getModelObject();
+			String text = "";
+			switch (a.getType()) {
+				case roomEnter:
+					text = ""; // TODO should this be fixed?
+					item.setVisible(false);
+					break;
+				case roomExit:
+				{
+					User u = getBean(UserDao.class).get(a.getSender());
+					text = String.format("%s %s %s [%s]", u.getFirstname(), u.getLastname(), WebSession.getString(1367), df.get().format(a.getCreated()));
+				}
+					break;
+			}
+			item.add(new Label("text", text));
 		}
-	};*/
+	};
 
 	public void addActivity(Long userId, Activity.Type type, AjaxRequestTarget target) {
-		if (getUserId() != userId) {
-			Activity a = new Activity(userId,  type);
-			//activities.put(a.getUid(), a);
+		//if (getUserId() != userId) {//FIXME should be replaced with client-id
+			activities.add(new Activity(userId,  type));
 			target.add(container);
-		}
+		//}
 	}
 	
 	public ActivitiesPanel(String id, long roomId) {
@@ -106,7 +138,7 @@ public class ActivitiesPanel extends Bas
 		this.roomId = roomId;
 		setOutputMarkupPlaceholderTag(true);
 		setMarkupId(id);
-		add(container.setOutputMarkupId(true));
+		add(container.add(lv).setOutputMarkupId(true));
 		add(action);
 	}
 	

Modified: 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=1642038&r1=1642037&r2=1642038&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/Activity.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/Activity.java Thu Nov 27 07:17:11 2014
@@ -1,6 +1,7 @@
 package org.apache.openmeetings.web.room.activities;
 
 import java.io.Serializable;
+import java.util.Date;
 import java.util.UUID;
 
 public class Activity implements Serializable {
@@ -12,12 +13,14 @@ public class Activity implements Seriali
 	}
 	private String uid;
 	private Long sender;
+	private Date created;
 	private Type type;
 	
 	public Activity(Long sender, Type type) {
 		this.uid = UUID.randomUUID().toString();
 		this.sender = sender;
 		this.type = type;
+		this.created = new Date(); //TODO timezone
 	}
 
 	public String getUid() {
@@ -43,4 +46,12 @@ public class Activity implements Seriali
 	public void setType(Type type) {
 		this.type = type;
 	}
+
+	public Date getCreated() {
+		return created;
+	}
+
+	public void setCreated(Date created) {
+		this.created = created;
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/room.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/room.css?rev=1642038&r1=1642037&r2=1642038&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/room.css (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/room.css Thu Nov 27 07:17:11 2014
@@ -102,3 +102,10 @@
 	max-height: 100px;
 	overflow-y: auto;
 }
+.activity.item {
+	position: relative;
+}
+.activity.item .ui-dialog-titlebar-close {
+	width: 20px;
+	height: 20px;
+}

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css?rev=1642038&r1=1642037&r2=1642038&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css Thu Nov 27 07:17:11 2014
@@ -48,6 +48,8 @@ html, body {
 
 #menu, #roomMenu {
 	background-color: #AFCBFB;
+	max-height: 30px;
+	overflow-y: hidden;
 }
 .ui-menubar .ui-menu {
 	width: 250px;