You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2018/10/26 08:28:21 UTC

[openmeetings] branch master updated: [OPENMEETINGS-1352] sharer dialog is moved to separate class

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 9f739d2  [OPENMEETINGS-1352] sharer dialog is moved to separate class
9f739d2 is described below

commit 9f739d25111464b5bbb6c3096c6cb4deffc3d362
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Oct 26 15:28:06 2018 +0700

    [OPENMEETINGS-1352] sharer dialog is moved to separate class
---
 openmeetings-web/pom.xml                           |  1 +
 .../apache/openmeetings/web/room/RoomPanel.html    |  2 +-
 .../openmeetings/web/room/menu/ActionsSubMenu.java |  6 +-
 .../openmeetings/web/room/menu/RoomMenuPanel.html  |  2 +-
 .../openmeetings/web/room/menu/RoomMenuPanel.java  |  2 +-
 .../org/apache/openmeetings/web/room/raw-room.js   | 35 +-----------
 .../org/apache/openmeetings/web/room/raw-sharer.js | 64 ++++++++++++++++++++++
 .../org/apache/openmeetings/web/room/raw-video.js  |  7 ++-
 8 files changed, 79 insertions(+), 40 deletions(-)

diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 8ff7e9f..1737b6d 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -212,6 +212,7 @@
 								<jsSourceFile>jquery.dialogextend.js</jsSourceFile>
 								<jsSourceFile>raw-video.js</jsSourceFile>
 								<jsSourceFile>raw-video-manager.js</jsSourceFile>
+								<jsSourceFile>raw-sharer.js</jsSourceFile>
 								<jsSourceFile>raw-room.js</jsSourceFile>
 							</jsSourceFiles>
 							<jsFinalFile>room.js</jsFinalFile>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
index a153ecc..15c86df 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
@@ -117,7 +117,7 @@
 			</div>
 			<hr/>
 			<button class="share-start-stop" wicket:message="data-start:732, data-stop:733"><wicket:message key="732"/></button>
-			<button class="record-start-stop ui-state-error" wicket:message="data-start:871, data-stop:872"><wicket:message key="872"/></button>
+			<button class="record-start-stop ui-state-error" wicket:message="data-start:871, data-stop:872"><wicket:message key="871"/></button>
 		</div>
 	</div>
 </wicket:panel>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
