diff options
Diffstat (limited to 'js/io/ui/save-as-dialog.reel/save-as-dialog.js')
-rw-r--r-- | js/io/ui/save-as-dialog.reel/save-as-dialog.js | 96 |
1 files changed, 52 insertions, 44 deletions
diff --git a/js/io/ui/save-as-dialog.reel/save-as-dialog.js b/js/io/ui/save-as-dialog.reel/save-as-dialog.js index c5ed8d33..e2f50ff5 100644 --- a/js/io/ui/save-as-dialog.reel/save-as-dialog.js +++ b/js/io/ui/save-as-dialog.reel/save-as-dialog.js | |||
@@ -16,13 +16,13 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
16 | fileName : { | 16 | fileName : { |
17 | enumerable: true, | 17 | enumerable: true, |
18 | writable: true, | 18 | writable: true, |
19 | value: "" | 19 | value: null |
20 | }, | 20 | }, |
21 | 21 | ||
22 | folderUri:{ | 22 | folderUri:{ |
23 | enumerable: true, | 23 | enumerable: true, |
24 | writable: true, | 24 | writable: true, |
25 | value: "" | 25 | value: null |
26 | }, | 26 | }, |
27 | 27 | ||
28 | callback : { | 28 | callback : { |
@@ -36,7 +36,12 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
36 | writable: true, | 36 | writable: true, |
37 | value: null | 37 | value: null |
38 | }, | 38 | }, |
39 | 39 | prepareForDraw: { | |
40 | value: function() { | ||
41 | this.newFileName.value = this.fileName; | ||
42 | this.fileInputField.newFileDirectory.value = this.folderUri; | ||
43 | } | ||
44 | }, | ||
40 | willDraw: { | 45 | willDraw: { |
41 | enumerable: false, | 46 | enumerable: false, |
42 | value: function() {} | 47 | value: function() {} |
@@ -51,18 +56,16 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
51 | var self = this; | 56 | var self = this; |
52 | this.fileInputField.selectDirectory = true; | 57 | this.fileInputField.selectDirectory = true; |
53 | this.fileInputField.pickerName = "saveAsDirectoryPicker"; | 58 | this.fileInputField.pickerName = "saveAsDirectoryPicker"; |
54 | this.newFileName.value = this.fileName; | ||
55 | this.fileInputField.newFileDirectory.value = this.folderUri; | ||
56 | 59 | ||
57 | this.newFileName.addEventListener("keyup", function(evt){self.handleNewFileNameOnkeyup(evt);}, false); | 60 | this.addEventListener("change@newFileName.value", this.handleNewFileNameChange, false); |
58 | this.newFileName.addEventListener("paste", this, false); | 61 | this.newFileName.element.addEventListener("keyup", this, false); |
59 | this.eventManager.addEventListener("newFileDirectorySet", function(evt){self.handleNewFileDirectorySet(evt);}, false); | 62 | this.eventManager.addEventListener("newFileDirectorySet", function(evt){self.handleNewFileDirectorySet(evt);}, false); |
60 | |||
61 | this.okButton.addEventListener("click", function(evt){self.handleOkButtonAction(evt);}, false); | 63 | this.okButton.addEventListener("click", function(evt){self.handleOkButtonAction(evt);}, false); |
62 | this.cancelButton.addEventListener("click", function(evt){self.handleCancelButtonAction(evt);}, false); | 64 | this.cancelButton.addEventListener("click", function(evt){self.handleCancelButtonAction(evt);}, false); |
63 | 65 | ||
64 | this.newFileName.focus(); | 66 | this.eventManager.addEventListener("enterKey", this, false); |
65 | this.newFileName.select(); | 67 | this.eventManager.addEventListener("escKey", this, false); |
68 | |||
66 | 69 | ||
67 | this.enableOk(); | 70 | this.enableOk(); |
68 | 71 | ||
@@ -80,51 +83,59 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
80 | } | 83 | } |
81 | }, true); | 84 | }, true); |
82 | 85 | ||
86 | this.newFileName.element.focus(); | ||
87 | this.newFileName.element.select(); | ||
88 | |||
83 | } | 89 | } |
84 | }, | 90 | }, |
85 | 91 | ||
86 | handleNewFileDirectorySet:{ | 92 | handleNewFileDirectorySet:{ |
87 | value:function(evt){ | 93 | value:function(evt){ |
88 | if(evt.keyCode === 13){ | 94 | this.folderUri = evt._event.newFileDirectory; |
89 | if(!this.okButton.hasAttribute("disabled")) this.handleOkButtonAction(evt); | 95 | if(this.isValidUri(this.folderUri)){ |
90 | }else if(evt.keyCode === 27){ | 96 | this.enableOk(); |
91 | this.handleCancelButtonAction(evt); | ||
92 | } | ||
93 | else if(!!evt._event.newFileDirectory){ | ||
94 | this.folderUri = evt._event.newFileDirectory; | ||
95 | if(this.isValidUri(this.folderUri)){ | ||
96 | this.enableOk(); | ||
97 | } | ||
98 | } | 97 | } |
99 | } | 98 | } |
100 | }, | 99 | }, |
101 | 100 | ||
102 | handlePaste:{ | 101 | handleNewFileNameChange:{ |
103 | value:function(evt){ | ||
104 | evt.preventDefault(); | ||
105 | evt.target.value = evt.clipboardData.getData("Text"); | ||
106 | this.handleNewFileNameOnkeyup(evt); | ||
107 | } | ||
108 | }, | ||
109 | |||
110 | handleNewFileNameOnkeyup:{ | ||
111 | value:function(evt){ | 102 | value:function(evt){ |
112 | this.fileName = this.newFileName.value; | 103 | this.fileName = this.newFileName.value; |
113 | if(this.fileName !== ""){ | 104 | if(this.isValidFileName(this.fileName)){ |
114 | if(this.isValidFileName(this.fileName)){ | ||
115 | this.enableOk(); | 105 | this.enableOk(); |
116 | } | ||
117 | } | 106 | } |
118 | if(evt.keyCode === 13){ | 107 | } |
119 | if(!this.okButton.hasAttribute("disabled")){ | 108 | }, |
109 | |||
110 | handleKeyup:{ | ||
111 | value: function(evt){ | ||
112 | if(evt.keyCode === 13){ | ||
113 | if(!this.okButton.hasAttribute("disabled")){ | ||
120 | this.handleOkButtonAction(evt); | 114 | this.handleOkButtonAction(evt); |
121 | } | 115 | } |
122 | }else if(evt.keyCode === 27){ | 116 | }else if(evt.keyCode === 27){ |
123 | this.handleCancelButtonAction(evt); | 117 | this.handleCancelButtonAction(evt); |
118 | } | ||
119 | } | ||
120 | }, | ||
121 | |||
122 | handleEnterKey:{ | ||
123 | value: function(evt){ | ||
124 | if((this.application.ninja.newFileController.saveAsDialog !== null) | ||
125 | && !this.okButton.hasAttribute("disabled")){ | ||
126 | |||
127 | this.handleOkButtonAction(evt); | ||
124 | } | 128 | } |
125 | } | 129 | } |
126 | }, | 130 | }, |
127 | 131 | ||
132 | handleEscKey:{ | ||
133 | value: function(evt){ | ||
134 | if(this.application.ninja.newFileController.saveAsDialog !== null){ | ||
135 | this.handleCancelButtonAction(evt); | ||
136 | } | ||
137 | } | ||
138 | }, | ||
128 | 139 | ||
129 | enableOk:{ | 140 | enableOk:{ |
130 | value: function(){ | 141 | value: function(){ |
@@ -194,10 +205,8 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
194 | isValidUri:{ | 205 | isValidUri:{ |
195 | value: function(uri){ | 206 | value: function(uri){ |
196 | var status= this.application.ninja.coreIoApi.isValidUri(uri); | 207 | var status= this.application.ninja.coreIoApi.isValidUri(uri); |
197 | if(uri !== ""){ | 208 | if((uri !== null) && !status){ |
198 | if(!status){ | ||
199 | this.showError("! Invalid directory."); | 209 | this.showError("! Invalid directory."); |
200 | } | ||
201 | } | 210 | } |
202 | return status; | 211 | return status; |
203 | } | 212 | } |
@@ -205,10 +214,8 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
205 | isValidFileName:{ | 214 | isValidFileName:{ |
206 | value: function(fileName){ | 215 | value: function(fileName){ |
207 | var status = this.validateFileName(fileName); | 216 | var status = this.validateFileName(fileName); |
208 | if(fileName !== ""){ | 217 | if((fileName !== null) && !status){ |
209 | if(!status){ | ||
210 | this.showError("! Invalid file name."); | 218 | this.showError("! Invalid file name."); |
211 | } | ||
212 | } | 219 | } |
213 | return status; | 220 | return status; |
214 | } | 221 | } |
@@ -257,8 +264,9 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
257 | validateFileName:{ | 264 | validateFileName:{ |
258 | value: function(fileName){ | 265 | value: function(fileName){ |
259 | var status = false; | 266 | var status = false; |
260 | if(fileName !== ""){ | 267 | if((fileName !== null) && (fileName !== "")){ |
261 | fileName = fileName.replace(/^\s+|\s+$/g,""); | 268 | fileName = fileName.replace(/^\s+|\s+$/g,""); |
269 | if(fileName === ""){return false;} | ||
262 | status = !(/[/\\]/g.test(fileName)); | 270 | status = !(/[/\\]/g.test(fileName)); |
263 | if(status && navigator.userAgent.indexOf("Macintosh") != -1){//for Mac files beginning with . are hidden | 271 | if(status && navigator.userAgent.indexOf("Macintosh") != -1){//for Mac files beginning with . are hidden |
264 | status = !(/^\./g.test(fileName)); | 272 | status = !(/^\./g.test(fileName)); |