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);