index be5f7ad..48cb90e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
@@ -38,7 +38,6 @@ public class ActionsSubMenu implements Serializable {
 	private final SipDialerDialog sipDialer;
 	private final RoomPanel room;
 	private final RoomMenuPanel mp;
-	private final StartSharingButton shareBtn;
 	private RoomMenuItem actionsMenu;
 	private RoomMenuItem inviteMenuItem;
 	private RoomMenuItem shareMenuItem;
@@ -51,10 +50,9 @@ public class ActionsSubMenu implements Serializable {
 	private RoomMenuItem downloadPdfMenuItem;
 	private final boolean visible;
 
-	public ActionsSubMenu(final RoomPanel room, final RoomMenuPanel mp, final StartSharingButton shareBtn) {
+	public ActionsSubMenu(final RoomPanel room, final RoomMenuPanel mp) {
 		this.room = room;
 		this.mp = mp;
-		this.shareBtn = shareBtn;
 		RoomInvitationForm rif = new RoomInvitationForm("form", room.getRoom().getId());
 		mp.add(invite = new InvitationDialog("invite", rif));
 		rif.setDialog(invite);
@@ -78,7 +76,7 @@ public class ActionsSubMenu implements Serializable {
 
 			@Override
 			public void onClick(AjaxRequestTarget target) {
-				target.appendJavaScript(String.format("$('#%s').click()", shareBtn.getMarkupId()));
+				target.appendJavaScript("Sharer.open();");
 			}
 		};
 		applyModerMenuItem = new RoomMenuItem(mp.getString("784"), mp.getString("1481"), false) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
index 383bff3..96d3213 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
@@ -25,7 +25,7 @@
 		<span class="icon shared ui-button ui-corner-all ui-widget" wicket:message="data-user:692, data-text:850, data-view:848"
 				role="button" style="display: none;"></span>
 		<span wicket:id="ask" class="icon ask"></span>
-		<span wicket:id="share" class="icon share" wicket:message="title:732" onclick="Room.share();"></span>
+		<span wicket:id="share" class="icon share" wicket:message="title:732" onclick="Sharer.open();"></span>
 		<span wicket:id="roomName" class="room name"></span>
 		<span wicket:id="tag" class="room name"></span>
 		<span wicket:id="logo" class="icon"></span>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
index dad9c76..a154a00 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
@@ -115,7 +115,7 @@ public class RoomMenuPanel extends Panel {
 		add(logo, new Label("tag", tag).setVisible(!Strings.isEmpty(tag)));
 		add(shareBtn = new StartSharingButton("share"));
 		pollsSubMenu = new PollsSubMenu(room, this);
-		actionsSubMenu = new ActionsSubMenu(room, this, shareBtn);
+		actionsSubMenu = new ActionsSubMenu(room, this);
 	}
 
 	private Group getGroup() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
index e53926c..992e0f3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
@@ -1,7 +1,7 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
 var Room = (function() {
 	const self = {}, sbSide = Settings.isRtl ? 'right' : 'left';
-	let options, menuHeight, chat, sb, dock, activities, sharer;
+	let options, menuHeight, chat, sb, dock, activities;
 
 	function _init(_options) {
 		options = _options;
@@ -43,30 +43,7 @@ var Room = (function() {
 		if (typeof(Activities) !== 'undefined') {
 			Activities.init();
 		}
-		sharer = $('#sharer').dialog({
-			width: 450
-			, autoOpen: false
-		});
-		const type = sharer.find('select.type').selectmenu({
-			width: 150
-		}), fps = sharer.find('select.fps').selectmenu({
-			width: 120
-		}), sbtn = sharer.find('.share-start-stop').button({
-			icon: 'ui-icon-image'
-		});
-		sbtn.click(function() {
-			sbtn.button('disable');
-			VideoManager.sendMessage({
-				id: 'wannaShare'
-				, shareType: type.val()
-				, fps: fps.val()
-				, width: sharer.find('.width').val()
-				, height: sharer.find('.height').val()
-			});
-		});
-		sharer.find('.record-start-stop').button({
-			icon: 'ui-icon-bullet'
-		});
+		Sharer.init();
 	}
 	function _getSelfAudioClient() {
 		const vw = $('#video' + Room.getOptions().uid);
@@ -211,9 +188,7 @@ var Room = (function() {
 		$(window).off('keyup', _keyHandler);
 		$(document).off('click', _mouseHandler);
 		sb = undefined;
-		if (sharer && sharer.dialog('instance')) {
-			sharer.dialog('close');
-		}
+		Sharer.close();
 	}
 	function _showClipboard(txt) {
 		const dlg = $('#clipboard-dialog');
@@ -278,9 +253,6 @@ var Room = (function() {
 		}
 		OmUtil.tmpl('#quick-vote-template', 'quick-vote');
 	}
-	function _share() {
-		sharer.dialog('open');
-	}
 
 	self.init = _init;
 	self.getMenuHeight = function() { return menuHeight; };
@@ -297,7 +269,6 @@ var Room = (function() {
 	self.unload = _unload;
 	self.showClipboard = _showClipboard;
 	self.quickPoll = _quickPoll;
-	self.share = _share;
 	return self;
 })();
 function startPrivateChat(el) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js
new file mode 100644
index 0000000..c367d58
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js
@@ -0,0 +1,64 @@
+/* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
+var Sharer = (function() {
+	const self = {};
+	let sharer, type, fps, sbtn, rbtn, width, height;
+
+	function _init() {
+		sharer = $('#sharer').dialog({
+			width: 450
+			, autoOpen: false
+		});
+		type = sharer.find('select.type').selectmenu({
+			width: 150
+			, disabled: VideoUtil.isEdge()
+		});
+		fps = sharer.find('select.fps').selectmenu({
+			width: 120
+			, disabled: VideoUtil.isEdge()
+		});
+		sbtn = sharer.find('.share-start-stop').button({
+			icon: 'ui-icon-image'
+		});
+		width = sharer.find('.width');
+		height = sharer.find('.height');
+		sbtn.click(function() {
+			_setShareState(true);
+			VideoManager.sendMessage({
+				id: 'wannaShare'
+				, shareType: type.val()
+				, fps: fps.val()
+				, width: width.val()
+				, height: height.val()
+			});
+		});
+		rbtn = sharer.find('.record-start-stop').button({
+			icon: 'ui-icon-bullet'
+		});
+	}
+	function _setShareState(state) {
+		type.selectmenu('option', 'disabled', state || VideoUtil.isEdge());
+		fps.selectmenu('option', 'disabled', state || VideoUtil.isEdge());
+		width.prop('disabled', state);
+		height.prop('disabled', state);
+		sbtn.button('option', 'icon', state ? 'ui-icon-stop' : 'ui-icon-image');
+		if (state) {
+			sbtn.button('disable');
+		} else {
+			sbtn.button('enable');
+		}
+	}
+
+	self.init = _init;
+	self.open = function() {
+		if (sharer && sharer.dialog('instance')) {
+			sharer.dialog('open');
+		}
+	};
+	self.close = function() {
+		if (sharer && sharer.dialog('instance')) {
+			sharer.dialog('close');
+		}
+	};
+	self.setShareState = _setShareState;
+	return self;
+})();
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
index 1d2daf5..a3fc8eb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
@@ -45,7 +45,6 @@ var Video = (function() {
 		}
 	}
 	function _getScreenStream(msg, callback) {
-		//FIXME TODO frameRate
 		const b = kurentoUtils.WebRtcPeer.browser;
 		if (VideoUtil.isEdge() && b.major > 16) {
 			const cnts = {
@@ -54,6 +53,7 @@ var Video = (function() {
 			navigator.getDisplayMedia(cnts).then(function(stream) {
 				callback(msg, cnts, stream);
 			}).catch(function(err) {
+				Sharer.setShareState(false);
 				OmUtil.error(err);
 			});
 		} else if (b.name === 'Firefox') {
@@ -68,9 +68,11 @@ var Video = (function() {
 			navigator.mediaDevices.getUserMedia(cnts).then(function(stream) {
 				callback(msg, cnts, stream);
 			}).catch(function(err) {
+				Sharer.setShareState(false);
 				OmUtil.error(err);
 			});
 		} else {
+			Sharer.close();
 			OmUtil.error('Screen-sharing is not supported in ' + b.name + '[' + b.major + ']');
 		}
 	}
@@ -300,6 +302,9 @@ var Video = (function() {
 		v = $('#' + _id);
 		t = v.parent().find('.ui-dialog-titlebar').attr('title', name);
 		f = v.find('.footer');
+		if (!sd.self && isSharing) {
+			Sharer.close();
+		}
 		if (sd.self && isSharing) {
 			v.hide();
 		} else {