diff options
author | Ananya Sen | 2012-02-21 13:04:58 -0800 |
---|---|---|
committer | Ananya Sen | 2012-02-21 13:04:58 -0800 |
commit | adb90eff3323aa780f9a0879572e3cf3b9f0b969 (patch) | |
tree | 64294ab5135c537083f5c78269699420b62e3ce1 | |
parent | 9f80fc891b7952900dabec04877606c6c8229c61 (diff) | |
download | ninja-adb90eff3323aa780f9a0879572e3cf3b9f0b969.tar.gz |
- file picker - select file on double click
- check cloud availability before IO operations [open file, new file, Save, Save As]. Canceling operation if cloud was unavailable, as per team's agreement.
Signed-off-by: Ananya Sen <Ananya.Sen@motorola.com>
-rwxr-xr-x | js/components/ui/icon-list-basic/icon.reel/icon.js | 5 | ||||
-rwxr-xr-x | js/components/ui/tree-basic/treeItem.reel/treeItem.js | 5 | ||||
-rwxr-xr-x | js/controllers/document-controller.js | 33 | ||||
-rwxr-xr-x | js/data/menu-data.js | 2 | ||||
-rw-r--r-- | js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js | 26 | ||||
-rwxr-xr-x | js/io/ui/new-file-dialog/new-file-workflow-controller.js | 7 | ||||
-rw-r--r-- | js/io/ui/save-as-dialog.reel/save-as-dialog.js | 4 |
7 files changed, 58 insertions, 24 deletions
diff --git a/js/components/ui/icon-list-basic/icon.reel/icon.js b/js/components/ui/icon-list-basic/icon.reel/icon.js index b0279207..72adbfa1 100755 --- a/js/components/ui/icon-list-basic/icon.reel/icon.js +++ b/js/components/ui/icon-list-basic/icon.reel/icon.js | |||
@@ -131,6 +131,11 @@ var Icon = exports.Icon = Montage.create(Component, { | |||
131 | openFolderEvent.initEvent("openFolder", false, false); | 131 | openFolderEvent.initEvent("openFolder", false, false); |
132 | openFolderEvent.folderUri = this.icondata.uri; | 132 | openFolderEvent.folderUri = this.icondata.uri; |
133 | this.element.dispatchEvent(openFolderEvent); | 133 | this.element.dispatchEvent(openFolderEvent); |
134 | }else{ | ||
135 | var openFolderEvent = document.createEvent("Events"); | ||
136 | openFolderEvent.initEvent("selectFile", false, false); | ||
137 | openFolderEvent.fileUri = this.icondata.uri; | ||
138 | this.element.dispatchEvent(openFolderEvent); | ||
134 | } | 139 | } |
135 | if(evt.bubbles){ | 140 | if(evt.bubbles){ |
136 | evt.stopPropagation(); | 141 | evt.stopPropagation(); |
diff --git a/js/components/ui/tree-basic/treeItem.reel/treeItem.js b/js/components/ui/tree-basic/treeItem.reel/treeItem.js index 755eab8c..4c71cb6b 100755 --- a/js/components/ui/tree-basic/treeItem.reel/treeItem.js +++ b/js/components/ui/tree-basic/treeItem.reel/treeItem.js | |||
@@ -225,6 +225,11 @@ exports.TreeItem = Montage.create(Component, { | |||
225 | openFolderEvent.initEvent("openFolder", false, false); | 225 | openFolderEvent.initEvent("openFolder", false, false); |
226 | openFolderEvent.folderUri = this.treeItemData.uri; | 226 | openFolderEvent.folderUri = this.treeItemData.uri; |
227 | this.element.dispatchEvent(openFolderEvent); | 227 | this.element.dispatchEvent(openFolderEvent); |
228 | }else{ | ||
229 | var openFolderEvent = document.createEvent("Events"); | ||
230 | openFolderEvent.initEvent("selectFile", false, false); | ||
231 | openFolderEvent.fileUri = this.treeItemData.uri; | ||
232 | this.element.dispatchEvent(openFolderEvent); | ||
228 | } | 233 | } |
229 | if(evt.bubbles){ | 234 | if(evt.bubbles){ |
230 | evt.stopPropagation(); | 235 | evt.stopPropagation(); |
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js index 9a063280..505daaba 100755 --- a/js/controllers/document-controller.js +++ b/js/controllers/document-controller.js | |||
@@ -58,6 +58,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
58 | this.eventManager.addEventListener("executeFileOpen", this, false); | 58 | this.eventManager.addEventListener("executeFileOpen", this, false); |
59 | this.eventManager.addEventListener("executeNewFile", this, false); | 59 | this.eventManager.addEventListener("executeNewFile", this, false); |
60 | this.eventManager.addEventListener("executeSave", this, false); | 60 | this.eventManager.addEventListener("executeSave", this, false); |
61 | this.eventManager.addEventListener("executeSaveAs", this, false); | ||
61 | 62 | ||
62 | this.eventManager.addEventListener("recordStyleChanged", this, false); | 63 | this.eventManager.addEventListener("recordStyleChanged", this, false); |
63 | 64 | ||
@@ -100,33 +101,47 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
100 | handleExecuteFileOpen: { | 101 | handleExecuteFileOpen: { |
101 | value: function(event) { | 102 | value: function(event) { |
102 | var pickerSettings = event._event.settings || {}; | 103 | var pickerSettings = event._event.settings || {}; |
103 | pickerSettings.callback = this.openFileWithURI.bind(this); | 104 | if (this.application.ninja.coreIoApi.cloudAvailable()) { |
104 | pickerSettings.pickerMode = "read"; | 105 | pickerSettings.callback = this.openFileWithURI.bind(this); |
105 | pickerSettings.inFileMode = true; | 106 | pickerSettings.pickerMode = "read"; |
106 | this.application.ninja.filePickerController.showFilePicker(pickerSettings); | 107 | pickerSettings.inFileMode = true; |
108 | this.application.ninja.filePickerController.showFilePicker(pickerSettings); | ||
109 | } | ||
107 | } | 110 | } |
108 | }, | 111 | }, |
109 | 112 | ||
110 | handleExecuteNewFile: { | 113 | handleExecuteNewFile: { |
111 | value: function(event) { | 114 | value: function(event) { |
112 | var newFileSettings = event._event.settings || {}; | 115 | var newFileSettings = event._event.settings || {}; |
113 | newFileSettings.callback = this.createNewFile.bind(this); | 116 | if (this.application.ninja.coreIoApi.cloudAvailable()) { |
114 | this.application.ninja.newFileController.showNewFileDialog(newFileSettings); | 117 | newFileSettings.callback = this.createNewFile.bind(this); |
118 | this.application.ninja.newFileController.showNewFileDialog(newFileSettings); | ||
119 | } | ||
115 | } | 120 | } |
116 | }, | 121 | }, |
117 | |||
118 | |||
119 | //////////////////////////////////////////////////////////////////// | 122 | //////////////////////////////////////////////////////////////////// |
120 | //TODO: Check for appropiate structures | 123 | //TODO: Check for appropiate structures |
121 | handleExecuteSave: { | 124 | handleExecuteSave: { |
122 | value: function(event) { | 125 | value: function(event) { |
123 | if(!!this.activeDocument){ | 126 | if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ |
124 | //Text and HTML document classes should return the same save object for fileSave | 127 | //Text and HTML document classes should return the same save object for fileSave |
125 | this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this)); | 128 | this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this)); |
126 | } | 129 | } |
127 | } | 130 | } |
128 | }, | 131 | }, |
129 | //////////////////////////////////////////////////////////////////// | 132 | //////////////////////////////////////////////////////////////////// |
133 | handleExecuteSaveAs: { | ||
134 | value: function(event) { | ||
135 | var saveAsSettings = event._event.settings || {}; | ||
136 | if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ | ||
137 | saveAsSettings.fileName = this.activeDocument.name; | ||
138 | saveAsSettings.folderUri = this.activeDocument.uri.substring(0, this.activeDocument.uri.lastIndexOf("/")); | ||
139 | //add callback | ||
140 | this.application.ninja.newFileController.showSaveAsDialog(saveAsSettings); | ||
141 | } | ||
142 | } | ||
143 | }, | ||
144 | |||
130 | // | 145 | // |
131 | fileSaveResult: { | 146 | fileSaveResult: { |
132 | value: function (result) { | 147 | value: function (result) { |
diff --git a/js/data/menu-data.js b/js/data/menu-data.js index 7c3ca5d4..52710b3a 100755 --- a/js/data/menu-data.js +++ b/js/data/menu-data.js | |||
@@ -44,7 +44,7 @@ exports.MenuData = Montage.create( Montage, { | |||
44 | "displayText" : "Save As", | 44 | "displayText" : "Save As", |
45 | "hasSubMenu" : false, | 45 | "hasSubMenu" : false, |
46 | "enabled": true, | 46 | "enabled": true, |
47 | "action":"saveAs" | 47 | "action":"executeSaveAs" |
48 | }, | 48 | }, |
49 | { | 49 | { |
50 | "displayText" : "Save All", | 50 | "displayText" : "Save All", |
diff --git a/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js b/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js index 411386f9..428e7bab 100644 --- a/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js +++ b/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js | |||
@@ -214,6 +214,7 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, { | |||
214 | 214 | ||
215 | this.element.addEventListener("openFolder", function(evt){that.handlePickerNavOpenFolder(evt);}, false);//add icon double click event listener to reload iconList with new set of data | 215 | this.element.addEventListener("openFolder", function(evt){that.handlePickerNavOpenFolder(evt);}, false);//add icon double click event listener to reload iconList with new set of data |
216 | this.element.addEventListener("selectedItem", function(evt){that.handlePickerNavSelectedItem(evt);}, false);//for single selection only | 216 | this.element.addEventListener("selectedItem", function(evt){that.handlePickerNavSelectedItem(evt);}, false);//for single selection only |
217 | this.element.addEventListener("selectFile", function(evt){that.handlePickerNavSelectedFile(evt);}, false);//for file selection | ||
217 | this.element.addEventListener("showMetadata", function(evt){that.handlePickerNavShowMetadata(evt);}, false);//show metadata on hover of icon | 218 | this.element.addEventListener("showMetadata", function(evt){that.handlePickerNavShowMetadata(evt);}, false);//show metadata on hover of icon |
218 | this.element.addEventListener("updateMetadata", function(evt){that.handlePickerNavUpdateMetadata(evt);}, false);//show metadata on click of icon | 219 | this.element.addEventListener("updateMetadata", function(evt){that.handlePickerNavUpdateMetadata(evt);}, false);//show metadata on click of icon |
219 | //this.addressGo.addEventListener("click", this, false); | 220 | //this.addressGo.addEventListener("click", this, false); |
@@ -669,14 +670,29 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, { | |||
669 | } | 670 | } |
670 | }, | 671 | }, |
671 | 672 | ||
673 | handlePickerNavSelectedFile:{ | ||
674 | value: function(evt){ | ||
675 | var uri = evt.fileUri; | ||
676 | |||
677 | //do selection if in file selection mode | ||
678 | if(this.pickerModel.inFileMode && (this.application.ninja.filePickerController._directoryContentCache[uri].type === "file")){ | ||
679 | this.okButton.removeAttribute("disabled"); | ||
680 | //put into selectedItems..currently single selection is supported | ||
681 | this.selectedItems = [uri]; | ||
682 | this.currentURI = uri.substring(0, uri.lastIndexOf("/")); | ||
683 | this.handleOkButtonAction(); | ||
684 | } | ||
685 | } | ||
686 | }, | ||
687 | |||
672 | handlePickerNavShowMetadata: { | 688 | handlePickerNavShowMetadata: { |
673 | value: function(evt){ | 689 | value: function(evt){ |
674 | //update matadata only if nothing is already selected | 690 | //update matadata only if nothing is already selected |
675 | if(this.currentSelectedNode == null){ | 691 | if(this.currentSelectedNode == null){ |
676 | //console.log("handle showmetadata - true"); | 692 | //console.log("handle showmetadata - true"); |
677 | this.metadataSection.innerHTML = evt.metadata; | 693 | this.metadataSection.innerHTML = evt.metadata; |
678 | } | ||
679 | } | 694 | } |
695 | } | ||
680 | }, | 696 | }, |
681 | 697 | ||
682 | handlePickerNavUpdateMetadata:{ | 698 | handlePickerNavUpdateMetadata:{ |
diff --git a/js/io/ui/new-file-dialog/new-file-workflow-controller.js b/js/io/ui/new-file-dialog/new-file-workflow-controller.js index 7b7f4572..f34ee000 100755 --- a/js/io/ui/new-file-dialog/new-file-workflow-controller.js +++ b/js/io/ui/new-file-dialog/new-file-workflow-controller.js | |||
@@ -19,12 +19,6 @@ var NewFileWorkflowController = exports.NewFileWorkflowController = Montage.cre | |||
19 | writable:false, | 19 | writable:false, |
20 | enumerable:true, | 20 | enumerable:true, |
21 | value:function(){ | 21 | value:function(){ |
22 | var that = this; | ||
23 | |||
24 | this.eventManager.addEventListener("saveAs", function(evt){ | ||
25 | var data = evt._event.data || {};//data will contain the current file name, directory location and callback | ||
26 | that.showSaveAsDialog(data); | ||
27 | }, false); | ||
28 | } | 22 | } |
29 | }, | 23 | }, |
30 | 24 | ||
@@ -99,7 +93,6 @@ var NewFileWorkflowController = exports.NewFileWorkflowController = Montage.cre | |||
99 | saveAsDialog.fileName = fileName; | 93 | saveAsDialog.fileName = fileName; |
100 | saveAsDialog.folderUri = folderUri; |