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;


Reply via email to