aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xjs/controllers/document-controller.js22
-rwxr-xr-xjs/io/system/coreioapi.js10
-rwxr-xr-xjs/io/ui/cloudpopup.reel/cloudpopup.js11
-rwxr-xr-xjs/mediators/keyboard-mediator.js220
4 files changed, 148 insertions, 115 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js
index c31ffbac..3cd2c254 100755
--- a/js/controllers/document-controller.js
+++ b/js/controllers/document-controller.js
@@ -100,18 +100,26 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
100 handleExecuteFileOpen: { 100 handleExecuteFileOpen: {
101 value: function(event) { 101 value: function(event) {
102 var pickerSettings = event._event.settings || {}; 102 var pickerSettings = event._event.settings || {};
103 pickerSettings.callback = this.openFileWithURI.bind(this); 103 //adding callback so that file picker can be opened after checking cloud status
104 pickerSettings.pickerMode = "read"; 104 this.application.ninja.coreIoApi.cloudAvailable(function(){
105 pickerSettings.inFileMode = true; 105 pickerSettings.callback = this.openFileWithURI.bind(this);
106 this.application.ninja.filePickerController.showFilePicker(pickerSettings); 106 pickerSettings.pickerMode = "read";
107 pickerSettings.inFileMode = true;
108 this.application.ninja.filePickerController.showFilePicker(pickerSettings);
109 }.bind(this));
110
107 } 111 }
108 }, 112 },
109 113
110 handleExecuteNewFile: { 114 handleExecuteNewFile: {
111 value: function(event) { 115 value: function(event) {
112 var newFileSettings = event._event.settings || {}; 116 var newFileSettings = event._event.settings || {};
113 newFileSettings.callback = this.createNewFile.bind(this); 117 //adding callback so that new file dialog can be opened after checking cloud status
114 this.application.ninja.newFileController.showNewFileDialog(newFileSettings); 118 this.application.ninja.coreIoApi.cloudAvailable(function(){
119 newFileSettings.callback = this.createNewFile.bind(this);
120 this.application.ninja.newFileController.showNewFileDialog(newFileSettings);
121 }.bind(this));
122
115 } 123 }
116 }, 124 },
117 125
@@ -305,6 +313,8 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
305 this._removeDocumentView(doc.container); 313 this._removeDocumentView(doc.container);
306 this.application.ninja.stage.stageView.hideRulers(); 314 this.application.ninja.stage.stageView.hideRulers();
307 document.getElementById("iframeContainer").style.display="block"; 315 document.getElementById("iframeContainer").style.display="block";
316
317 this.application.ninja.stage.hideCanvas(true);
308 } 318 }
309 } 319 }
310 }, 320 },
diff --git a/js/io/system/coreioapi.js b/js/io/system/coreioapi.js
index 2051da43..1bc66532 100755
--- a/js/io/system/coreioapi.js
+++ b/js/io/system/coreioapi.js
@@ -234,18 +234,19 @@ exports.CoreIoApi = Montage.create(Component, {
234 //Method to check status of I/O API, will return false if not active 234 //Method to check status of I/O API, will return false if not active
235 cloudAvailable: { 235 cloudAvailable: {
236 enumerable: false, 236 enumerable: false,
237 value: function () { 237 value: function (callback) {
238 var cloud = this.getCloudStatus(); 238 var cloud = this.getCloudStatus();
239 // 239 //
240 if (this.rootUrl && cloud.status === 200) { 240 if (this.rootUrl && cloud.status === 200) {
241 //Active 241 //Active
242 this.cloudData.name = cloud.response['name']; 242 this.cloudData.name = cloud.response['name'];
243 this.cloudData.root = cloud.response['server-root']; 243 this.cloudData.root = cloud.response['server-root'];
244 return true; 244 if(!!callback){callback();}
245 else{return true};
245 } else { 246 } else {
246 //Inactive 247 //Inactive
247 if (!this._cloudDialogOpen && this.application.ninja) { 248 if (!this._cloudDialogOpen && this.application.ninja) {
248 this.showCloudDialog(); 249 this.showCloudDialog(callback);
249 } 250 }
250 return false; 251 return false;
251 } 252 }
@@ -273,7 +274,7 @@ exports.CoreIoApi = Montage.create(Component, {
273 // 274 //
274 showCloudDialog: { 275 showCloudDialog: {
275 enumerable: false, 276 enumerable: false,
276 value: function () { 277 value: function (callback) {
277 // 278 //
278 this._cloudDialogOpen = true; 279 this._cloudDialogOpen = true;
279 // 280 //
@@ -294,6 +295,7 @@ exports.CoreIoApi = Montage.create(Component, {
294 this._cloudDialogComponents.dialog.element = popup; 295 this._cloudDialogComponents.dialog.element = popup;
295 this._cloudDialogComponents.dialog.needsDraw = true; 296 this._cloudDialogComponents.dialog.needsDraw = true;
296 this._cloudDialogComponents.dialog.element.style.opacity = 0; 297 this._cloudDialogComponents.dialog.element.style.opacity = 0;
298 this._cloudDialogComponents.dialog.callback = callback;
297 // 299 //
298 this._cloudDialogComponents.dialog.addEventListener('firstDraw', this, false); 300 this._cloudDialogComponents.dialog.addEventListener('firstDraw', this, false);
299 } 301 }
diff --git a/js/io/ui/cloudpopup.reel/cloudpopup.js b/js/io/ui/cloudpopup.reel/cloudpopup.js
index d2e82662..34393db5 100755
--- a/js/io/ui/cloudpopup.reel/cloudpopup.js
+++ b/js/io/ui/cloudpopup.reel/cloudpopup.js
@@ -23,6 +23,12 @@ exports.CloudPopup = Montage.create(Component, {
23 }, 23 },
24 //////////////////////////////////////////////////////////////////// 24 ////////////////////////////////////////////////////////////////////
25 // 25 //
26 callback:{
27 writable:true,
28 enumerable:true,
29 value:null
30 },
31 //
26 components: { 32 components: {
27 enumerable: false, 33 enumerable: false,
28 value: {test_btn: null, ok_btn: null, cancel_btn: null, download_btn: null, status: null, url: null} 34 value: {test_btn: null, ok_btn: null, cancel_btn: null, download_btn: null, status: null, url: null}
@@ -125,6 +131,10 @@ exports.CloudPopup = Montage.create(Component, {
125 value: function() { 131 value: function() {
126 // 132 //
127 this.application.ninja.coreIoApi.hideCloudDialog(); 133 this.application.ninja.coreIoApi.hideCloudDialog();
134 this.application.ninja.coreIoApi._cloudDialogOpen=false;
135 if(!!this.callback){
136 this.callback();
137 }
128 } 138 }
129 }, 139 },
130 //////////////////////////////////////////////////////////////////// 140 ////////////////////////////////////////////////////////////////////
@@ -135,6 +145,7 @@ exports.CloudPopup = Montage.create(Component, {
135 // 145 //
136 this.application.ninja.coreIoApi.rootUrl = null; 146 this.application.ninja.coreIoApi.rootUrl = null;
137 this.application.ninja.coreIoApi.hideCloudDialog(); 147 this.application.ninja.coreIoApi.hideCloudDialog();
148 this.application.ninja.coreIoApi._cloudDialogOpen=false;
138 } 149 }
139 } 150 }
140 //////////////////////////////////////////////////////////////////// 151 ////////////////////////////////////////////////////////////////////
diff --git a/js/mediators/keyboard-mediator.js b/js/mediators/keyboard-mediator.js
index 40b26582..0282060f 100755
--- a/js/mediators/keyboard-mediator.js
+++ b/js/mediators/keyboard-mediator.js
@@ -85,23 +85,115 @@ exports.KeyboardMediator = Montage.create(Component, {
85 85
86 handleKeydown: { 86 handleKeydown: {
87 value: function(evt) { 87 value: function(evt) {
88 if((document.activeElement.nodeName !== "BODY") && (!!this.application.ninja.documentController.activeDocument)
89 && (this.application.ninja.documentController.activeDocument.currentView === "design")) {
90 // Don't do anything if an input or other control is focused
91 return;
92 }
93 88
94 // Disable defaults for the Arrow Keys 89 //keyboard controls for html design view
95 if((evt.keyCode == Keyboard.LEFT) || (evt.keyCode == Keyboard.RIGHT) || (evt.keyCode == Keyboard.UP) || (evt.keyCode == Keyboard.DOWN)) { 90 if((!!this.application.ninja.documentController.activeDocument) && (this.application.ninja.documentController.activeDocument.currentView === "design")){
96 evt.preventDefault(); 91
97 } 92 // Don't do anything if an input or other control is focused
93 if(document.activeElement.nodeName !== "BODY") {
94 return;
95 }
96
97 // Disable defaults for the Arrow Keys
98 if((evt.keyCode == Keyboard.LEFT) || (evt.keyCode == Keyboard.RIGHT) || (evt.keyCode == Keyboard.UP) || (evt.keyCode == Keyboard.DOWN)) {
99 evt.preventDefault();
100 }
101
102 // Check DELETE OR BACKSPACE
103 if((evt.keyCode == Keyboard.BACKSPACE) || (evt.keyCode == Keyboard.DELETE)) {
104 evt.stopImmediatePropagation();
105 evt.preventDefault();
106 NJevent("deleting");
107 return;
108 }
109
110
111 // Shortcut for Selection Tool is V
112 if(evt.keyCode === Keyboard.V) {
113 evt.preventDefault();
114 this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[0]});
115 return;
116 }
117
118 // Shortcut for Tag Tool is D
119 if(evt.keyCode === Keyboard.D){
120 evt.preventDefault();
121 this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[4]});
122 return;
123 }
124
125 // Shortcut for Rotate Tool is W
126 if(evt.keyCode === Keyboard.W){
127 evt.preventDefault();
128 this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[2]});
129 return;
130 }
131
132 // Shortcut for Translate Tool is G
133 if(evt.keyCode === Keyboard.G){
134 evt.preventDefault();
135 this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[3]});
136 return;
137 }
138
139 // Shortcut for Rectangle Tool is R
140 // unless the user is pressing the command key.
141 // If the user is pressing the command key, they want to refresh the browser.
142 if((evt.keyCode === Keyboard.R) && !evt.metaKey) {
143 evt.preventDefault();
144 this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[7]});
145 this.application.ninja.handleSelectSubTool({"detail": this.application.ninja.toolsData.defaultToolsData[7].subtools[1]});
146 return;
147 }
148