Author: solomax
Date: Tue Jan 14 16:24:44 2014
New Revision: 1558098

URL: http://svn.apache.org/r1558098
Log:
[OPENMEETINGS-857] possibility to play sound on screensharing disconnect is 
added; code clean up

Added:
    
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
Modified:
    
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
    
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
    
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
    
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
    
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java

Added: 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java?rev=1558098&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
 Tue Jan 14 16:24:44 2014
@@ -0,0 +1,54 @@
+/*
+ * 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.screen.webstart;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.LineUnavailableException;
+import javax.sound.sampled.SourceDataLine;
+
+public class AudioTone {
+       public static final float SAMPLE_RATE = 44100F;
+
+       public static void play() {
+               byte[] buf = new byte[1];
+               
+               SourceDataLine sdl = null;
+               try {
+               AudioFormat af = new AudioFormat(SAMPLE_RATE, 8, 1, true, 
false);
+               sdl = AudioSystem.getSourceDataLine(af);
+               sdl = AudioSystem.getSourceDataLine(af);
+               sdl.open(af);
+               sdl.start();
+               for (int i = 0; i < (int)SAMPLE_RATE; ++i) {
+                       double angle = i / (SAMPLE_RATE / 440) * 2.0 * Math.PI;
+                       buf[0] = (byte) (Math.sin(angle) * 128);
+                       sdl.write(buf, 0, 1);
+               }
+               } catch (LineUnavailableException e) {
+                       //no-op
+               } finally {
+                       if (sdl != null) {
+                               sdl.drain();
+                               sdl.stop();
+                               sdl.close();
+                       }
+               }
+       }
+}

Modified: 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
 Tue Jan 14 16:24:44 2014
@@ -81,6 +81,7 @@ public class CoreScreenShare implements 
        public float Ampl_factor = 1f;
        public boolean isConnected = false;
        private boolean readyToRecord = false;
+       private boolean audioNotify = false;
 
        public Map<Integer, Boolean> currentPressedKeys = new HashMap<Integer, 
Boolean>();
 
@@ -671,4 +672,12 @@ public class CoreScreenShare implements 
                        log.error("[resultReceived]", err);
                }
        }
+
+       public boolean isAudioNotify() {
+               return audioNotify;
+       }
+
+       public void setAudioNotify(boolean audioNotify) {
+               this.audioNotify = audioNotify;
+       }
 }

Modified: 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
 Tue Jan 14 16:24:44 2014
@@ -31,9 +31,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class RTMPSScreenShare extends RTMPSClient implements 
ClientExceptionHandler, IScreenShare {
-
-       private static final Logger logger = LoggerFactory
-                       .getLogger(RTMPSScreenShare.class);
+       private static final Logger logger = 
LoggerFactory.getLogger(RTMPSScreenShare.class);
 
        private CoreScreenShare core = null;
 
@@ -76,6 +74,9 @@ public class RTMPSScreenShare extends RT
        public void connectionClosed(RTMPConnection conn, RTMP rtmp) {
                logger.debug("connection closed");
                super.connectionClosed(conn, rtmp);
+               if (core.isAudioNotify()) {
+                       AudioTone.play();
+               }
                core.stopStream();
        }
 

Modified: 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
 Tue Jan 14 16:24:44 2014
@@ -28,9 +28,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class RTMPScreenShare extends RTMPClient implements 
ClientExceptionHandler, IScreenShare {
-
-       private static final Logger logger = LoggerFactory
-                       .getLogger(RTMPScreenShare.class);
+       private static final Logger logger = 
LoggerFactory.getLogger(RTMPScreenShare.class);
 
        private CoreScreenShare core = null;
 
@@ -58,6 +56,9 @@ public class RTMPScreenShare extends RTM
        public void connectionClosed(RTMPConnection conn, RTMP rtmp) {
                logger.debug("connection closed");
                super.connectionClosed(conn, rtmp);
+               if (core.isAudioNotify()) {
+                       AudioTone.play();
+               }
                core.stopStream();
        }
 

Modified: 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
 Tue Jan 14 16:24:44 2014
@@ -56,6 +56,9 @@ public class RTMPTScreenShare extends RT
        public void connectionClosed(RTMPConnection conn, RTMP rtmp) {
                logger.debug("connection closed");
                super.connectionClosed(conn, rtmp);
+               if (core.isAudioNotify()) {
+                       AudioTone.play();
+               }
                core.stopStream();
        }
 

Modified: 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java
 Tue Jan 14 16:24:44 2014
@@ -39,6 +39,7 @@ import javax.swing.GroupLayout;
 import javax.swing.GroupLayout.Alignment;
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
+import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
@@ -108,6 +109,7 @@ public class ScreenSharerFrame extends J
        private String reduceYLabel;
        private String recordingTipLabel;
        private String publishingTipLabel;
+       private JCheckBox audioNotify;
        
        private class PublishTextField extends JTextField {
                private static final long serialVersionUID = 
-2104245360975135871L;
@@ -281,6 +283,14 @@ public class ScreenSharerFrame extends J
                
                JLabel lblSelectArea = new JLabel(getTextLabel(textLabels, 4)); 
//#id 734
                JPanel panelStatus = new JPanel();
+               audioNotify = new JCheckBox(getTextLabel(textLabels, 36)); 
//#id 1589
+               audioNotify.setBackground(Color.WHITE);
+               audioNotify.setSelected(core.isAudioNotify());
+               audioNotify.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent e) {
+                               core.setAudioNotify(audioNotify.isSelected());
+                       }
+               });
                
                GroupLayout gl_contentPane = new GroupLayout(contentPane);
                gl_contentPane.setHorizontalGroup(
@@ -289,7 +299,9 @@ public class ScreenSharerFrame extends J
                                        
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
                                                
.addGroup(gl_contentPane.createSequentialGroup()
                                                        .addGap(7)
-                                                       
.addComponent(lblStartSharing))
+                                                       
.addComponent(lblStartSharing)
+                                                       .addGap(15)
+                                                       
.addComponent(audioNotify))
                                                
.addGroup(gl_contentPane.createSequentialGroup()
                                                        .addGap(21)
                                                        
.addComponent(btnStartStopSharing, 200, 200, 200)
@@ -315,7 +327,7 @@ public class ScreenSharerFrame extends J
                                        .addComponent(lblStartSharing)
                                        .addGap(4)
                                        
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
-                                               
.addComponent(btnStartStopSharing, 32, 32, 32)
+                                               
.addComponent(btnStartStopSharing, 32, 32, 32).addComponent(audioNotify, 32, 
32, 32)
                                                )
                                        .addGap(4)
                                        .addComponent(lblSelectArea)


Reply via email to