diff options
-rw-r--r-- | js/controllers/clipboard-controller.js | 103 | ||||
-rwxr-xr-x | js/data/menu-data.js | 9 | ||||
-rwxr-xr-x | js/ninja.reel/ninja.html | 17 | ||||
-rw-r--r-- | manifest.json | 4 |
4 files changed, 123 insertions, 10 deletions
diff --git a/js/controllers/clipboard-controller.js b/js/controllers/clipboard-controller.js new file mode 100644 index 00000000..d26aaa80 --- /dev/null +++ b/js/controllers/clipboard-controller.js | |||
@@ -0,0 +1,103 @@ | |||
1 | /* <copyright> | ||
2 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | ||
3 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | ||
4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | ||
5 | </copyright> */ | ||
6 | |||
7 | //////////////////////////////////////////////////////////////////////// | ||
8 | // | ||
9 | var Montage = require("montage/core/core").Montage, | ||
10 | Component = require("montage/ui/component").Component; | ||
11 | |||
12 | var ClipboardController = exports.ClipboardController = Montage.create(Component, { | ||
13 | hasTemplate: { | ||
14 | value: false | ||
15 | }, | ||
16 | |||
17 | deserializedFromTemplate: { | ||
18 | value: function() { | ||
19 | document.body.addEventListener("copy", this, false); | ||
20 | document.body.addEventListener("cut", this, false); | ||
21 | document.body.addEventListener("paste", this, false); | ||
22 | |||
23 | //ninja menu events | ||
24 | this.eventManager.addEventListener("executeCut", this, false); | ||
25 | this.eventManager.addEventListener("executeCopy", this, false); | ||
26 | this.eventManager.addEventListener("executePaste", this, false); | ||
27 | } | ||
28 | }, | ||
29 | |||
30 | _copyFlag:{ | ||
31 | value:false | ||
32 | }, | ||
33 | |||
34 | copyFlag:{ | ||
35 | get:function(){return this._copyFlag;}, | ||
36 | set:function(value){this._copyFlag = value;} | ||
37 | }, | ||
38 | |||
39 | _newCopyFlag:{ | ||
40 | value:true | ||
41 | }, | ||
42 | |||
43 | newCopyFlag:{ | ||
44 | get:function(){return this._newCopyFlag;}, | ||
45 | set:function(value){this._newCopyFlag = value;} | ||
46 | }, | ||
47 | |||
48 | handleExecuteCopy:{ | ||
49 | value: function(){document.execCommand('copy',false,null);} | ||
50 | }, | ||
51 | |||
52 | handleExecuteCut:{ | ||
53 | value: function(){document.execCommand('cut',false,null);} | ||
54 | }, | ||
55 | |||
56 | handleExecutePaste:{ | ||
57 | value: function(){document.execCommand('paste',false,null);} | ||
58 | }, | ||
59 | |||
60 | handleCopy:{ | ||
61 | value:function(clipboardEvent){ | ||
62 | //depends on the clipboard event | ||
63 | if(this.application.ninja.selectedElements.length > 0){ | ||
64 | clipboardEvent.clipboardData.setData('text/html', ''+this.application.ninja.selectedElements[0].outerHTML);//copying first selected element for POC | ||
65 | |||
66 | clipboardEvent.preventDefault(); | ||
67 | } | ||
68 | } | ||
69 | }, | ||
70 | |||
71 | handleCut:{ | ||
72 | value:function(clipboardEvent){ | ||
73 | var clipboardData = clipboardEvent.clipboardData, | ||
74 | htmlData = clipboardData.getData("text/html"), | ||
75 | textData = clipboardData.getData("text/plain"); | ||
76 | |||
77 | console.log("$$$ handleCut ", textData); | ||
78 | |||
79 | |||
80 | clipboardEvent.preventDefault(); | ||
81 | } | ||
82 | }, | ||
83 | |||
84 | handlePaste:{ | ||
85 | value:function(clipboardEvent){ | ||
86 | var clipboardData = clipboardEvent.clipboardData, | ||
87 | htmlData = clipboardData.getData("text/html"), | ||
88 | textData = clipboardData.getData("text/plain"), | ||
89 | data = null; | ||
90 | |||
91 | data = htmlData || textData; | ||
92 | |||
93 | if(data){ | ||
94 | //hack - to avoid parsing html code now | ||
95 | |||
96 | this.application.ninja.documentController.activeDocument.documentRoot.innerHTML = data + this.application.ninja.documentController.activeDocument.documentRoot.innerHTML; | ||
97 | |||
98 | } | ||
99 | |||
100 | clipboardEvent.preventDefault(); | ||
101 | } | ||
102 | } | ||
103 | }); \ No newline at end of file | ||
diff --git a/js/data/menu-data.js b/js/data/menu-data.js index 9e8bf945..e18fb5cf 100755 --- a/js/data/menu-data.js +++ b/js/data/menu-data.js | |||
@@ -173,17 +173,20 @@ exports.MenuData = Montage.create( Montage, { | |||
173 | { | 173 | { |
174 | "displayText" : "Cut", | 174 | "displayText" : "Cut", |
175 | "hasSubMenu" : false, | 175 | "hasSubMenu" : false, |
176 | "enabled": false | 176 | "enabled": true, |
177 | "action": "executeCut" | ||
177 | }, | 178 | }, |
178 | { | 179 | { |
179 | "displayText" : "Copy", | 180 | "displayText" : "Copy", |
180 | "hasSubMenu" : false, | 181 | "hasSubMenu" : false, |
181 | "enabled": false | 182 | "enabled": true, |
183 | "action": "executeCopy" | ||
182 | }, | 184 | }, |
183 | { | 185 | { |
184 | "displayText" : "Paste", | 186 | "displayText" : "Paste", |
185 | "hasSubMenu" : false, | 187 | "hasSubMenu" : false, |
186 | "enabled": false | 188 | "enabled": true, |
189 | "action": "executePaste" | ||
187 | } | 190 | } |
188 | ] | 191 | ] |
189 | }, | 192 | }, |
diff --git a/js/ninja.reel/ninja.html b/js/ninja.reel/ninja.html index 52a6daa2..b955a4c9 100755 --- a/js/ninja.reel/ninja.html +++ b/js/ninja.reel/ninja.html | |||
@@ -1,4 +1,4 @@ | |||
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | 2 | ||
3 | <!-- <copyright> | 3 | <!-- <copyright> |
4 | This file contains proprietary software owned by Motorola Mobility, Inc. | 4 | This file contains proprietary software owned by Motorola Mobility, Inc. |
@@ -321,12 +321,16 @@ | |||
321 | "prototype": "js/controllers/code-editor-controller" | 321 | "prototype": "js/controllers/code-editor-controller" |
322 | }, | 322 | }, |
323 | 323 | ||
324 | "clipboardController": { | ||
325 | "prototype": "js/controllers/clipboard-controller[ClipboardController]" | ||
326 | }, | ||
327 | |||
324 | "owner": { | 328 | "owner": { |
325 | "prototype": "js/ninja.reel", | 329 | "prototype": "js/ninja.reel", |
326 | "properties": { | 330 | "properties": { |
327 | "element": {"#": "main"}, | 331 | "element": {"#": "main"}, |
328 | "rulerTop": {"#": "rulerTop"}, | 332 | "rulerTop": {"#": "rulerTop"}, |
329 | "rulerLeft": {"#": "rulerLeft"}, | 333 | "rulerLeft": {"#": "rulerLeft"}, |
330 | "appModel": {"@": "appModel"}, | 334 | "appModel": {"@": "appModel"}, |
331 | "toolsData": {"@": "toolsData1"}, | 335 | "toolsData": {"@": "toolsData1"}, |
332 | "toolsList": {"@": "toolsList1"}, | 336 | "toolsList": {"@": "toolsList1"}, |
@@ -340,10 +344,10 @@ | |||
340 | "popupManager": {"@": "popupManager1"}, | 344 | "popupManager": {"@": "popupManager1"}, |
341 | "colorController": {"@": "colorController1"}, | 345 | "colorController": {"@": "colorController1"}, |
342 | "stylesController": {"@": "stylesController"}, | 346 | "stylesController": {"@": "stylesController"}, |
343 | "presetsController": {"@": "presetsController"}, | 347 | "presetsController": {"@": "presetsController"}, |
344 | "filePickerController": {"@": "filePickerController"}, | 348 | "filePickerController": {"@": "filePickerController"}, |
345 | "newFileController": {"@": "newFileController"}, | 349 | "newFileController": {"@": "newFileController"}, |
346 | "coreIoApi": {"@": "coreIoApi1"}, | 350 | "coreIoApi": {"@": "coreIoApi1"}, |
347 | "documentBar": {"@": "documentBar"}, | 351 | "documentBar": {"@": "documentBar"}, |
348 | "editorViewOptions": {"@": "editorViewOptions"}, | 352 | "editorViewOptions": {"@": "editorViewOptions"}, |
349 | "ioMediator": {"@": "ioMediator"}, | 353 | "ioMediator": {"@": "ioMediator"}, |
@@ -354,7 +358,8 @@ | |||
354 | "panelSplitter": {"@": "splitter3"}, | 358 | "panelSplitter": {"@": "splitter3"}, |
355 | "timelineSplitter": {"@": "splitter4"}, | 359 | "timelineSplitter": {"@": "splitter4"}, |
356 | "toolsSplitter": {"@": "splitter2"}, | 360 | "toolsSplitter": {"@": "splitter2"}, |
357 | "optionsSplitter": {"@": "splitter1"} | 361 | "optionsSplitter": {"@": "splitter1"}, |
362 | "clipboardController": {"@": "clipboardController"} | ||
358 | } | 363 | } |
359 | } | 364 | } |
360 | } | 365 | } |
diff --git a/manifest.json b/manifest.json index b46c9826..dae6f3d7 100644 --- a/manifest.json +++ b/manifest.json | |||
@@ -15,7 +15,9 @@ | |||
15 | "notifications", | 15 | "notifications", |
16 | "webRequest", | 16 | "webRequest", |
17 | "webRequestBlocking", | 17 | "webRequestBlocking", |
18 | "http://ninja/*" | 18 | "http://ninja/*", |
19 | "clipboardRead", | ||
20 | "clipboardWrite" | ||
19 | ], | 21 | ], |
20 | "requirements": { | 22 | "requirements": { |
21 | "3D": { | 23 | "3D": { |