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 2017/09/20 17:55:27 UTC
openmeetings git commit: [OPENMEETINGS-1706] paste implemented basic
work on copy
Repository: openmeetings
Updated Branches:
refs/heads/master 3e27864e1 -> 83b2790a7
[OPENMEETINGS-1706] paste implemented basic work on copy
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/83b2790a
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/83b2790a
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/83b2790a
Branch: refs/heads/master
Commit: 83b2790a7cafe2626e652f151e5641019f93f0ce
Parents: 3e27864
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Thu Sep 21 00:55:13 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Thu Sep 21 00:55:13 2017 +0700
----------------------------------------------------------------------
.../core/remote/ScopeApplicationAdapter.java | 10 +++---
openmeetings-flash/src/main/flex/main.mxml | 34 +++++++++++++++---
.../flex/org/apache/openmeetings/OmVideo.as | 7 ++++
.../openmeetings/screenshare/job/RemoteJob.java | 38 +++++---------------
4 files changed, 51 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/83b2790a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
index 737c5d3..203199f 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
@@ -221,6 +221,8 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
}
IClientUtil.init(conn.getClient(), rcm.getUid(), Client.Type.sharing == rcm.getType());
+ service.invoke("setUid", new Object[] { rcm.getUid() }, this);
+
// Log the User
conferenceLogDao.add(ConferenceLog.Type.clientConnect,
rcm.getUserId(), streamId, null, rcm.getRemoteAddress(),
@@ -843,11 +845,11 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
/**
* Sends a message to a user in the same room by its clientId
*
+ * @param uid
* @param newMessage
- * @param clientId
* @return 1 in case of no exceptions, -1 otherwise
*/
- public int sendMessageWithClientById(Object newMessage, String clientId) {
+ public int sendMessageToClient(final String uid, Object newMessage) {
try {
IConnection current = Red5.getConnectionLocal();
StreamClient currentClient = sessionManager.get(IClientUtil.getId(current.getClient()));
@@ -858,12 +860,12 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
// broadcast Message to specific user with id inside the same Scope
for (IConnection conn : current.getScope().getClientConnections()) {
- if (conn.getClient().getId().equals(clientId)) {
+ if (IClientUtil.getId(conn.getClient()).equals(uid)) {
((IServiceCapableConnection) conn).invoke("sendVarsToMessageWithClient", new Object[] { hsm }, this);
}
}
} catch (Exception err) {
- _log.error("[sendMessageWithClient] ", err);
+ _log.error("[sendMessageToClient] ", err);
return -1;
}
return 1;
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/83b2790a/openmeetings-flash/src/main/flex/main.mxml
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/flex/main.mxml b/openmeetings-flash/src/main/flex/main.mxml
index 306d90e..8c5dbbe 100644
--- a/openmeetings-flash/src/main/flex/main.mxml
+++ b/openmeetings-flash/src/main/flex/main.mxml
@@ -31,6 +31,7 @@
import mx.core.FlexGlobals;
import mx.graphics.SolidColor;
import mx.utils.UIDUtil;
+
import flash.desktop.Clipboard;
import flash.desktop.ClipboardFormats;
import flash.events.ContextMenuEvent;
@@ -277,6 +278,8 @@
removeEventListener(MouseEvent.MOUSE_UP, remoteMouseUpHandler);
removeEventListener(MouseEvent.MOUSE_MOVE, remoteMouseMoveHandler);
this.removeEventListener(KeyboardEvent.KEY_DOWN, remoteKeyDownHandler);
+ this.removeEventListener(Event.COPY, copyHandler);
+ this.removeEventListener(Event.PASTE, pasteHandler);
copyPasteCtxMenu.removeEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler);
this.contextMenu = null;
if ("sharing" === type && hasRightRemoteControl()) {
@@ -286,6 +289,8 @@
addEventListener(MouseEvent.MOUSE_UP, remoteMouseUpHandler);
addEventListener(MouseEvent.MOUSE_MOVE, remoteMouseMoveHandler);
this.addEventListener(KeyboardEvent.KEY_DOWN, remoteKeyDownHandler, false, 0, true);
+ this.addEventListener(Event.COPY, copyHandler);
+ this.addEventListener(Event.PASTE, pasteHandler);
copyPasteCtxMenu.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler);
this.contextMenu = copyPasteCtxMenu;
}
@@ -347,13 +352,32 @@
}
private function menuSelectHandler(event:ContextMenuEvent):void {
- debug("menuSelectHandler");
- var pasteData:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String;
- debug("menuSelectHandler :: " + pasteData);
- /*
event.contextMenuOwner.contextMenu.clipboardItems.copy = true;
event.contextMenuOwner.contextMenu.clipboardItems.paste = true;
- */
+ }
+
+ private function copyHandler(e:Event):void {
+ debug("copyHandler :: ", params);
+ video.getNc().call(
+ "sendRemoteCursorEvent"
+ , new Responder(function (res:Object):void {})
+ , params.uid, {
+ action: "copy"
+ , uid: params.uid
+ });
+ }
+
+ private function pasteHandler(e:Event):void {
+ if (Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)) {
+ var data:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String;
+ video.getNc().call(
+ "sendRemoteCursorEvent"
+ , new Responder(function (res:Object):void {})
+ , params.uid, {
+ action: "paste"
+ , paste: data
+ });
+ }
}
private function _resize(_width:int, _height:int):void {
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/83b2790a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as b/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
index b46cb69..ba5dc4f 100644
--- a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
+++ b/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
@@ -264,11 +264,18 @@ public class OmVideo {
, setId: function (id:Number):void {
debug("id: " + id); //TODO save connection id
}
+ , setUid: function (_uid:String):void {
+ params.selfUid = _uid;
+ debug("setUid :: ", params);
+ }
, newScreenCursor: function(arr:Array):void {
if (arr.length > 2 && params.uid == arr[0]) {
cursorCbk(arr[1] * width / params.width, arr[2] * height / params.height);
}
}
+ , sendVarsToMessageWithClient: function(obj:Object):void {
+ debug("sendVarsToMessageWithClient :: ", obj);
+ }
};
_connect(url);
} else {
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/83b2790a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java
index 4ffe2f9..cd6b8f8 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java
@@ -74,7 +74,7 @@ public class RemoteJob implements Job {
try {
Map<String, Object> obj = null;
while ((obj = core.getRemoteEvents().poll(1, TimeUnit.MILLISECONDS)) != null) {
- String action = "" + obj.get("action");
+ String action = String.valueOf(obj.get("action"));
log.trace("Action polled:: {}, count: {}", action, core.getRemoteEvents().size());
switch (action) {
@@ -102,10 +102,7 @@ public class RemoteJob implements Job {
new OmKeyEvent(obj).press(this);
break;
case "paste":
- {
- String paste = obj.get("paste").toString();
- paste(paste);
- }
+ paste(String.valueOf(obj.get("paste")));
break;
case "copy":
{
@@ -115,22 +112,9 @@ public class RemoteJob implements Job {
map.put(0, "copiedText");
map.put(1, paste);
- String clientId = obj.get("clientId").toString();
-
- core.getInstance().invoke("sendMessageWithClientById", new Object[]{map, clientId}, core);
- }
- break;
- case "show": //FIXME TODO
- {
- String paste = getClipboardText();
-
- Map<Integer, String> map = new HashMap<>();
- map.put(0, "copiedText");
- map.put(1, paste);
-
- String clientId = obj.get("clientId").toString();
+ String uid = String.valueOf(obj.get("uid"));
- core.getInstance().invoke("sendMessageWithClientById", new Object[]{map, clientId}, core);
+ core.getInstance().invoke("sendMessageToClient", new Object[]{uid, map}, core);
}
break;
}
@@ -172,18 +156,14 @@ public class RemoteJob implements Job {
public String getClipboardText() {
try {
- // get the system clipboard
- Clipboard systemClipboard = getDefaultToolkit().getSystemClipboard();
// get the contents on the clipboard in a transferable object
- Transferable clipboardContents = systemClipboard.getContents(null);
+ Transferable data = getDefaultToolkit().getSystemClipboard().getContents(null);
// check if clipboard is empty
- if (clipboardContents == null) {
+ if (data == null) {
// Clipboard is empty!!!
- } else if (clipboardContents.isDataFlavorSupported(stringFlavor)) {
- // see if DataFlavor of DataFlavor.stringFlavor is supported
- // return text content
- String returnText = (String) clipboardContents.getTransferData(stringFlavor);
- return returnText;
+ } else if (data.isDataFlavorSupported(stringFlavor)) {
+ // see if DataFlavor of DataFlavor.stringFlavor is supported return text content
+ return (String) data.getTransferData(stringFlavor);
}
} catch (Exception e) {
log.error("Unexpected exception while getting clipboard text", e);