diff options
Diffstat (limited to 'js/io/ui/save-as-dialog.reel')
-rw-r--r-- | js/io/ui/save-as-dialog.reel/save-as-dialog.html | 9 | ||||
-rw-r--r-- | js/io/ui/save-as-dialog.reel/save-as-dialog.js | 111 |
2 files changed, 94 insertions, 26 deletions
diff --git a/js/io/ui/save-as-dialog.reel/save-as-dialog.html b/js/io/ui/save-as-dialog.reel/save-as-dialog.html index 374e3d48..453d7a96 100644 --- a/js/io/ui/save-as-dialog.reel/save-as-dialog.html +++ b/js/io/ui/save-as-dialog.reel/save-as-dialog.html | |||
@@ -18,13 +18,20 @@ | |||
18 | } | 18 | } |
19 | }, | 19 | }, |
20 | 20 | ||
21 | "newFileName": { | ||
22 | "prototype": "montage/ui/textfield.reel", | ||
23 | "properties": { | ||
24 | "element": {"#": "newFileName"} | ||
25 | } | ||
26 | }, | ||
27 | |||
21 | "owner":{ | 28 | "owner":{ |
22 | "module": "js/io/ui/new-file-dialog/new-file-location.reel", | 29 | "module": "js/io/ui/new-file-dialog/new-file-location.reel", |
23 | "name": "SaveAsDialog", | 30 | "name": "SaveAsDialog", |
24 | "properties": { | 31 | "properties": { |
25 | "element": {"#": "saveAsDialog"}, | 32 | "element": {"#": "saveAsDialog"}, |
26 | "fileInputField": {"@": "fileInputField"}, | 33 | "fileInputField": {"@": "fileInputField"}, |
27 | "newFileName": {"#": "newFileName"}, | 34 | "newFileName": {"@": "newFileName"}, |
28 | "error":{"#": "error"}, | 35 | "error":{"#": "error"}, |
29 | "okButton":{"#": "okButton"}, | 36 | "okButton":{"#": "okButton"}, |
30 | "cancelButton":{"#": "cancelButton"} | 37 | "cancelButton":{"#": "cancelButton"} |
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 c60a92f9..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,41 +56,86 @@ 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); |
61 | this.newFileName.element.addEventListener("keyup", this, false); | ||
58 | this.eventManager.addEventListener("newFileDirectorySet", function(evt){self.handleNewFileDirectorySet(evt);}, false); | 62 | this.eventManager.addEventListener("newFileDirectorySet", function(evt){self.handleNewFileDirectorySet(evt);}, false); |
59 | |||
60 | this.okButton.addEventListener("click", function(evt){self.handleOkButtonAction(evt);}, false); | 63 | this.okButton.addEventListener("click", function(evt){self.handleOkButtonAction(evt);}, false); |
61 | this.cancelButton.addEventListener("click", function(evt){self.handleCancelButtonAction(evt);}, false); | 64 | this.cancelButton.addEventListener("click", function(evt){self.handleCancelButtonAction(evt);}, false); |
62 | 65 | ||
66 | this.eventManager.addEventListener("enterKey", this, false); | ||
67 | this.eventManager.addEventListener("escKey", this, false); | ||
68 | |||
69 | |||
63 | this.enableOk(); | 70 | this.enableOk(); |
71 | |||
72 | this.element.addEventListener("keyup", function(evt){ | ||
73 | if(evt.keyCode == 27) {//ESC key | ||
74 | if(self.application.ninja.newFileController.saveAsDialog !== null){ | ||
75 | self.handleCancelButtonAction(); | ||
76 | } | ||
77 | }else if((evt.keyCode == 13) && !(evt.ctrlKey || evt.metaKey)){//ENTER key | ||
78 | if((self.application.ninja.newFileController.saveAsDialog !== null) | ||
79 | && !self.okButton.hasAttribute("disabled")){ | ||
80 | |||
81 | self.handleOkButtonAction(); | ||
82 | } | ||
83 | } | ||
84 | }, true); | ||
85 | |||
86 | this.newFileName.element.focus(); | ||
87 | this.newFileName.element.select(); | ||
88 | |||
64 | } | 89 | } |
65 | }, | 90 | }, |
66 | 91 | ||
67 | handleNewFileDirectorySet:{ | 92 | handleNewFileDirectorySet:{ |
68 | value:function(evt){ | 93 | value:function(evt){ |
69 | if(!!evt._event.newFileDirectory){ | 94 | this.folderUri = evt._event.newFileDirectory; |
70 | this.folderUri = evt._event.newFileDirectory; | 95 | if(this.isValidUri(this.folderUri)){ |
71 | if(this.isValidUri(this.folderUri)){ | 96 | this.enableOk(); |
72 | this.enableOk(); | ||
73 | } | ||
74 | } | 97 | } |
75 | } | 98 | } |
76 | }, | 99 | }, |
77 | 100 | ||
78 | handleNewFileNameOnkeyup:{ | 101 | handleNewFileNameChange:{ |
79 | value:function(evt){ | 102 | value:function(evt){ |
80 | this.fileName = this.newFileName.value; | 103 | this.fileName = this.newFileName.value; |
81 | if(this.fileName !== ""){ | 104 | if(this.isValidFileName(this.fileName)){ |
82 | if(this.isValidFileName(this.fileName)){ | ||
83 | this.enableOk(); | 105 | this.enableOk(); |
84 | } | ||
85 | } | 106 | } |
86 | } | 107 | } |
87 | }, | 108 | }, |
88 | 109 | ||
110 | handleKeyup:{ | ||
111 | value: function(evt){ | ||
112 | if(evt.keyCode === 13){ | ||
113 | if(!this.okButton.hasAttribute("disabled")){ | ||
114 | this.handleOkButtonAction(evt); | ||
115 | } | ||
116 | }else if(evt.keyCode === 27){ | ||
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); | ||
128 | } | ||
129 | } | ||
130 | }, | ||
131 | |||
132 | handleEscKey:{ | ||
133 | value: function(evt){ | ||
134 | if(this.application.ninja.newFileController.saveAsDialog !== null){ | ||
135 | this.handleCancelButtonAction(evt); | ||
136 | } | ||
137 | } | ||
138 | }, | ||
89 | 139 | ||
90 | enableOk:{ | 140 | enableOk:{ |
91 | value: function(){ | 141 | value: function(){ |
@@ -99,7 +149,7 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
99 | handleCancelButtonAction :{ | 149 | handleCancelButtonAction :{ |
100 | value:function(evt){ | 150 | value:function(evt){ |
101 | //clean up memory | 151 | //clean up memory |
102 | //this.cleanup(); | 152 | this.cleanup(); |
103 | 153 | ||
104 | if(this.popup){ | 154 | if(this.popup){ |
105 | this.popup.hide(); | 155 | this.popup.hide(); |
@@ -134,7 +184,7 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
134 | 184 | ||
135 | if(success){ | 185 | if(success){ |
136 | //clean up memory | 186 | //clean up memory |
137 | //this.cleanup(); | 187 | this.cleanup(); |
138 | 188 | ||
139 | if(this.popup){ | 189 | if(this.popup){ |
140 | this.popup.hide(); | 190 | this.popup.hide(); |
@@ -155,10 +205,8 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
155 | isValidUri:{ | 205 | isValidUri:{ |
156 | value: function(uri){ | 206 | value: function(uri){ |
157 | var status= this.application.ninja.coreIoApi.isValidUri(uri); | 207 | var status= this.application.ninja.coreIoApi.isValidUri(uri); |
158 | if(uri !== ""){ | 208 | if((uri !== null) && !status){ |
159 | if(!status){ | ||
160 | this.showError("! Invalid directory."); | 209 | this.showError("! Invalid directory."); |
161 | } | ||
162 | } | 210 | } |
163 | return status; | 211 | return status; |
164 | } | 212 | } |
@@ -166,10 +214,8 @@ var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, { | |||
166 | isValidFileName:{ | 214 | isValidFileName:{ |
167 | value: function(fileName){ | 215 | value: function(fileName){ |
168 | var status = this.validateFileName(fileName); | 216 | var status = this.validateFileName(fileName); |
169 |