Author: solomax
Date: Thu Sep  4 13:08:14 2014
New Revision: 1622469

URL: http://svn.apache.org/r1622469
Log:
[OPENMEETINGS-1045] screen-sharing action is added

Added:
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
Modified:
    
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/webapp/css/jquery.ui.menubar.css

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=1622469&r1=1622468&r2=1622469&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 Sep  4 13:08:14 2014
@@ -28,6 +28,7 @@ import org.apache.wicket.markup.html.Web
 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.util.string.Strings;
 
 /**
  * Loads the menu items into the main area
@@ -62,9 +63,12 @@ public class MenuPanel extends BasePanel
                                        link.add(new 
AttributeAppender("onclick", "return false;"));
                                }
                                item.add(link.add(new Label("label", 
gl.getName()).setRenderBodyOnly(true)));
-                               if (gl.getCssClass() != null) {
+                               if (!Strings.isEmpty(gl.getCssClass())) {
                                        
link.add(AttributeAppender.append("class", gl.getCssClass()));
                                }
+                               if (!Strings.isEmpty(gl.getDesc())) {
+                                       
link.add(AttributeAppender.append("title", gl.getDesc()));
+                               }
                                item.add(new WebMarkupContainer("childItems")
                                                .add(new 
ListView<MenuItem>("childItem", gl.getChildren()) {
                                                        private static final 
long serialVersionUID = 1L;

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=1622469&r1=1622468&r2=1622469&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 Sep  4 13:08:14 2014
@@ -19,34 +19,22 @@
 package org.apache.openmeetings.web.room;
 
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_BASE_URL;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FLASH_PORT;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FLASH_PROTOCOL;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.addUserToRoom;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.Application.getRoomUsers;
-import static org.apache.openmeetings.web.app.WebSession.getLanguage;
-import static org.apache.openmeetings.web.app.WebSession.getSid;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
@@ -70,7 +58,6 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.common.tree.MyRecordingTreeProvider;
 import org.apache.openmeetings.web.common.tree.PublicRecordingTreeProvider;
 import org.apache.openmeetings.web.pages.MainPage;
-import org.apache.openmeetings.web.util.AjaxDownload;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -94,7 +81,6 @@ import org.apache.wicket.protocol.ws.api
 import org.apache.wicket.request.flow.RedirectToUrlException;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.resource.StringResourceStream;
 import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -110,6 +96,7 @@ public class RoomPanel extends BasePanel
        private static final Logger log = 
Red5LoggerFactory.getLogger(RoomPanel.class, webAppRootKey);
        private long roomId;
        private Client c;
+       private final StartSharingEventBehavior startSharing;
        private AbstractDefaultAjaxBehavior aab = new 
AbstractDefaultAjaxBehavior() {
                private static final long serialVersionUID = 1L;
 
@@ -129,20 +116,6 @@ public class RoomPanel extends BasePanel
                }
        };
        
-       private String getLabels(int ... ids) {
-               StringBuilder result = new StringBuilder();
-               boolean delim = false;
-               FieldLanguagesValuesDao labelDao = 
getBean(FieldLanguagesValuesDao.class);
-               for (int id : ids) {
-                       if (delim) {
-                               result.append(';');
-                       }
-                       result.append(labelDao.getString(id, getLanguage()));
-                       delim = true;
-               }
-               return result.toString();
-       }
-       
        public RoomPanel(String id, long _roomId) {
                this(id, getBean(RoomDao.class).get(_roomId));
        }
@@ -217,67 +190,15 @@ public class RoomPanel extends BasePanel
                add(new Label("roomName", r.getName()));
                add(new Label("recording", "Recording 
started").setVisible(false)); //FIXME add/remove
                add(new Button("ask")); //FIXME add/remove
-               final AjaxDownload download = new AjaxDownload(true) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected String getFileName() {
-                               return "public_" + roomId + ".jnlp";
-                       }
-               };
-               add(download);
+               add(startSharing = new StartSharingEventBehavior(roomId));
                add(new Button("share").add(new AjaxEventBehavior("click") {
                        private static final long serialVersionUID = 1L;
                        
                        @Override
                        protected void onEvent(AjaxRequestTarget target) {
-                               String app = "";
-                               InputStream jnlp = null;
-                               try {
-                                       ConfigurationDao cfgDao = 
getBean(ConfigurationDao.class);
-                                       jnlp = 
getClass().getClassLoader().getResourceAsStream("APPLICATION.jnlp");
-                                       app = IOUtils.toString(jnlp, "UTF-8");
-                                       String baseUrl = cfgDao.getBaseUrl();
-                                       URL url = new URL(baseUrl);
-                                       String path = url.getPath();
-                                       path = path.substring(1, 
path.indexOf('/', 2) + 1);
-                                       app = app.replace("$codebase", baseUrl 
+ "screenshare")
-                                                       
.replace("$applicationName", cfgDao.getAppName())
-                                                       .replace("$protocol", 
cfgDao.getConfValue(CONFIG_FLASH_PROTOCOL, String.class, ""))
-                                                       .replace("$port", 
cfgDao.getConfValue(CONFIG_FLASH_PORT, String.class, ""))
-                                                       .replace("$host", 
url.getHost())
-                                                       .replace("$app", path + 
roomId)
-                                                       .replace("$userId", "" 
+ getUserId())
-                                                       .replace("$publicSid", 
getSid())
-                                                       .replace("$labels", 
"<![CDATA[" + getLabels(730,  731,  732,  733,  734
-                                                                       ,  735, 
 737,  738,  739,  740
-                                                                       ,  741, 
 742,  844,  869,  870
-                                                                       ,  871, 
 872,  878, 1089, 1090
-                                                                       , 1091, 
1092, 1093, 1465, 1466
-                                                                       , 1467, 
1468, 1469, 1470, 1471
-                                                                       , 1472, 
1473, 1474, 1475, 1476
-                                                                       , 1477, 
1589, 1598, 1078) + "]]>")
-                                                       
.replace("$defaultQuality", cfgDao.getConfValue(CONFIG_SCREENSHARING_QUALITY, 
String.class, ""))
-                                                       .replace("$defaultFps", 
cfgDao.getConfValue(CONFIG_SCREENSHARING_FPS, String.class, ""))
-                                                       .replace("$showFps", 
cfgDao.getConfValue(CONFIG_SCREENSHARING_FPS_SHOW, String.class, "true"))
-                                                       
.replace("$allowRecording", "true") //FIXME add/remove
-                                                       
.replace("$allowPublishing", "true") //FIXME add/remove
-                                                       .replace("$keystore", 
"<![CDATA[]]>") //FIXME add/remove
-                                                       .replace("$password", 
"<![CDATA[]]>") //FIXME add/remove
-                                                       ;
-                               } catch (Exception e) {
-                                       log.error("Unexpected error while 
creating jnlp file", e);
-                               } finally {
-                                       if (jnlp != null) {
-                                               try {
-                                                       jnlp.close();
-                                               } catch (IOException e) {}
-                                       }
-                               }
-                               download.setResourceStream(new 
StringResourceStream(app, "application/x-java-jnlp-file"));
-                               download.initiate(target);
+                               startSharing.respond(target);
                        }
-               })); //FIXME add/remove
+               }).add(new AttributeAppender("title", 
WebSession.getString(1480)))); //FIXME add/remove
        }
 
        private JSONArray getStringLabels(long... ids) {
@@ -383,22 +304,29 @@ public class RoomPanel extends BasePanel
                });
                MenuItem files = new RoomMenuItem(WebSession.getString(245));
                List<RoomMenuItem> fileItems = new ArrayList<RoomMenuItem>();
-               fileItems.add(new RoomMenuItem(WebSession.getString(15)));
+               fileItems.add(new RoomMenuItem(WebSession.getString(15), 
WebSession.getString(1479)));
                files.setChildren(fileItems);
                menu.add(files);
                
                MenuItem actions = new RoomMenuItem(WebSession.getString(635));
                List<RoomMenuItem> actionItems = new ArrayList<RoomMenuItem>();
-               actionItems.add(new RoomMenuItem(WebSession.getString(213)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(239)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(784)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(785)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(786)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(24)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(37)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(42)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(1447)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(1126)));
+               actionItems.add(new RoomMenuItem(WebSession.getString(213), 
WebSession.getString(1489)));
+               actionItems.add(new RoomMenuItem(WebSession.getString(239), 
WebSession.getString(1480)) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClick(MainPage page, AjaxRequestTarget 
target) {
+                               startSharing.respond(target);
+                       }
+               });
+               actionItems.add(new RoomMenuItem(WebSession.getString(784), 
WebSession.getString(1481)));
+               actionItems.add(new RoomMenuItem(WebSession.getString(785), 
WebSession.getString(1492)));
+               actionItems.add(new RoomMenuItem(WebSession.getString(786), 
WebSession.getString(1482)));
+               actionItems.add(new RoomMenuItem(WebSession.getString(24), 
WebSession.getString(1483)));
+               actionItems.add(new RoomMenuItem(WebSession.getString(37), 
WebSession.getString(1484)));
+               actionItems.add(new RoomMenuItem(WebSession.getString(42), 
WebSession.getString(1485)));
+               actionItems.add(new RoomMenuItem(WebSession.getString(1447), 
WebSession.getString(1488)));
+               actionItems.add(new RoomMenuItem(WebSession.getString(1126), 
WebSession.getString(1490)));
                actions.setChildren(actionItems);
                menu.add(actions);
                return menu;

Added: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java?rev=1622469&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
 Thu Sep  4 13:08:14 2014
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room;
+
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FLASH_PORT;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FLASH_PROTOCOL;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
+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.getLanguage;
+import static org.apache.openmeetings.web.app.WebSession.getSid;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.util.resource.StringResourceStream;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class StartSharingEventBehavior extends AbstractDefaultAjaxBehavior {
+       private static final long serialVersionUID = 1L;
+       private static final Logger log = 
Red5LoggerFactory.getLogger(StartSharingEventBehavior.class, webAppRootKey);
+       private final AjaxDownload download;
+       private final long roomId;
+
+       public StartSharingEventBehavior(long _roomId) {
+               this.roomId = _roomId;
+               download = new AjaxDownload(true) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected String getFileName() {
+                               return "public_" + roomId + ".jnlp";
+                       }
+               };
+       }
+       
+       @Override
+       protected void onBind() {
+               super.onBind();
+               getComponent().add(download);
+       }
+       
+       @Override
+       protected void respond(AjaxRequestTarget target) {
+               String app = "";
+               InputStream jnlp = null;
+               try {
+                       ConfigurationDao cfgDao = 
getBean(ConfigurationDao.class);
+                       jnlp = 
getClass().getClassLoader().getResourceAsStream("APPLICATION.jnlp");
+                       app = IOUtils.toString(jnlp, "UTF-8");
+                       String baseUrl = cfgDao.getBaseUrl();
+                       URL url = new URL(baseUrl);
+                       String path = url.getPath();
+                       path = path.substring(1, path.indexOf('/', 2) + 1);
+                       app = app.replace("$codebase", baseUrl + "screenshare")
+                                       .replace("$applicationName", 
cfgDao.getAppName())
+                                       .replace("$protocol", 
cfgDao.getConfValue(CONFIG_FLASH_PROTOCOL, String.class, ""))
+                                       .replace("$port", 
cfgDao.getConfValue(CONFIG_FLASH_PORT, String.class, ""))
+                                       .replace("$host", url.getHost())
+                                       .replace("$app", path + roomId)
+                                       .replace("$userId", "" + getUserId())
+                                       .replace("$publicSid", getSid())
+                                       .replace("$labels", "<![CDATA[" + 
getLabels(730,  731,  732,  733,  734
+                                                       ,  735,  737,  738,  
739,  740
+                                                       ,  741,  742,  844,  
869,  870
+                                                       ,  871,  872,  878, 
1089, 1090
+                                                       , 1091, 1092, 1093, 
1465, 1466
+                                                       , 1467, 1468, 1469, 
1470, 1471
+                                                       , 1472, 1473, 1474, 
1475, 1476
+                                                       , 1477, 1589, 1598, 
1078) + "]]>")
+                                       .replace("$defaultQuality", 
cfgDao.getConfValue(CONFIG_SCREENSHARING_QUALITY, String.class, ""))
+                                       .replace("$defaultFps", 
cfgDao.getConfValue(CONFIG_SCREENSHARING_FPS, String.class, ""))
+                                       .replace("$showFps", 
cfgDao.getConfValue(CONFIG_SCREENSHARING_FPS_SHOW, String.class, "true"))
+                                       .replace("$allowRecording", "true") 
//FIXME add/remove
+                                       .replace("$allowPublishing", "true") 
//FIXME add/remove
+                                       .replace("$keystore", "<![CDATA[]]>") 
//FIXME add/remove
+                                       .replace("$password", "<![CDATA[]]>") 
//FIXME add/remove
+                                       ;
+               } catch (Exception e) {
+                       log.error("Unexpected error while creating jnlp file", 
e);
+               } finally {
+                       if (jnlp != null) {
+                               try {
+                                       jnlp.close();
+                               } catch (IOException e) {}
+                       }
+               }
+               download.setResourceStream(new StringResourceStream(app, 
"application/x-java-jnlp-file"));
+               download.initiate(target);
+       }
+
+       private String getLabels(int ... ids) {
+               StringBuilder result = new StringBuilder();
+               boolean delim = false;
+               FieldLanguagesValuesDao labelDao = 
getBean(FieldLanguagesValuesDao.class);
+               for (int id : ids) {
+                       if (delim) {
+                               result.append(';');
+                       }
+                       result.append(labelDao.getString(id, getLanguage()));
+                       delim = true;
+               }
+               return result.toString();
+       }
+}

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/jquery.ui.menubar.css
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/jquery.ui.menubar.css?rev=1622469&r1=1622468&r2=1622469&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/jquery.ui.menubar.css
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/jquery.ui.menubar.css
 Thu Sep  4 13:08:14 2014
@@ -28,7 +28,7 @@
 }
 
 .ui-menubar .ui-menu {
-       width: 200px;
+       width: 300px;
        position: absolute;
        z-index: 9999;
        font-weight: normal;


Reply via email to