Author: solomax
Date: Thu Sep  1 06:57:49 2016
New Revision: 1758710

URL: http://svn.apache.org/viewvc?rev=1758710&view=rev
Log:
[OPENMEETINGS-1376] user list is improved

Modified:
    
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
    
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
    
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
 Thu Sep  1 06:57:49 2016
@@ -147,7 +147,7 @@ public abstract class BaseStreamWriter i
                                        closeStream();
                                }
                                if (++counter % 5000 == 0) {
-                                       log.debug("##REC:: Stream writer is 
still listening:: " + file.getName());;
+                                       log.debug("##REC:: Stream writer is 
still listening:: " + file.getName());
                                }
                        } catch (InterruptedException e) {
                                log.error("##REC:: [run]", e);

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/editRecordStreamSWF10.lzx
 Thu Sep  1 06:57:49 2016
@@ -635,7 +635,7 @@
                                var py = parent.y < 0 ? 5 : parent.y;
                                var maxWidth = Math.min(600, canvas.width - 
parent.x - 10)
                                        , maxHeight = Math.min(500, 
canvas.height - py - 10)
-                                       , newWidth = maxWidth, newHeight = 
maxHeight;;
+                                       , newWidth = maxWidth, newHeight = 
maxHeight;
                                if (item.cam_width > 240) {
                                        newWidth = maxWidth + item.cam_width - 
240;
                                }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 Thu Sep  1 06:57:49 2016
@@ -76,7 +76,7 @@ public class LangPanel extends AdminPane
        private final LangForm langForm;
        private FileUploadField fileUploadField;
 
-       final WebMarkupContainer listContainer = new 
WebMarkupContainer("listContainer");;
+       final WebMarkupContainer listContainer = new 
WebMarkupContainer("listContainer");
        Map.Entry<Long, Locale> language;
        
        @Override

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 Thu Sep  1 06:57:49 2016
@@ -327,21 +327,23 @@ public class Application extends Authent
                return c;
        }
        
-       public static List<Client> getRoomClients(long roomId) {
+       public static List<Client> getRoomClients(Long roomId) {
                List<Client> clients = new ArrayList<>();
-               Set<String> uids = ROOMS.get(roomId);
-               if (uids != null) {
-                       for (String uid : uids) {
-                               Client c = getOnlineClient(uid);
-                               if (c != null) {
-                                       clients.add(c);
+               if (roomId != null) {
+                       Set<String> uids = ROOMS.get(roomId);
+                       if (uids != null) {
+                               for (String uid : uids) {
+                                       Client c = getOnlineClient(uid);
+                                       if (c != null) {
+                                               clients.add(c);
+                                       }
                                }
                        }
                }
                return clients;
        }
        
-       public static Set<Long> getUserRooms(long userId) {
+       public static Set<Long> getUserRooms(Long userId) {
                Set<Long> result = new HashSet<>();
                for (Entry<Long, Set<String>> me : ROOMS.entrySet()) {
                        for (String uid : me.getValue()) {

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
 Thu Sep  1 06:57:49 2016
@@ -9,7 +9,7 @@
   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
@@ -32,10 +32,13 @@
 <wicket:panel>
        <script type="text/javascript">
                $(function() {
-                       Wicket.Event.subscribe('/ajax/call/failure', 
hideBusyIndicator);
-                       Wicket.Event.subscribe('/ajax/call/before', 
showBusyIndicator);
-                       Wicket.Event.subscribe('/ajax/call/success', 
hideBusyIndicator);
-                       Wicket.Event.subscribe('/ajax/call/complete', 
hideBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_FAILURE, hideBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_BEFORE, showBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_SUCCESS, hideBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_COMPLETE, 
hideBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.WebSocket.Opened, function() {
+                               Wicket.WebSocket.send("socketConnected");
+                       });
                });
        </script>
        <div wicket:id="topControls">

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
 Thu Sep  1 06:57:49 2016
@@ -45,7 +45,6 @@ import org.apache.openmeetings.web.app.W
 import org.apache.openmeetings.web.common.menu.MainMenuItem;
 import org.apache.openmeetings.web.common.menu.MenuItem;
 import org.apache.openmeetings.web.common.menu.MenuPanel;
-import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
 import org.apache.openmeetings.web.user.AboutDialog;
 import org.apache.openmeetings.web.user.ChatPanel;
@@ -69,10 +68,12 @@ import org.apache.wicket.markup.html.pan
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
+import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler;
 import org.apache.wicket.protocol.ws.api.message.AbortedMessage;
 import org.apache.wicket.protocol.ws.api.message.AbstractClientMessage;
 import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
 import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
+import org.apache.wicket.protocol.ws.api.message.TextMessage;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.wicketstuff.urlfragment.UrlFragment;
@@ -83,8 +84,9 @@ import com.googlecode.wicket.jquery.ui.w
 public class MainPanel extends Panel {
        private static final long serialVersionUID = 1L;
        private static final Logger log = 
Red5LoggerFactory.getLogger(MainPanel.class, webAppRootKey);
-       public final static String PARAM_USER_ID = "userId";
-       private Client client;
+       private static final WebMarkupContainer EMPTY = new 
WebMarkupContainer(CHILD_ID);
+       public static final String PARAM_USER_ID = "userId";
+       private Client client = null;
        private final MenuPanel menu;
        private final WebMarkupContainer topControls = new 
WebMarkupContainer("topControls");
        private final WebMarkupContainer topLinks = new 
WebMarkupContainer("topLinks");
@@ -92,18 +94,19 @@ public class MainPanel extends Panel {
        private final ChatPanel chat;
        private final MessageDialog newMessage;
        private final UserInfoDialog userInfo;
+       private BasePanel panel;
 
        public MainPanel(String id) {
-               this(id, new WebMarkupContainer(CHILD_ID));
+               this(id, null);
        }
 
-       public MainPanel(String id, WebMarkupContainer panel) {
+       public MainPanel(String id, BasePanel _panel) {
                super(id);
-               client = new Client(getSession().getId(), getUserId());
+               this.panel = _panel;
                
add(topControls.setOutputMarkupPlaceholderTag(true).setMarkupId("topControls"));
                menu = new MenuPanel("menu", getMainMenu());
                contents = new WebMarkupContainer("contents");
-               
add(contents.add(panel).setOutputMarkupId(true).setMarkupId("contents"));
+               add(contents.add(client == null ? EMPTY : 
_panel).setOutputMarkupId(true).setMarkupId("contents"));
                topControls.add(menu.setVisible(false), 
topLinks.setVisible(false).setOutputMarkupPlaceholderTag(true).setMarkupId("topLinks"));
                topLinks.add(new AjaxLink<Void>("messages") {
                        private static final long serialVersionUID = 1L;
@@ -203,31 +206,41 @@ public class MainPanel extends Panel {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void onConnect(ConnectedMessage message) {
-                               super.onConnect(message);
-                               
addOnlineUser(client.setPageId(message.getKey()));
-                               log.debug("WebSocketBehavior::onConnect [uid: 
{}, session: {}, key: {}]", client.getUid(), message.getSessionId(), 
message.getKey());
+                       protected void onConnect(ConnectedMessage msg) {
+                               super.onConnect(msg);
+                               client = new Client(getSession().getId(), 
msg.getKey().hashCode(), getUserId());
+                               addOnlineUser(client);
+                               log.debug("WebSocketBehavior::onConnect [uid: 
{}, session: {}, key: {}]", client.getUid(), msg.getSessionId(), msg.getKey());
                        }
-                       
+
+                       @Override
+                       protected void onMessage(WebSocketRequestHandler 
handler, TextMessage msg) {
+                               if ("socketConnected".equals(msg.getText())) {
+                                       if (panel != null) {
+                                               updateContents(panel, handler);
+                                       }
+                               }
+                       }
+
                        @Override
-                       protected void onAbort(AbortedMessage message) {
-                               super.onAbort(message);
-                               closeHandler(message);
+                       protected void onAbort(AbortedMessage msg) {
+                               super.onAbort(msg);
+                               closeHandler(msg);
                        }
                        
                        @Override
-                       protected void onClose(ClosedMessage message) {
-                               super.onClose(message);
-                               closeHandler(message);
+                       protected void onClose(ClosedMessage msg) {
+                               super.onClose(msg);
+                               closeHandler(msg);
                        }
                        
-                       private void closeHandler(AbstractClientMessage 
message) {
-                               if (MainPanel.this.getCurrentPanel() instanceof 
RoomPanel) {
-                                       RoomPanel rp = 
(RoomPanel)MainPanel.this.getCurrentPanel();
-                                       RoomMenuPanel.roomExit(rp);
+                       private void closeHandler(AbstractClientMessage msg) {
+                               if (client != null && client.getRoomId() != 
null) {
+                                       RoomMenuPanel.roomExit(client);
                                }
+                               log.debug("WebSocketBehavior::closeHandler 
[uid: {}, session: {}, key: {}]", client.getUid(), msg.getSessionId(), 
msg.getKey());
                                removeOnlineUser(client);
-                               log.debug("WebSocketBehavior::closeHandler 
[uid: {}, session: {}, key: {}]", client.getUid(), message.getSessionId(), 
message.getKey());
+                               client = null;
                        }
                });
        }
@@ -244,7 +257,7 @@ public class MainPanel extends Panel {
                                        public void onClick(AjaxRequestTarget 
target) {
                                                onClick(MainPanel.this, target);
                                        }
-                               }); 
+                               });
                        }
                        menu.add(new 
MenuItem(Application.getString(gl.getLabelId()), l));
                }
@@ -266,15 +279,25 @@ public class MainPanel extends Panel {
        public void updateContents(OmUrlFragment f, IPartialPageRequestHandler 
handler, boolean updateFragment) {
                BasePanel panel = getPanel(f.getArea(), f.getType());
                if (panel != null) {
-                       BasePanel prev = getCurrentPanel();
-                       if (prev != null) {
-                               prev.cleanup(handler);
+                       if (client != null) {
+                               updateContents(panel, handler);
+                       } else {
+                               this.panel = panel;
                        }
-                       handler.add(contents.replace(panel));
                        if (updateFragment) {
                                UrlFragment uf = new UrlFragment(handler);
                                uf.set(f.getArea().name(), f.getType());
                        }
+               }
+       }
+
+       private void updateContents(BasePanel panel, IPartialPageRequestHandler 
handler) {
+               if (panel != null) {
+                       BasePanel prev = getCurrentPanel();
+                       if (prev != null) {
+                               prev.cleanup(handler);
+                       }
+                       handler.add(contents.replace(panel));
                        panel.onMenuPanelLoad(handler);
                }
        }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 Thu Sep  1 06:57:49 2016
@@ -42,7 +42,6 @@ import org.apache.wicket.ajax.AjaxReques
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.request.IRequestParameters;
@@ -66,7 +65,6 @@ public class HashPage extends BaseInited
        private final VideoPlayer vp = new VideoPlayer("player", null);
        private String errorKey = "invalid.hash";
        private boolean error = true;
-       private Long roomId;
 
        public HashPage(PageParameters p) {
                StringValue secure = p.get(SECURE_HASH);
@@ -132,10 +130,7 @@ public class HashPage extends BaseInited
                // need to re-fetch Room object to initialize all collections
                Room room = getBean(RoomDao.class).get(roomId);
                if (room != null) {
-                       this.roomId = roomId;
-                       RoomPanel rp = new RoomPanel(CHILD_ID, room);
-                       replace(new MainPanel(PANEL_MAIN, rp));
-                       rp.onMenuPanelLoad(null);
+                       replace(new MainPanel(PANEL_MAIN, new 
RoomPanel(CHILD_ID, room)));
                }
        }
 
@@ -175,8 +170,5 @@ public class HashPage extends BaseInited
        public void renderHead(IHeaderResponse response) {
                super.renderHead(response);
                response.render(CssHeaderItem.forCSS(".invite.om-icon{display: 
none !important;}", "no-invite-to-room"));
-               if (roomId != null) {
-                       
response.render(OnDomReadyHeaderItem.forScript("roomLoad();"));
-               }
        }
 }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 Thu Sep  1 06:57:49 2016
@@ -433,7 +433,7 @@ public class RoomPanel extends BasePanel
                        getMainPanel().getChat().toggle(handler, true);
                }
                
handler.appendJavaScript("$(window).off('resize.openmeetings');");
-               RoomMenuPanel.roomExit(this);
+               RoomMenuPanel.roomExit(getClient());
                getMainPanel().getChat().roomExit(r, handler);
        }
 

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
 Thu Sep  1 06:57:49 2016
@@ -317,10 +317,10 @@ public class RoomMenuPanel extends Panel
                        update(handler);
                }
        }
-       
+
        public void exit(IPartialPageRequestHandler handler) {
                if (WebSession.getRights().contains(User.Right.Dashboard)) {
-                       roomExit(room, false);
+                       roomExit(room.getClient(), false);
                        room.getMainPanel().updateContents(ROOMS_PUBLIC, 
handler);
                } else {
                        String url = 
getBean(ConfigurationDao.class).getConfValue(CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY,
 String.class, "");
@@ -331,15 +331,14 @@ public class RoomMenuPanel extends Panel
                }
        }
 
-       public static void roomExit(RoomPanel room) {
-               roomExit(room, true);
+       public static void roomExit(Client c) {
+               roomExit(c, true);
        }
        
-       public static void roomExit(RoomPanel room, boolean broadcast) {
-               Client c = room.getClient();
+       public static void roomExit(Client c, boolean broadcast) {
                removeUserFromRoom(c);
                if (broadcast) {
-                       RoomPanel.broadcast(new 
RoomMessage(room.getRoom().getId(), c.getUserId(), RoomMessage.Type.roomExit));
+                       RoomPanel.broadcast(new RoomMessage(c.getRoomId(), 
c.getUserId(), RoomMessage.Type.roomExit));
                }
        }
 }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
 Thu Sep  1 06:57:49 2016
@@ -130,9 +130,9 @@ public class AdminCleanupInfoDialog exte
                try {
                        ((CleanupUnit)temp.getDefaultModelObject()).cleanup();
                        
((CleanupEntityUnit)profile.getDefaultModelObject()).cleanup();
-                       ((CleanupUnit)imp.getDefaultModelObject()).cleanup();;
+                       ((CleanupUnit)imp.getDefaultModelObject()).cleanup();
                        ((CleanupUnit)backup.getDefaultModelObject()).cleanup();
-                       
((CleanupEntityUnit)files.getDefaultModelObject()).cleanup();;
+                       
((CleanupEntityUnit)files.getDefaultModelObject()).cleanup();
                        
((CleanupEntityUnit)fin.getDefaultModelObject()).cleanup();
                        update(target);
                } catch (Exception e) {

Modified: 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
 Thu Sep  1 06:57:49 2016
@@ -147,7 +147,7 @@ public abstract class BaseStreamWriter i
                                        closeStream();
                                }
                                if (++counter % 5000 == 0) {
-                                       log.debug("##REC:: Stream writer is 
still listening:: " + file.getName());;
+                                       log.debug("##REC:: Stream writer is 
still listening:: " + file.getName());
                                }
                        } catch (InterruptedException e) {
                                log.error("##REC:: [run]", e);

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 Thu Sep  1 06:57:49 2016
@@ -76,7 +76,7 @@ public class LangPanel extends AdminPane
        private final LangForm langForm;
        private FileUploadField fileUploadField;
 
-       final WebMarkupContainer listContainer = new 
WebMarkupContainer("listContainer");;
+       final WebMarkupContainer listContainer = new 
WebMarkupContainer("listContainer");
        Map.Entry<Long, Locale> language;
        
        @Override

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 Thu Sep  1 06:57:49 2016
@@ -327,21 +327,23 @@ public class Application extends Authent
                return c;
        }
        
-       public static List<Client> getRoomClients(long roomId) {
+       public static List<Client> getRoomClients(Long roomId) {
                List<Client> clients = new ArrayList<>();
-               Set<String> uids = ROOMS.get(roomId);
-               if (uids != null) {
-                       for (String uid : uids) {
-                               Client c = getOnlineClient(uid);
-                               if (c != null) {
-                                       clients.add(c);
+               if (roomId != null) {
+                       Set<String> uids = ROOMS.get(roomId);
+                       if (uids != null) {
+                               for (String uid : uids) {
+                                       Client c = getOnlineClient(uid);
+                                       if (c != null) {
+                                               clients.add(c);
+                                       }
                                }
                        }
                }
                return clients;
        }
        
-       public static Set<Long> getUserRooms(long userId) {
+       public static Set<Long> getUserRooms(Long userId) {
                Set<Long> result = new HashSet<>();
                for (Entry<Long, Set<String>> me : ROOMS.entrySet()) {
                        for (String uid : me.getValue()) {

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
 Thu Sep  1 06:57:49 2016
@@ -9,7 +9,7 @@
   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
@@ -32,10 +32,13 @@
 <wicket:panel>
        <script type="text/javascript">
                $(function() {
-                       Wicket.Event.subscribe('/ajax/call/failure', 
hideBusyIndicator);
-                       Wicket.Event.subscribe('/ajax/call/before', 
showBusyIndicator);
-                       Wicket.Event.subscribe('/ajax/call/success', 
hideBusyIndicator);
-                       Wicket.Event.subscribe('/ajax/call/complete', 
hideBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_FAILURE, hideBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_BEFORE, showBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_SUCCESS, hideBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_COMPLETE, 
hideBusyIndicator);
+                       
Wicket.Event.subscribe(Wicket.Event.Topic.WebSocket.Opened, function() {
+                               Wicket.WebSocket.send("socketConnected");
+                       });
                });
        </script>
        <div wicket:id="topControls">

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
 Thu Sep  1 06:57:49 2016
@@ -45,7 +45,6 @@ import org.apache.openmeetings.web.app.W
 import org.apache.openmeetings.web.common.menu.MainMenuItem;
 import org.apache.openmeetings.web.common.menu.MenuItem;
 import org.apache.openmeetings.web.common.menu.MenuPanel;
-import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
 import org.apache.openmeetings.web.user.AboutDialog;
 import org.apache.openmeetings.web.user.ChatPanel;
@@ -69,10 +68,12 @@ import org.apache.wicket.markup.html.pan
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
+import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler;
 import org.apache.wicket.protocol.ws.api.message.AbortedMessage;
 import org.apache.wicket.protocol.ws.api.message.AbstractClientMessage;
 import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
 import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
+import org.apache.wicket.protocol.ws.api.message.TextMessage;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.wicketstuff.urlfragment.UrlFragment;
@@ -83,8 +84,9 @@ import com.googlecode.wicket.jquery.ui.w
 public class MainPanel extends Panel {
        private static final long serialVersionUID = 1L;
        private static final Logger log = 
Red5LoggerFactory.getLogger(MainPanel.class, webAppRootKey);
-       public final static String PARAM_USER_ID = "userId";
-       private Client client;
+       private static final WebMarkupContainer EMPTY = new 
WebMarkupContainer(CHILD_ID);
+       public static final String PARAM_USER_ID = "userId";
+       private Client client = null;
        private final MenuPanel menu;
        private final WebMarkupContainer topControls = new 
WebMarkupContainer("topControls");
        private final WebMarkupContainer topLinks = new 
WebMarkupContainer("topLinks");
@@ -92,18 +94,19 @@ public class MainPanel extends Panel {
        private final ChatPanel chat;
        private final MessageDialog newMessage;
        private final UserInfoDialog userInfo;
+       private BasePanel panel;
 
        public MainPanel(String id) {
-               this(id, new WebMarkupContainer(CHILD_ID));
+               this(id, null);
        }
 
-       public MainPanel(String id, WebMarkupContainer panel) {
+       public MainPanel(String id, BasePanel _panel) {
                super(id);
-               client = new Client(getSession().getId(), getUserId());
+               this.panel = _panel;
                
add(topControls.setOutputMarkupPlaceholderTag(true).setMarkupId("topControls"));
                menu = new MenuPanel("menu", getMainMenu());
                contents = new WebMarkupContainer("contents");
-               
add(contents.add(panel).setOutputMarkupId(true).setMarkupId("contents"));
+               add(contents.add(client == null ? EMPTY : 
_panel).setOutputMarkupId(true).setMarkupId("contents"));
                topControls.add(menu.setVisible(false), 
topLinks.setVisible(false).setOutputMarkupPlaceholderTag(true).setMarkupId("topLinks"));
                topLinks.add(new AjaxLink<Void>("messages") {
                        private static final long serialVersionUID = 1L;
@@ -203,31 +206,41 @@ public class MainPanel extends Panel {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void onConnect(ConnectedMessage message) {
-                               super.onConnect(message);
-                               
addOnlineUser(client.setPageId(message.getKey()));
-                               log.debug("WebSocketBehavior::onConnect [uid: 
{}, session: {}, key: {}]", client.getUid(), message.getSessionId(), 
message.getKey());
+                       protected void onConnect(ConnectedMessage msg) {
+                               super.onConnect(msg);
+                               client = new Client(getSession().getId(), 
msg.getKey().hashCode(), getUserId());
+                               addOnlineUser(client);
+                               log.debug("WebSocketBehavior::onConnect [uid: 
{}, session: {}, key: {}]", client.getUid(), msg.getSessionId(), msg.getKey());
                        }
-                       
+
+                       @Override
+                       protected void onMessage(WebSocketRequestHandler 
handler, TextMessage msg) {
+                               if ("socketConnected".equals(msg.getText())) {
+                                       if (panel != null) {
+                                               updateContents(panel, handler);
+                                       }
+                               }
+                       }
+
                        @Override
-                       protected void onAbort(AbortedMessage message) {
-                               super.onAbort(message);
-                               closeHandler(message);
+                       protected void onAbort(AbortedMessage msg) {
+                               super.onAbort(msg);
+                               closeHandler(msg);
                        }
                        
                        @Override
-                       protected void onClose(ClosedMessage message) {
-                               super.onClose(message);
-                               closeHandler(message);
+                       protected void onClose(ClosedMessage msg) {
+                               super.onClose(msg);
+                               closeHandler(msg);
                        }
                        
-                       private void closeHandler(AbstractClientMessage 
message) {
-                               if (MainPanel.this.getCurrentPanel() instanceof 
RoomPanel) {
-                                       RoomPanel rp = 
(RoomPanel)MainPanel.this.getCurrentPanel();
-                                       RoomMenuPanel.roomExit(rp);
+                       private void closeHandler(AbstractClientMessage msg) {
+                               if (client != null && client.getRoomId() != 
null) {
+                                       RoomMenuPanel.roomExit(client);
                                }
+                               log.debug("WebSocketBehavior::closeHandler 
[uid: {}, session: {}, key: {}]", client.getUid(), msg.getSessionId(), 
msg.getKey());
                                removeOnlineUser(client);
-                               log.debug("WebSocketBehavior::closeHandler 
[uid: {}, session: {}, key: {}]", client.getUid(), message.getSessionId(), 
message.getKey());
+                               client = null;
                        }
                });
        }
@@ -244,7 +257,7 @@ public class MainPanel extends Panel {
                                        public void onClick(AjaxRequestTarget 
target) {
                                                onClick(MainPanel.this, target);
                                        }
-                               }); 
+                               });
                        }
                        menu.add(new 
MenuItem(Application.getString(gl.getLabelId()), l));
                }
@@ -266,15 +279,25 @@ public class MainPanel extends Panel {
        public void updateContents(OmUrlFragment f, IPartialPageRequestHandler 
handler, boolean updateFragment) {
                BasePanel panel = getPanel(f.getArea(), f.getType());
                if (panel != null) {
-                       BasePanel prev = getCurrentPanel();
-                       if (prev != null) {
-                               prev.cleanup(handler);
+                       if (client != null) {
+                               updateContents(panel, handler);
+                       } else {
+                               this.panel = panel;
                        }
-                       handler.add(contents.replace(panel));
                        if (updateFragment) {
                                UrlFragment uf = new UrlFragment(handler);
                                uf.set(f.getArea().name(), f.getType());
                        }
+               }
+       }
+
+       private void updateContents(BasePanel panel, IPartialPageRequestHandler 
handler) {
+               if (panel != null) {
+                       BasePanel prev = getCurrentPanel();
+                       if (prev != null) {
+                               prev.cleanup(handler);
+                       }
+                       handler.add(contents.replace(panel));
                        panel.onMenuPanelLoad(handler);
                }
        }

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 Thu Sep  1 06:57:49 2016
@@ -42,7 +42,6 @@ import org.apache.wicket.ajax.AjaxReques
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.request.IRequestParameters;
@@ -66,7 +65,6 @@ public class HashPage extends BaseInited
        private final VideoPlayer vp = new VideoPlayer("player", null);
        private String errorKey = "invalid.hash";
        private boolean error = true;
-       private Long roomId;
 
        public HashPage(PageParameters p) {
                StringValue secure = p.get(SECURE_HASH);
@@ -132,10 +130,7 @@ public class HashPage extends BaseInited
                // need to re-fetch Room object to initialize all collections
                Room room = getBean(RoomDao.class).get(roomId);
                if (room != null) {
-                       this.roomId = roomId;
-                       RoomPanel rp = new RoomPanel(CHILD_ID, room);
-                       replace(new MainPanel(PANEL_MAIN, rp));
-                       rp.onMenuPanelLoad(null);
+                       replace(new MainPanel(PANEL_MAIN, new 
RoomPanel(CHILD_ID, room)));
                }
        }
 
@@ -175,8 +170,5 @@ public class HashPage extends BaseInited
        public void renderHead(IHeaderResponse response) {
                super.renderHead(response);
                response.render(CssHeaderItem.forCSS(".invite.om-icon{display: 
none !important;}", "no-invite-to-room"));
-               if (roomId != null) {
-                       
response.render(OnDomReadyHeaderItem.forScript("roomLoad();"));
-               }
        }
 }

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 Thu Sep  1 06:57:49 2016
@@ -436,7 +436,7 @@ public class RoomPanel extends BasePanel
                        getMainPanel().getChat().toggle(handler, true);
                }
                
handler.appendJavaScript("$(window).off('resize.openmeetings');");
-               RoomMenuPanel.roomExit(this);
+               RoomMenuPanel.roomExit(getClient());
                getMainPanel().getChat().roomExit(r, handler);
        }
 

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
 Thu Sep  1 06:57:49 2016
@@ -317,10 +317,10 @@ public class RoomMenuPanel extends Panel
                        update(handler);
                }
        }
-       
+
        public void exit(IPartialPageRequestHandler handler) {
                if (WebSession.getRights().contains(User.Right.Dashboard)) {
-                       roomExit(room, false);
+                       roomExit(room.getClient(), false);
                        room.getMainPanel().updateContents(ROOMS_PUBLIC, 
handler);
                } else {
                        String url = 
getBean(ConfigurationDao.class).getConfValue(CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY,
 String.class, "");
@@ -331,15 +331,14 @@ public class RoomMenuPanel extends Panel
                }
        }
 
-       public static void roomExit(RoomPanel room) {
-               roomExit(room, true);
+       public static void roomExit(Client c) {
+               roomExit(c, true);
        }
        
-       public static void roomExit(RoomPanel room, boolean broadcast) {
-               Client c = room.getClient();
+       public static void roomExit(Client c, boolean broadcast) {
                removeUserFromRoom(c);
                if (broadcast) {
-                       RoomPanel.broadcast(new 
RoomMessage(room.getRoom().getId(), c.getUserId(), RoomMessage.Type.roomExit));
+                       RoomPanel.broadcast(new RoomMessage(c.getRoomId(), 
c.getUserId(), RoomMessage.Type.roomExit));
                }
        }
 }

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java?rev=1758710&r1=1758709&r2=1758710&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
 Thu Sep  1 06:57:49 2016
@@ -130,9 +130,9 @@ public class AdminCleanupInfoDialog exte
                try {
                        ((CleanupUnit)temp.getDefaultModelObject()).cleanup();
                        
((CleanupEntityUnit)profile.getDefaultModelObject()).cleanup();
-                       ((CleanupUnit)imp.getDefaultModelObject()).cleanup();;
+                       ((CleanupUnit)imp.getDefaultModelObject()).cleanup();
                        ((CleanupUnit)backup.getDefaultModelObject()).cleanup();
-                       
((CleanupEntityUnit)files.getDefaultModelObject()).cleanup();;
+                       
((CleanupEntityUnit)files.getDefaultModelObject()).cleanup();
                        
((CleanupEntityUnit)fin.getDefaultModelObject()).cleanup();
                        update(target);
                } catch (Exception e) {



Reply via email to