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;