Author: solomax Date: Mon Dec 7 16:26:46 2015 New Revision: 1718420 URL: http://svn.apache.org/viewvc?rev=1718420&view=rev Log: [OPENMEETINGS-1237] keyboard input is not duplicated
Modified:
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx
openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
Modified:
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
---
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
(original)
+++
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
Mon Dec 7 16:26:46 2015
@@ -202,14 +202,12 @@ public class ScopeApplicationAdapter ext
}
public Map<String, String> screenSharerAction(Map<String, Object> map) {
+ Map<String, String> returnMap = new HashMap<String, String>();
try {
log.debug("----------- screenSharerAction ENTER");
IConnection current = Red5.getConnectionLocal();
- Client control =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
- Client client =
sessionManager.getClientByPublicSID(control.getStreamPublishName(), null);
-
- Map<String, String> returnMap = new HashMap<String,
String>();
+ Client client =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
if (client != null) {
boolean changed = false;
@@ -250,11 +248,10 @@ public class ScopeApplicationAdapter ext
}
}
log.debug("----------- screenSharerAction, return: " +
returnMap);
- return returnMap;
} catch (Exception err) {
log.error("[screenSharerAction]", err);
}
- return null;
+ return returnMap;
}
public List<Client> checkScreenSharing() {
@@ -293,8 +290,7 @@ public class ScopeApplicationAdapter ext
log.debug("----------- setConnectionAsSharingClient");
IConnection current = Red5.getConnectionLocal();
- Client control =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
- Client client =
sessionManager.getClientByPublicSID(control.getStreamPublishName(), null);
+ Client client =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
if (client != null) {
boolean startRecording = Boolean.valueOf("" +
map.get("startRecording"));
@@ -317,6 +313,7 @@ public class ScopeApplicationAdapter ext
client.setVY(Integer.parseInt(map.get("screenY").toString()));
client.setVWidth(Integer.parseInt(map.get("screenWidth").toString()));
client.setVHeight(Integer.parseInt(map.get("screenHeight").toString()));
+
client.setStreamPublishName(map.get("publishName").toString());
sessionManager.updateClientByStreamId(current.getClient().getId(), client,
false, null);
Map<String, Object> returnMap = new
HashMap<String, Object>();
@@ -803,7 +800,7 @@ public class ScopeApplicationAdapter ext
@SuppressWarnings("rawtypes")
Map cursor = (Map) item;
- cursor.put("publicSID", c.getStreamPublishName());
+ cursor.put("streamPublishName",
c.getStreamPublishName());
sendMessageToCurrentScope("newRed5ScreenCursor",
cursor, true, false);
} catch (Exception err) {
@@ -1974,7 +1971,7 @@ public class ScopeApplicationAdapter ext
@Override
public boolean filter(IConnection conn) {
IClient client = conn.getClient();
- return
SessionVariablesUtil.isScreenClient(client) &&
conn.getClient().getId().equals(streamid);
+ return
!SessionVariablesUtil.isScreenClient(client) ||
!conn.getClient().getId().equals(streamid);
}
}.start();
return null;
Modified:
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
---
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx
(original)
+++
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/screensharing/screenSharingDialog.lzx
Mon Dec 7 16:26:46 2015
@@ -212,570 +212,517 @@
</method>
<handler name="onkeydown" reference="lz.Keys"
args="k">
- <![CDATA[
- if (this.isMouseOverActive) {
- if ($debug)
Debug.write("onkeydown ",k);
-
- var tObject = new
Object();
- tObject["action"] =
"onkeydown";
- tObject["k"] = k;
-
- var downkeys =
lz.Keys.downKeysArray;
-
- if ($debug)
Debug.write("downkeys ",downkeys,downkeys.length);
-
- if (this.isWindows) {
-
- if
(downkeys.length==2 && downkeys[0]==16) {
- if (k
== 187) {
-
tObject["k"] = -1;
-
tObject["c"] = "*";
- } else
if (k == 191) {
-
tObject["k"] = -1;
-
tObject["c"] = "'";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "_";
- } else
if (k == 221) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 219) {
-
tObject["k"] = -1;
-
tObject["c"] = "?";
- } else
if (k == 226) {
-
tObject["k"] = -1;
-
tObject["c"] = ">";
- } else
if (k == 220) {
-
tObject["k"] = -1;
-
tObject["c"] = "°";
- } else
if (k == 186) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 192) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- }
-
-
- } else if
(downkeys.length==2 && downkeys[0]==18) {
-
- if (k
== 81) {
-
tObject["k"] = -1;
-
tObject["c"] = "@";
- } else
if (k == 226) {
-
tObject["k"] = -1;
-
tObject["c"] = "|";
- }
-
- } else {
-
- if (k
== 187) {
-
tObject["k"] = -1;
-
tObject["c"] = "+";
- } else
if (k == 191) {
-
tObject["k"] = -1;
-
tObject["c"] = "#";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "-";
- } else
if (k == 221) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 219) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 226) {
-
tObject["k"] = -1;
-
tObject["c"] = "<";
- } else
if (k == 220) {
-
tObject["k"] = -1;
-
tObject["c"] = "^";
- } else
if (k == 186) {
-
tObject["k"] = -1;
-
tObject["c"] = "ü";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "ä";
- } else
if (k == 192) {
-
tObject["k"] = -1;
-
tObject["c"] = "ö";
- }
-
+ <![CDATA[
+ if (this.isMouseOverActive) {
+ if ($debug)
Debug.write("onkeydown ",k);
+
+ var tObject = new Object();
+ tObject["action"] = "onkeydown";
+ tObject["k"] = k;
+
+ var downkeys =
lz.Keys.downKeysArray;
+
+ if ($debug)
Debug.write("downkeys ",downkeys,downkeys.length);
+ if (this.isWindows) {
+ if (downkeys.length==2
&& downkeys[0]==16) {
+ if (k == 187) {
+
tObject["k"] = -1;
+
tObject["c"] = "*";
+ } else if (k ==
191) {
+
tObject["k"] = -1;
+
tObject["c"] = "'";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "_";
+ } else if (k ==
221) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
219) {
+
tObject["k"] = -1;
+
tObject["c"] = "?";
+ } else if (k ==
226) {
+
tObject["k"] = -1;
+
tObject["c"] = ">";
+ } else if (k ==
220) {
+
tObject["k"] = -1;
+
tObject["c"] = "°";
+ } else if (k ==
186) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
192) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
}
-
- } else if (this.isMac) {
-
- if
(downkeys.length==2 && downkeys[0]==16) {
- if (k
== 221) {
-
tObject["k"] = -1;
-
tObject["c"] = "*";
- } else
if (k == 220) {
-
tObject["k"] = -1;
-
tObject["c"] = "'";
- } else
if (k == 191) {
-
tObject["k"] = -1;
-
tObject["c"] = "_";
- } else
if (k == 225) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "?";
- } else
if (k == 192) {
-
tObject["k"] = -1;
-
tObject["c"] = ">";
- } else
if (k == 176) {
-
tObject["k"] = -1;
-
tObject["c"] = "°";
- } else
if (k == 219) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 186) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- }
-
-
- } else if
(downkeys.length==2 && downkeys[0]==18) {
-
- if (k
== 50) {
-
tObject["k"] = -1;
-
tObject["c"] = "@";
- } else
if (k == 55) {
-
tObject["k"] = -1;
-
tObject["c"] = "|";
- }
-
- } else {
-
- if (k
== 221) {
-
tObject["k"] = -1;
-
tObject["c"] = "+";
- } else
if (k == 220) {
-
tObject["k"] = -1;
-
tObject["c"] = "#";
- } else
if (k == 191) {
-
tObject["k"] = -1;
-
tObject["c"] = "-";
- } else
if (k == 225) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 192) {
-
tObject["k"] = -1;
-
tObject["c"] = "<";
- } else
if (k == 176) {
-
tObject["k"] = -1;
-
tObject["c"] = "^";
- } else
if (k == 219) {
-
tObject["k"] = -1;
-
tObject["c"] = "ü";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "ä";
- } else
if (k == 186) {
-
tObject["k"] = -1;
-
tObject["c"] = "ö";
- }
-
- }
-
- } else if
(this.isLinux) {
-
- if
(downkeys.length==2 && downkeys[0]==16) {
- if (k
== 187) {
-
tObject["k"] = -1;
-
tObject["c"] = "*";
- } else
if (k == 51) {
-
tObject["k"] = -1;
-
tObject["c"] = "'";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "_";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 223) {
-
tObject["k"] = -1;
-
tObject["c"] = "?";
- } else
if (k == 188) {
-
tObject["k"] = -1;
-
tObject["c"] = ">";
- } else
if (k == 176) {
-
tObject["k"] = -1;
-
tObject["c"] = "°";
- } else
if (k == 252) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 228) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 246) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- }
-
-
- } else if
(downkeys.length==2 && downkeys[0]==18) {
-
- if (k
== 50) {
-
tObject["k"] = -1;
-
tObject["c"] = "@";
- } else
if (k == 55) {
-
tObject["k"] = -1;
-
tObject["c"] = "|";
- }
-
- } else {
-
- if (k
== 187) {
-
tObject["k"] = -1;
-
tObject["c"] = "+";
- } else
if (k == 51) {
-
tObject["k"] = -1;
-
tObject["c"] = "#";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "-";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 223) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 188) {
-
tObject["k"] = -1;
-
tObject["c"] = "<";
- } else
if (k == 176) {
-
tObject["k"] = -1;
-
tObject["c"] = "^";
- } else
if (k == 246) {
-
tObject["k"] = -1;
-
tObject["c"] = "ü";
- } else
if (k == 228) {
-
tObject["k"] = -1;
-
tObject["c"] = "ä";
- } else
if (k == 246) {
-
tObject["k"] = -1;
-
tObject["c"] = "ö";
- }
-
+ } else if
(downkeys.length==2 && downkeys[0]==18) {
+ if (k == 81) {
+
tObject["k"] = -1;
+
tObject["c"] = "@";
+ } else if (k ==
226) {
+
tObject["k"] = -1;
+
tObject["c"] = "|";
+ }
+ } else {
+ if (k == 187) {
+
tObject["k"] = -1;
+
tObject["c"] = "+";
+ } else if (k ==
191) {
+
tObject["k"] = -1;
+
tObject["c"] = "#";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "-";
+ } else if (k ==
221) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
219) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
226) {
+
tObject["k"] = -1;
+
tObject["c"] = "<";
+ } else if (k ==
220) {
+
tObject["k"] = -1;
+
tObject["c"] = "^";
+ } else if (k ==
186) {
+
tObject["k"] = -1;
+
tObject["c"] = "ü";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "ä";
+ } else if (k ==
192) {
+
tObject["k"] = -1;
+
tObject["c"] = "ö";
}
-
}
-
- if
(lz.Keys.downKeysArray.length > 1) {
- for (var
i=0;i<lz.Keys.downKeysArray.length;i++) {
- if
(lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
-
lz.Keys.downKeysArray = new Array();
-
break;
- }
+ } else if (this.isMac) {
+ if (downkeys.length==2
&& downkeys[0]==16) {
+ if (k == 221) {
+
tObject["k"] = -1;
+
tObject["c"] = "*";
+ } else if (k ==
220) {
+
tObject["k"] = -1;
+
tObject["c"] = "'";
+ } else if (k ==
191) {
+
tObject["k"] = -1;
+
tObject["c"] = "_";
+ } else if (k ==
225) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "?";
+ } else if (k ==
192) {
+
tObject["k"] = -1;
+
tObject["c"] = ">";
+ } else if (k ==
176) {
+
tObject["k"] = -1;
+
tObject["c"] = "°";
+ } else if (k ==
219) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
186) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ }
+ } else if
(downkeys.length==2 && downkeys[0]==18) {
+ if (k == 50) {
+
tObject["k"] = -1;
+
tObject["c"] = "@";
+ } else if (k ==
55) {
+
tObject["k"] = -1;
+
tObject["c"] = "|";
+ }
+ } else {
+ if (k == 221) {
+
tObject["k"] = -1;
+
tObject["c"] = "+";
+ } else if (k ==
220) {
+
tObject["k"] = -1;
+
tObject["c"] = "#";
+ } else if (k ==
191) {
+
tObject["k"] = -1;
+
tObject["c"] = "-";
+ } else if (k ==
225) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
192) {
+
tObject["k"] = -1;
+
tObject["c"] = "<";
+ } else if (k ==
176) {
+
tObject["k"] = -1;
+
tObject["c"] = "^";
+ } else if (k ==
219) {
+
tObject["k"] = -1;
+
tObject["c"] = "ü";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "ä";
+ } else if (k ==
186) {
+
tObject["k"] = -1;
+
tObject["c"] = "ö";
}
}
-
-
-
- if (k == 18 || k == 17)
{
- return;
+ } else if (this.isLinux) {
+ if (downkeys.length==2
&& downkeys[0]==16) {
+ if (k == 187) {
+
tObject["k"] = -1;
+
tObject["c"] = "*";
+ } else if (k ==
51) {
+
tObject["k"] = -1;
+
tObject["c"] = "'";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "_";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
223) {
+
tObject["k"] = -1;
+
tObject["c"] = "?";
+ } else if (k ==
188) {
+
tObject["k"] = -1;
+
tObject["c"] = ">";
+ } else if (k ==
176) {
+
tObject["k"] = -1;
+
tObject["c"] = "°";
+ } else if (k ==
252) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
228) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
246) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ }
+ } else if
(downkeys.length==2 && downkeys[0]==18) {
+ if (k == 50) {
+
tObject["k"] = -1;
+
tObject["c"] = "@";
+ } else if (k ==
55) {
+
tObject["k"] = -1;
+
tObject["c"] = "|";
+ }
+ } else {
+ if (k == 187) {
+
tObject["k"] = -1;
+
tObject["c"] = "+";
+ } else if (k ==
51) {
+
tObject["k"] = -1;
+
tObject["c"] = "#";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "-";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
223) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
188) {
+
tObject["k"] = -1;
+
tObject["c"] = "<";
+ } else if (k ==
176) {
+
tObject["k"] = -1;
+
tObject["c"] = "^";
+ } else if (k ==
246) {
+
tObject["k"] = -1;
+
tObject["c"] = "ü";
+ } else if (k ==
228) {
+
tObject["k"] = -1;
+
tObject["c"] = "ä";
+ } else if (k ==
246) {
+
tObject["k"] = -1;
+
tObject["c"] = "ö";
+ }
}
-
-
this.sendRemoteCursorEvent.tObject = tObject;
- if
(canvas.isAllowedToRemoteControl || canvas.ismoderator) {
-
this.sendRemoteCursorEvent.doCall();
+ }
+ if
(lz.Keys.downKeysArray.length > 1) {
+ for (var
i=0;i<lz.Keys.downKeysArray.length;i++) {
+ if
(lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
+
lz.Keys.downKeysArray = new Array();
+ break;
+ }
}
-
}
- ]]>
+
+ if (k == 18 || k == 17) {
+ return;
+ }
+
+ if ($debug)
Debug.write("tObject :: ",tObject,this.isWindows,this.isMac);
+
this.sendRemoteCursorEvent.tObject = tObject;
+ if
(canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+
this.sendRemoteCursorEvent.doCall();
+ }
+ }
+ ]]>
</handler>
<handler name="onkeyup" reference="lz.Keys"
args="k">
- <![CDATA[
- if (this.isMouseOverActive) {
- if ($debug)
Debug.write("onkeyup ",k);
-
- var tObject = new
Object();
- tObject["action"] =
"onkeyup";
- tObject["k"] = k;
-
- var downkeys =
lz.Keys.downKeysArray;
-
- if (this.isWindows) {
-
- if
(downkeys.length==2 && downkeys[0]==16) {
- if (k
== 187) {
-
tObject["k"] = -1;
-
tObject["c"] = "*";
- } else
if (k == 191) {
-
tObject["k"] = -1;
-
tObject["c"] = "'";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "_";
- } else
if (k == 221) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 219) {
-
tObject["k"] = -1;
-
tObject["c"] = "?";
- } else
if (k == 226) {
-
tObject["k"] = -1;
-
tObject["c"] = ">";
- } else
if (k == 220) {
-
tObject["k"] = -1;
-
tObject["c"] = "°";
- } else
if (k == 186) {
-
tObject["k"] = -1;
-
tObject["c"] = "ü";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "ä";
- } else
if (k == 192) {
-
tObject["k"] = -1;
-
tObject["c"] = "ö";
- }
-
-
- } else if
(downkeys.length==2 && downkeys[0]==18) {
-
- if (k
== 81) {
-
tObject["k"] = -1;
-
tObject["c"] = "@";
- } else
if (k == 226) {
-
tObject["k"] = -1;
-
tObject["c"] = "|";
- }
-
- } else {
-
- if (k
== 187) {
-
tObject["k"] = -1;
-
tObject["c"] = "+";
- } else
if (k == 191) {
-
tObject["k"] = -1;
-
tObject["c"] = "#";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "-";
- } else
if (k == 221) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 219) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 226) {
-
tObject["k"] = -1;
-
tObject["c"] = "<";
- } else
if (k == 220) {
-
tObject["k"] = -1;
-
tObject["c"] = "^";
- } else
if (k == 186) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 192) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- }
-
+ <![CDATA[
+ if (this.isMouseOverActive) {
+ if ($debug)
Debug.write("onkeyup ",k);
+
+ var tObject = new Object();
+ tObject["action"] = "onkeyup";
+ tObject["k"] = k;
+
+ var downkeys =
lz.Keys.downKeysArray;
+ if (this.isWindows) {
+ if (downkeys.length==2
&& downkeys[0]==16) {
+ if (k == 187) {
+
tObject["k"] = -1;
+
tObject["c"] = "*";
+ } else if (k ==
191) {
+
tObject["k"] = -1;
+
tObject["c"] = "'";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "_";
+ } else if (k ==
221) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
219) {
+
tObject["k"] = -1;
+
tObject["c"] = "?";
+ } else if (k ==
226) {
+
tObject["k"] = -1;
+
tObject["c"] = ">";
+ } else if (k ==
220) {
+
tObject["k"] = -1;
+
tObject["c"] = "°";
+ } else if (k ==
186) {
+
tObject["k"] = -1;
+
tObject["c"] = "ü";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "ä";
+ } else if (k ==
192) {
+
tObject["k"] = -1;
+
tObject["c"] = "ö";
}
-
- } else if (this.isMac) {
-
- if
(downkeys.length==2 && downkeys[0]==16) {
- if (k
== 221) {
-
tObject["k"] = -1;
-
tObject["c"] = "*";
- } else
if (k == 220) {
-
tObject["k"] = -1;
-
tObject["c"] = "'";
- } else
if (k == 191) {
-
tObject["k"] = -1;
-
tObject["c"] = "_";
- } else
if (k == 225) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "?";
- } else
if (k == 192) {
-
tObject["k"] = -1;
-
tObject["c"] = ">";
- } else
if (k == 176) {
-
tObject["k"] = -1;
-
tObject["c"] = "°";
- } else
if (k == 219) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 186) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- }
-
-
- } else if
(downkeys.length==2 && downkeys[0]==18) {
-
- if (k
== 50) {
-
tObject["k"] = -1;
-
tObject["c"] = "@";
- } else
if (k == 55) {
-
tObject["k"] = -1;
-
tObject["c"] = "|";
- }
-
- } else {
-
- if (k
== 221) {
-
tObject["k"] = -1;
-
tObject["c"] = "+";
- } else
if (k == 220) {
-
tObject["k"] = -1;
-
tObject["c"] = "#";
- } else
if (k == 191) {
-
tObject["k"] = -1;
-
tObject["c"] = "-";
- } else
if (k == 225) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 192) {
-
tObject["k"] = -1;
-
tObject["c"] = "<";
- } else
if (k == 176) {
-
tObject["k"] = -1;
-
tObject["c"] = "^";
- } else
if (k == 219) {
-
tObject["k"] = -1;
-
tObject["c"] = "ü";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "ä";
- } else
if (k == 186) {
-
tObject["k"] = -1;
-
tObject["c"] = "ö";
- }
-
- }
-
- } else if
(this.isLinux) {
-
- if
(downkeys.length==2 && downkeys[0]==16) {
- if (k
== 187) {
-
tObject["k"] = -1;
-
tObject["c"] = "*";
- } else
if (k == 51) {
-
tObject["k"] = -1;
-
tObject["c"] = "'";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "_";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 223) {
-
tObject["k"] = -1;
-
tObject["c"] = "?";
- } else
if (k == 188) {
-
tObject["k"] = -1;
-
tObject["c"] = ">";
- } else
if (k == 176) {
-
tObject["k"] = -1;
-
tObject["c"] = "°";
- } else
if (k == 252) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 228) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 246) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- }
-
-
- } else if
(downkeys.length==2 && downkeys[0]==18) {
-
- if (k
== 50) {
-
tObject["k"] = -1;
-
tObject["c"] = "@";
- } else
if (k == 55) {
-
tObject["k"] = -1;
-
tObject["c"] = "|";
- }
-
- } else {
-
- if (k
== 187) {
-
tObject["k"] = -1;
-
tObject["c"] = "+";
- } else
if (k == 51) {
-
tObject["k"] = -1;
-
tObject["c"] = "#";
- } else
if (k == 189) {
-
tObject["k"] = -1;
-
tObject["c"] = "-";
- } else
if (k == 222) {
-
tObject["k"] = -1;
-
tObject["c"] = "`";
- } else
if (k == 223) {
-
tObject["k"] = -1;
-
tObject["c"] = "Ã";
- } else
if (k == 188) {
-
tObject["k"] = -1;
-
tObject["c"] = "<";
- } else
if (k == 176) {
-
tObject["k"] = -1;
-
tObject["c"] = "^";
- } else
if (k == 246) {
-
tObject["k"] = -1;
-
tObject["c"] = "ü";
- } else
if (k == 228) {
-
tObject["k"] = -1;
-
tObject["c"] = "ä";
- } else
if (k == 246) {
-
tObject["k"] = -1;
-
tObject["c"] = "ö";
- }
-
+ } else if
(downkeys.length==2 && downkeys[0]==18) {
+ if (k == 81) {
+
tObject["k"] = -1;
+
tObject["c"] = "@";
+ } else if (k ==
226) {
+
tObject["k"] = -1;
+
tObject["c"] = "|";
+ }
+ } else {
+ if (k == 187) {
+
tObject["k"] = -1;
+
tObject["c"] = "+";
+ } else if (k ==
191) {
+
tObject["k"] = -1;
+
tObject["c"] = "#";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "-";
+ } else if (k ==
221) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
219) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
226) {
+
tObject["k"] = -1;
+
tObject["c"] = "<";
+ } else if (k ==
220) {
+
tObject["k"] = -1;
+
tObject["c"] = "^";
+ } else if (k ==
186) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
192) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ }
+ }
+ } else if (this.isMac) {
+ if (downkeys.length==2
&& downkeys[0]==16) {
+ if (k == 221) {
+
tObject["k"] = -1;
+
tObject["c"] = "*";
+ } else if (k ==
220) {
+
tObject["k"] = -1;
+
tObject["c"] = "'";
+ } else if (k ==
191) {
+
tObject["k"] = -1;
+
tObject["c"] = "_";
+ } else if (k ==
225) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "?";
+ } else if (k ==
192) {
+
tObject["k"] = -1;
+
tObject["c"] = ">";
+ } else if (k ==
176) {
+
tObject["k"] = -1;
+
tObject["c"] = "°";
+ } else if (k ==
219) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
186) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ }
+ } else if
(downkeys.length==2 && downkeys[0]==18) {
+ if (k == 50) {
+
tObject["k"] = -1;
+
tObject["c"] = "@";
+ } else if (k ==
55) {
+
tObject["k"] = -1;
+
tObject["c"] = "|";
+ }
+ } else {
+ if (k == 221) {
+
tObject["k"] = -1;
+
tObject["c"] = "+";
+ } else if (k ==
220) {
+
tObject["k"] = -1;
+
tObject["c"] = "#";
+ } else if (k ==
191) {
+
tObject["k"] = -1;
+
tObject["c"] = "-";
+ } else if (k ==
225) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
192) {
+
tObject["k"] = -1;
+
tObject["c"] = "<";
+ } else if (k ==
176) {
+
tObject["k"] = -1;
+
tObject["c"] = "^";
+ } else if (k ==
219) {
+
tObject["k"] = -1;
+
tObject["c"] = "ü";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "ä";
+ } else if (k ==
186) {
+
tObject["k"] = -1;
+
tObject["c"] = "ö";
}
-
}
-
- if (k == 18 || k == 17)
{
- return;
+ } else if (this.isLinux) {
+ if (downkeys.length==2
&& downkeys[0]==16) {
+ if (k == 187) {
+
tObject["k"] = -1;
+
tObject["c"] = "*";
+ } else if (k ==
51) {
+
tObject["k"] = -1;
+
tObject["c"] = "'";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "_";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
223) {
+
tObject["k"] = -1;
+
tObject["c"] = "?";
+ } else if (k ==
188) {
+
tObject["k"] = -1;
+
tObject["c"] = ">";
+ } else if (k ==
176) {
+
tObject["k"] = -1;
+
tObject["c"] = "°";
+ } else if (k ==
252) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
228) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
246) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ }
+ } else if
(downkeys.length==2 && downkeys[0]==18) {
+ if (k == 50) {
+
tObject["k"] = -1;
+
tObject["c"] = "@";
+ } else if (k ==
55) {
+
tObject["k"] = -1;
+
tObject["c"] = "|";
+ }
+ } else {
+ if (k == 187) {
+
tObject["k"] = -1;
+
tObject["c"] = "+";
+ } else if (k ==
51) {
+
tObject["k"] = -1;
+
tObject["c"] = "#";
+ } else if (k ==
189) {
+
tObject["k"] = -1;
+
tObject["c"] = "-";
+ } else if (k ==
222) {
+
tObject["k"] = -1;
+
tObject["c"] = "`";
+ } else if (k ==
223) {
+
tObject["k"] = -1;
+
tObject["c"] = "Ã";
+ } else if (k ==
188) {
+
tObject["k"] = -1;
+
tObject["c"] = "<";
+ } else if (k ==
176) {
+
tObject["k"] = -1;
+
tObject["c"] = "^";
+ } else if (k ==
246) {
+
tObject["k"] = -1;
+
tObject["c"] = "ü";
+ } else if (k ==
228) {
+
tObject["k"] = -1;
+
tObject["c"] = "ä";
+ } else if (k ==
246) {
+
tObject["k"] = -1;
+
tObject["c"] = "ö";
+ }
}
+ }
- if
(lz.Keys.downKeysArray.length > 1) {
- for (var
i=0;i<lz.Keys.downKeysArray.length;i++) {
- if
(lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
-
lz.Keys.downKeysArray = new Array();
-
break;
- }
+ if (k == 18 || k == 17) {
+ return;
+ }
+
+ if
(lz.Keys.downKeysArray.length > 1) {
+ for (var
i=0;i<lz.Keys.downKeysArray.length;i++) {
+ if
(lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
+
lz.Keys.downKeysArray = new Array();
+ break;
}
}
+ }
+
+ if ($debug)
Debug.write("tObject :: ",tObject,this.isWindows,this.isMac);
- if ($debug)
Debug.write("tObject :: ",tObject,this.isWindows,this.isMac);
-
-
this.sendRemoteCursorEvent.tObject = tObject;
- if
(canvas.isAllowedToRemoteControl || canvas.ismoderator) {
-
this.sendRemoteCursorEvent.doCall();
- }
+
this.sendRemoteCursorEvent.tObject = tObject;
+ if
(canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+
this.sendRemoteCursorEvent.doCall();
}
- ]]>
+ }
+ ]]>
</handler>
<handler name="onmouseover">
Modified:
openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
---
openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
(original)
+++
openmeetings/branches/3.1.x/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
Mon Dec 7 16:26:46 2015
@@ -64,7 +64,6 @@ public class CoreScreenShare implements
rtmp, rtmpt, rtmpe, rtmps
}
private IScreenShare instance = null;
- private IScreenShare controlInstance = null;
private Protocol protocol;
private String host;
private String app;
@@ -145,28 +144,21 @@ public class CoreScreenShare implements
switch (protocol) {
case rtmp:
instance = new
RTMPScreenShare(this);
- controlInstance = new
RTMPScreenShare(this);
break;
case rtmpt:
instance = new
RTMPTScreenShare(this);
- controlInstance = new
RTMPTScreenShare(this);
break;
case rtmps:
RTMPSScreenShare client = new
RTMPSScreenShare(this);
client.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
client.setKeyStorePassword(args[14]);
instance = client;
- RTMPSScreenShare controlClient
= new RTMPSScreenShare(this);
-
controlClient.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
-
controlClient.setKeyStorePassword(args[14]);
- controlInstance = controlClient;
break;
case rtmpe:
default:
throw new
Exception("Unsupported protocol");
}
instance.setServiceProvider(this);
- controlInstance.setServiceProvider(this);
log.debug(String.format("host: %s, app: %s,
port: %s, publish: %s", host, port, app, publishName));
} else {
System.exit(0);
@@ -210,15 +202,15 @@ public class CoreScreenShare implements
int y = (int)(Ampl_factor * (mouseP.getY() - spinnerY)
* scaleFactor);
Map<String, Object> cursorPosition = new
HashMap<String, Object>();
- cursorPosition.put("streamPublishName", publishName);
+ cursorPosition.put("publicSID", publishName);
cursorPosition.put("cursor_x", x);
cursorPosition.put("cursor_y", y);
- if (controlInstance.getConnection() != null) {
+ if (instance.getConnection() != null) {
if (Red5.getConnectionLocal() == null) {
-
Red5.setConnectionLocal(controlInstance.getConnection());
+
Red5.setConnectionLocal(instance.getConnection());
}
- controlInstance.invoke("setNewCursorPosition",
new Object[] { cursorPosition }, this);
+ instance.invoke("setNewCursorPosition", new
Object[] { cursorPosition }, this);
}
} catch (NullPointerException npe) {
//noop
@@ -232,7 +224,7 @@ public class CoreScreenShare implements
log.debug("########## setConnectionAsSharingClient");
try {
if (Red5.getConnectionLocal() == null) {
-
Red5.setConnectionLocal(controlInstance.getConnection());
+
Red5.setConnectionLocal(instance.getConnection());
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("screenX", spinnerX);
@@ -243,7 +235,7 @@ public class CoreScreenShare implements
map.put("screenWidth", scaledWidth);
map.put("screenHeight", scaledHeight);
-
+ map.put("publishName", publishName);
map.put("startRecording", startRecording);
map.put("startStreaming", startStreaming);
map.put("startPublishing", startPublishing);
@@ -251,9 +243,9 @@ public class CoreScreenShare implements
map.put("publishingApp", frame.getPublishApp());
map.put("publishingId", frame.getPublishId());
if (Red5.getConnectionLocal() == null) {
-
Red5.setConnectionLocal(controlInstance.getConnection());
+
Red5.setConnectionLocal(instance.getConnection());
}
- controlInstance.invoke("setConnectionAsSharingClient",
new Object[] { map }, this);
+ instance.invoke("setConnectionAsSharingClient", new
Object[] { map }, this);
} catch (Exception err) {
frame.setStatus("Error: " + err.getLocalizedMessage());
log.error("[setConnectionAsSharingClient]", err);
@@ -275,12 +267,12 @@ public class CoreScreenShare implements
captureScreenStart();
}
- private void connect(String parentSid, boolean control) {
+ private void connect(String parentSid) {
Map<String, Object> map =
instance.makeDefaultConnectionParams(host, port, app);
map.put("screenClient", true);
map.put("userId", userId);
map.put("parentSid", parentSid);
- (control ? controlInstance : instance).connect(host, port, map,
this);
+ instance.connect(host, port, map, this);
}
private void captureScreenStart() {
@@ -288,7 +280,7 @@ public class CoreScreenShare implements
log.debug("captureScreenStart");
if (!isConnected) {
- connect(publishName, false);
+ connect(publishName);
} else {
setConnectionAsSharingClient();
}
@@ -321,9 +313,9 @@ public class CoreScreenShare implements
map.put(action, true);
if (Red5.getConnectionLocal() == null) {
-
Red5.setConnectionLocal(controlInstance.getConnection());
+
Red5.setConnectionLocal(instance.getConnection());
}
- controlInstance.invoke("screenSharerAction", new
Object[] { map }, this);
+ instance.invoke("screenSharerAction", new Object[] {
map }, this);
} catch (Exception err) {
log.error("captureScreenStop Exception: ", err);
frame.setStatus("Exception: " + err);
@@ -367,11 +359,7 @@ public class CoreScreenShare implements
}
String method = invoke.getCall().getServiceMethodName();
- if ("stopStream".equals(method)) {
- stopStream();
- } else if ("sendRemoteCursorEvent".equals(method)) {
-
sendRemoteCursorEvent(invoke.getCall().getArguments()[0]);
- } else if ("screenSharerAction".equals(method)) {
+ if ("screenSharerAction".equals(method)) {
Object[] args = invoke.getCall().getArguments();
if (args != null && args.length > 0) {
@SuppressWarnings("unchecked")
@@ -396,7 +384,6 @@ public class CoreScreenShare implements
isConnected = false;
instance.disconnect();
- controlInstance.disconnect();
setReadyToRecord(false);
getCapture().setStartPublish(false);
getCapture().release();
@@ -404,7 +391,6 @@ public class CoreScreenShare implements
} catch (Exception e) {
log.error("ScreenShare stopStream exception " + e);
}
-
}
public void onStreamEvent(Notify notify) {
@@ -477,7 +463,7 @@ public class CoreScreenShare implements
int key = getInt(returnMap, "k");
- // logger.debug("key onkeydown -1 "+key);
+ log.trace("KEY EVENT!!!!! key onkeydown -1 " +
key);
boolean doAction = true;
if (key == 221) {
@@ -492,7 +478,7 @@ public class CoreScreenShare implements
robot.keyRelease(storedKey);
}
- currentPressedKeys = new
HashMap<Integer, Boolean>();
+ currentPressedKeys.clear();
pressSpecialSign(charValue, robot);
} else if (key == 188) {
@@ -535,7 +521,7 @@ public class CoreScreenShare implements
key = KeyEvent.VK_ENTER;
}
- // logger.debug("key onkeyup 2- "+key);
+ log.trace("KEY EVENT!!!!! key onkeyup 2- " +
key);
if (doAction) {
if
(currentPressedKeys.containsKey(key)) {
@@ -561,7 +547,7 @@ public class CoreScreenShare implements
String clientId =
returnMap.get("clientId").toString();
-
controlInstance.invoke("sendMessageWithClientById", new Object[]{map,
clientId}, this);
+ instance.invoke("sendMessageWithClientById",
new Object[]{map, clientId}, this);
} else if (action.equals("show")) {
String paste = getClipboardText();
@@ -571,7 +557,7 @@ public class CoreScreenShare implements
String clientId =
returnMap.get("clientId").toString();
-
controlInstance.invoke("sendMessageWithClientById", new Object[]{map,
clientId}, this);
+ instance.invoke("sendMessageWithClientById",
new Object[]{map, clientId}, this);
}
} catch (Exception err) {
log.error("[sendRemoteCursorEvent]", err);
@@ -609,8 +595,12 @@ public class CoreScreenShare implements
}
private void pressSequence(Robot robot, long delay, int... codes)
throws InterruptedException {
- for (int code : codes) {
- robot.keyPress(code);
+ for (int i = 0; i < codes.length; ++i) {
+ robot.keyPress(codes[i]);
+ Thread.sleep(delay);
+ }
+ for (int i = codes.length - 1; i >= 0; --i) {
+ robot.keyRelease(codes[i]);
Thread.sleep(delay);
}
}
@@ -619,10 +609,10 @@ public class CoreScreenShare implements
try {
if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
// pressing STRG+C == copy
- pressSequence(robot, 200, KeyEvent.VK_CONTROL,
KeyEvent.VK_C, KeyEvent.VK_C, KeyEvent.VK_CONTROL);
+ pressSequence(robot, 200, KeyEvent.VK_CONTROL,
KeyEvent.VK_C);
} else {
// Macintosh simulate Copy
- pressSequence(robot, 200, 157, 67, 67, 157);
+ pressSequence(robot, 200, 157, 67);
}
return getClipboardText();
} catch (Exception e) {
@@ -637,12 +627,12 @@ public class CoreScreenShare implements
Transferable transferableText = new
StringSelection(charValue);
clippy.setContents(transferableText, null);
- if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
+ if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") > -1) {
// pressing STRG+V == insert-mode
- pressSequence(robot, 100, KeyEvent.VK_CONTROL,
KeyEvent.VK_V, KeyEvent.VK_V, KeyEvent.VK_CONTROL);
+ pressSequence(robot, 100, KeyEvent.VK_CONTROL,
KeyEvent.VK_V);
} else {
// Macintosh simulate Insert
- pressSequence(robot, 100, 157, 86, 86, 157);
+ pressSequence(robot, 100, 157, 86);
}
} catch (Exception e) {
log.error("Unexpected exception while
pressSpecialSign", e);
@@ -667,14 +657,8 @@ public class CoreScreenShare implements
return;
}
}
- if (!isConnected) {
- instance.invoke("getPublicSID", null,
this);
- } else {
- setConnectionAsSharingClient();
- }
isConnected = true;
- } else if ("getPublicSID".equals(method)) {
- connect((String)o, true);
+ setConnectionAsSharingClient();
} else if
("setConnectionAsSharingClient".equals(method)) {
@SuppressWarnings("unchecked")
Map<String, Object> returnMap = (Map<String,
Object>) o;
@@ -725,6 +709,7 @@ public class CoreScreenShare implements
} else if ("screenSharerAction".equals(method)) {
if (log.isTraceEnabled()) {
log.trace("Result Map Type " + (o ==
null ? null : o.getClass().getName()));
+ log.trace("" + o);
}
@SuppressWarnings("unchecked")
Modified:
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
Mon Dec 7 16:26:46 2015
@@ -193,14 +193,12 @@ public class ScopeApplicationAdapter ext
}
public Map<String, String> screenSharerAction(Map<String, Object> map) {
+ Map<String, String> returnMap = new HashMap<String, String>();
try {
log.debug("----------- screenSharerAction ENTER");
IConnection current = Red5.getConnectionLocal();
- Client control =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
- Client client =
sessionManager.getClientByPublicSID(control.getStreamPublishName(), null);
-
- Map<String, String> returnMap = new HashMap<String,
String>();
+ Client client =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
if (client != null) {
boolean changed = false;
@@ -241,11 +239,10 @@ public class ScopeApplicationAdapter ext
}
}
log.debug("----------- screenSharerAction, return: " +
returnMap);
- return returnMap;
} catch (Exception err) {
log.error("[screenSharerAction]", err);
}
- return null;
+ return returnMap;
}
public List<Client> checkScreenSharing() {
@@ -284,8 +281,7 @@ public class ScopeApplicationAdapter ext
log.debug("----------- setConnectionAsSharingClient");
IConnection current = Red5.getConnectionLocal();
- Client control =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
- Client client =
sessionManager.getClientByPublicSID(control.getStreamPublishName(), null);
+ Client client =
sessionManager.getClientByStreamId(current.getClient().getId(), null);
if (client != null) {
boolean startRecording = Boolean.valueOf("" +
map.get("startRecording"));
@@ -308,6 +304,7 @@ public class ScopeApplicationAdapter ext
client.setVY(Integer.parseInt(map.get("screenY").toString()));
client.setVWidth(Integer.parseInt(map.get("screenWidth").toString()));
client.setVHeight(Integer.parseInt(map.get("screenHeight").toString()));
+
client.setStreamPublishName(map.get("publishName").toString());
sessionManager.updateClientByStreamId(current.getClient().getId(), client,
false, null);
Map<String, Object> returnMap = new
HashMap<String, Object>();
@@ -794,7 +791,7 @@ public class ScopeApplicationAdapter ext
@SuppressWarnings("rawtypes")
Map cursor = (Map) item;
- cursor.put("publicSID", c.getStreamPublishName());
+ cursor.put("streamPublishName",
c.getStreamPublishName());
sendMessageToCurrentScope("newRed5ScreenCursor",
cursor, true, false);
} catch (Exception err) {
@@ -1965,7 +1962,7 @@ public class ScopeApplicationAdapter ext
@Override
public boolean filter(IConnection conn) {
IClient client = conn.getClient();
- return
SessionVariablesUtil.isScreenClient(client) &&
conn.getClient().getId().equals(streamid);
+ return
!SessionVariablesUtil.isScreenClient(client) ||
!conn.getClient().getId().equals(streamid);
}
}.start();
return null;
Modified:
openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1718420&r1=1718419&r2=1718420&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
Mon Dec 7 16:26:46 2015
@@ -64,7 +64,6 @@ public class CoreScreenShare implements
rtmp, rtmpt, rtmpe, rtmps
}
private IScreenShare instance = null;
- private IScreenShare controlInstance = null;
private Protocol protocol;
private String host;
private String app;
@@ -145,28 +144,21 @@ public class CoreScreenShare implements
switch (protocol) {
case rtmp:
instance = new
RTMPScreenShare(this);
- controlInstance = new
RTMPScreenShare(this);
break;
case rtmpt:
instance = new
RTMPTScreenShare(this);
- controlInstance = new
RTMPTScreenShare(this);
break;
case rtmps:
RTMPSScreenShare client = new
RTMPSScreenShare(this);
client.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
client.setKeyStorePassword(args[14]);
instance = client;
- RTMPSScreenShare controlClient
= new RTMPSScreenShare(this);
-
controlClient.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
-
controlClient.setKeyStorePassword(args[14]);
- controlInstance = controlClient;
break;
case rtmpe:
default:
throw new
Exception("Unsupported protocol");
}
instance.setServiceProvider(this);
- controlInstance.setServiceProvider(this);
log.debug(String.format("host: %s, app: %s,
port: %s, publish: %s", host, port, app, publishName));
} else {
System.exit(0);
@@ -210,15 +202,15 @@ public class CoreScreenShare implements
int y = (int)(Ampl_factor * (mouseP.getY() - spinnerY)
* scaleFactor);
Map<String, Object> cursorPosition = new
HashMap<String, Object>();
- cursorPosition.put("streamPublishName", publishName);
+ cursorPosition.put("publicSID", publishName);
cursorPosition.put("cursor_x", x);
cursorPosition.put("cursor_y", y);
- if (controlInstance.getConnection() != null) {
+ if (instance.getConnection() != null) {
if (Red5.getConnectionLocal() == null) {
-
Red5.setConnectionLocal(controlInstance.getConnection());
+
Red5.setConnectionLocal(instance.getConnection());
}
- controlInstance.invoke("setNewCursorPosition",
new Object[] { cursorPosition }, this);
+ instance.invoke("setNewCursorPosition", new
Object[] { cursorPosition }, this);
}
} catch (NullPointerException npe) {
//noop
@@ -232,7 +224,7 @@ public class CoreScreenShare implements
log.debug("########## setConnectionAsSharingClient");
try {
if (Red5.getConnectionLocal() == null) {
-
Red5.setConnectionLocal(controlInstance.getConnection());
+
Red5.setConnectionLocal(instance.getConnection());
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("screenX", spinnerX);
@@ -243,7 +235,7 @@ public class CoreScreenShare implements
map.put("screenWidth", scaledWidth);
map.put("screenHeight", scaledHeight);
-
+ map.put("publishName", publishName);
map.put("startRecording", startRecording);
map.put("startStreaming", startStreaming);
map.put("startPublishing", startPublishing);
@@ -251,9 +243,9 @@ public class CoreScreenShare implements
map.put("publishingApp", frame.getPublishApp());
map.put("publishingId", frame.getPublishId());
if (Red5.getConnectionLocal() == null) {
-
Red5.setConnectionLocal(controlInstance.getConnection());
+
Red5.setConnectionLocal(instance.getConnection());
}
- controlInstance.invoke("setConnectionAsSharingClient",
new Object[] { map }, this);
+ instance.invoke("setConnectionAsSharingClient", new
Object[] { map }, this);
} catch (Exception err) {
frame.setStatus("Error: " + err.getLocalizedMessage());
log.error("[setConnectionAsSharingClient]", err);
@@ -275,12 +267,12 @@ public class CoreScreenShare implements
captureScreenStart();
}
- private void connect(String parentSid, boolean control) {
+ private void connect(String parentSid) {
Map<String, Object> map =
instance.makeDefaultConnectionParams(host, port, app);
map.put("screenClient", true);
map.put("userId", userId);
map.put("parentSid", parentSid);
- (control ? controlInstance : instance).connect(host, port, map,
this);
+ instance.connect(host, port, map, this);
}
private void captureScreenStart() {
@@ -288,7 +280,7 @@ public class CoreScreenShare implements
log.debug("captureScreenStart");
if (!isConnected) {
- connect(publishName, false);
+ connect(publishName);
} else {
setConnectionAsSharingClient();
}
@@ -321,9 +313,9 @@ public class CoreScreenShare implements
map.put(action, true);
if (Red5.getConnectionLocal() == null) {
-
Red5.setConnectionLocal(controlInstance.getConnection());
+
Red5.setConnectionLocal(instance.getConnection());
}
- controlInstance.invoke("screenSharerAction", new
Object[] { map }, this);
+ instance.invoke("screenSharerAction", new Object[] {
map }, this);
} catch (Exception err) {
log.error("captureScreenStop Exception: ", err);
frame.setStatus("Exception: " + err);
@@ -367,11 +359,7 @@ public class CoreScreenShare implements
}
String method = invoke.getCall().getServiceMethodName();
- if ("stopStream".equals(method)) {
- stopStream();
- } else if ("sendRemoteCursorEvent".equals(method)) {
-
sendRemoteCursorEvent(invoke.getCall().getArguments()[0]);
- } else if ("screenSharerAction".equals(method)) {
+ if ("screenSharerAction".equals(method)) {
Object[] args = invoke.getCall().getArguments();
if (args != null && args.length > 0) {
@SuppressWarnings("unchecked")
@@ -396,7 +384,6 @@ public class CoreScreenShare implements
isConnected = false;
instance.disconnect();
- controlInstance.disconnect();
setReadyToRecord(false);
getCapture().setStartPublish(false);
getCapture().release();
@@ -404,7 +391,6 @@ public class CoreScreenShare implements
} catch (Exception e) {
log.error("ScreenShare stopStream exception " + e);
}
-
}
public void onStreamEvent(Notify notify) {
@@ -477,7 +463,7 @@ public class CoreScreenShare implements
int key = getInt(returnMap, "k");
- // logger.debug("key onkeydown -1 "+key);
+ log.trace("KEY EVENT!!!!! key onkeydown -1 " +
key);
boolean doAction = true;
if (key == 221) {
@@ -492,7 +478,7 @@ public class CoreScreenShare implements
robot.keyRelease(storedKey);
}
- currentPressedKeys = new
HashMap<Integer, Boolean>();
+ currentPressedKeys.clear();
pressSpecialSign(charValue, robot);
} else if (key == 188) {
@@ -535,7 +521,7 @@ public class CoreScreenShare implements
key = KeyEvent.VK_ENTER;
}
- // logger.debug("key onkeyup 2- "+key);
+ log.trace("KEY EVENT!!!!! key onkeyup 2- " +
key);
if (doAction) {
if
(currentPressedKeys.containsKey(key)) {
@@ -561,7 +547,7 @@ public class CoreScreenShare implements
String clientId =
returnMap.get("clientId").toString();
-
controlInstance.invoke("sendMessageWithClientById", new Object[]{map,
clientId}, this);
+ instance.invoke("sendMessageWithClientById",
new Object[]{map, clientId}, this);
} else if (action.equals("show")) {
String paste = getClipboardText();
@@ -571,7 +557,7 @@ public class CoreScreenShare implements
String clientId =
returnMap.get("clientId").toString();
-
controlInstance.invoke("sendMessageWithClientById", new Object[]{map,
clientId}, this);
+ instance.invoke("sendMessageWithClientById",
new Object[]{map, clientId}, this);
}
} catch (Exception err) {
log.error("[sendRemoteCursorEvent]", err);
@@ -609,8 +595,12 @@ public class CoreScreenShare implements
}
private void pressSequence(Robot robot, long delay, int... codes)
throws InterruptedException {
- for (int code : codes) {
- robot.keyPress(code);
+ for (int i = 0; i < codes.length; ++i) {
+ robot.keyPress(codes[i]);
+ Thread.sleep(delay);
+ }
+ for (int i = codes.length - 1; i >= 0; --i) {
+ robot.keyRelease(codes[i]);
Thread.sleep(delay);
}
}
@@ -619,10 +609,10 @@ public class CoreScreenShare implements
try {
if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
// pressing STRG+C == copy
- pressSequence(robot, 200, KeyEvent.VK_CONTROL,
KeyEvent.VK_C, KeyEvent.VK_C, KeyEvent.VK_CONTROL);
+ pressSequence(robot, 200, KeyEvent.VK_CONTROL,
KeyEvent.VK_C);
} else {
// Macintosh simulate Copy
- pressSequence(robot, 200, 157, 67, 67, 157);
+ pressSequence(robot, 200, 157, 67);
}
return getClipboardText();
} catch (Exception e) {
@@ -637,12 +627,12 @@ public class CoreScreenShare implements
Transferable transferableText = new
StringSelection(charValue);
clippy.setContents(transferableText, null);
- if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
+ if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") > -1) {
// pressing STRG+V == insert-mode
- pressSequence(robot, 100, KeyEvent.VK_CONTROL,
KeyEvent.VK_V, KeyEvent.VK_V, KeyEvent.VK_CONTROL);
+ pressSequence(robot, 100, KeyEvent.VK_CONTROL,
KeyEvent.VK_V);
} else {
// Macintosh simulate Insert
- pressSequence(robot, 100, 157, 86, 86, 157);
+ pressSequence(robot, 100, 157, 86);
}
} catch (Exception e) {
log.error("Unexpected exception while
pressSpecialSign", e);
@@ -667,14 +657,8 @@ public class CoreScreenShare implements
return;
}
}
- if (!isConnected) {
- instance.invoke("getPublicSID", null,
this);
- } else {
- setConnectionAsSharingClient();
- }
isConnected = true;
- } else if ("getPublicSID".equals(method)) {
- connect((String)o, true);
+ setConnectionAsSharingClient();
} else if
("setConnectionAsSharingClient".equals(method)) {
@SuppressWarnings("unchecked")
Map<String, Object> returnMap = (Map<String,
Object>) o;
@@ -725,6 +709,7 @@ public class CoreScreenShare implements
} else if ("screenSharerAction".equals(method)) {
if (log.isTraceEnabled()) {
log.trace("Result Map Type " + (o ==
null ? null : o.getClass().getName()));
+ log.trace("" + o);
}
@SuppressWarnings("unchecked")
