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 <[email protected]>
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 {

Reply via email to