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;