aboutsummaryrefslogtreecommitdiff
path: root/js/io/ui/new-file-dialog/new-file-options-navigator.reel/new-file-options-navigator.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/io/ui/new-file-dialog/new-file-options-navigator.reel/new-file-options-navigator.js')
-rw-r--r--js/io/ui/new-file-dialog/new-file-options-navigator.reel/new-file-options-navigator.js70
1 files changed, 52 insertions, 18 deletions
diff --git a/js/io/ui/new-file-dialog/new-file-options-navigator.reel/new-file-options-navigator.js b/js/io/ui/new-file-dialog/new-file-options-navigator.reel/new-file-options-navigator.js
index 3a2e3e96..f17b15d5 100644
--- a/js/io/ui/new-file-dialog/new-file-options-navigator.reel/new-file-options-navigator.js
+++ b/js/io/ui/new-file-dialog/new-file-options-navigator.reel/new-file-options-navigator.js
@@ -9,7 +9,6 @@ var Montage = require("montage/core/core").Montage,
9 iconsListModule = require("js/components/ui/icon-list-basic/iconsList.reel"), 9 iconsListModule = require("js/components/ui/icon-list-basic/iconsList.reel"),
10 treeModule = require("js/components/ui/tree-basic/tree.reel"), 10 treeModule = require("js/components/ui/tree-basic/tree.reel"),
11 newFileLocationSelectionModule = require("js/io/ui/new-file-dialog/new-file-workflow-controller"); 11 newFileLocationSelectionModule = require("js/io/ui/new-file-dialog/new-file-workflow-controller");
12 //nj= ("js/lib/NJUtils.js").NJUtils;
13 12
14var NewFileOptionsNavigator = exports.NewFileOptionsNavigator = Montage.create(Component, { 13var NewFileOptionsNavigator = exports.NewFileOptionsNavigator = Montage.create(Component, {
15 14
@@ -92,6 +91,14 @@ var NewFileOptionsNavigator = exports.NewFileOptionsNavigator = Montage.create(C
92 91
93 this.selectedProjectType = {"uri":this.newFileModel.defaultProjectType, "element":null}; 92 this.selectedProjectType = {"uri":this.newFileModel.defaultProjectType, "element":null};
94 } 93 }
94
95 //update file Extension
96 if(!!this.newFileModel.projectTypeData[this.newFileModel.defaultProjectType].fileExtension){
97 var fileExtensionEl = this.element.querySelector(".fileExtension");
98 if(!!fileExtensionEl){
99 fileExtensionEl.innerHTML = ""+this.newFileModel.projectTypeData[this.newFileModel.defaultProjectType].fileExtension;
100 }
101 }
95 } 102 }
96 103
97 }, 104 },
@@ -128,7 +135,15 @@ var NewFileOptionsNavigator = exports.NewFileOptionsNavigator = Montage.create(C
128 135
129 //clear current template selection 136 //clear current template selection
130 if((!!this.selectedTemplate) && (this.selectedTemplate.element.classList.contains("selected"))){ 137 if((!!this.selectedTemplate) && (this.selectedTemplate.element.classList.contains("selected"))){
131 this.selectedTemplate.element.classList.remove("selected"); 138 this.selectedTemplate.element.classList.remove("selected");
139 }
140
141 //update file Extension
142 if(!!this.newFileModel.projectTypeData[evt.uri].fileExtension){
143 var fileExtensionEl = this.element.querySelector(".fileExtension");
144 if(!!fileExtensionEl){
145 fileExtensionEl.innerHTML = ""+this.newFileModel.projectTypeData[evt.uri].fileExtension;
146 }
132 } 147 }
133 148
134 //disable ok 149 //disable ok
@@ -186,6 +201,7 @@ var NewFileOptionsNavigator = exports.NewFileOptionsNavigator = Montage.create(C
186 projectWidth = this.newFileLocation.templateWidth, 201 projectWidth = this.newFileLocation.templateWidth,
187 projectHeight = this.newFileLocation.templateHeight, 202 projectHeight = this.newFileLocation.templateHeight,
188 203
204 newFilePath = "", fileExtension=this.newFileModel.projectTypeData[selectedProjectTypeID].fileExtension,
189 205
190 selectionlog= "selectedProjectTypeID="+selectedProjectTypeID +"\n"+ 206 selectionlog= "selectedProjectTypeID="+selectedProjectTypeID +"\n"+
191 "templateID="+templateID+ "\n"+ 207 "templateID="+templateID+ "\n"+
@@ -194,29 +210,30 @@ var NewFileOptionsNavigator = exports.NewFileOptionsNavigator = Montage.create(C
194 "projectWidth="+projectWidth+"\n"+ 210 "projectWidth="+projectWidth+"\n"+
195 "projectHeight="+projectHeight; 211 "projectHeight="+projectHeight;
196 212
213
214 if(/[^/\\]$/g.test(projectDirectory)){
215 projectDirectory = projectDirectory + "/";
216 }
217 if(!!fileExtension && (projectName.lastIndexOf(fileExtension) !== (projectName.length - fileExtension.length))){
218 projectName = projectName+fileExtension;
219 }
220 newFilePath = "" + projectDirectory + projectName;
221
222
197 if(!!this.selectedProjectType && !!this.selectedTemplate 223 if(!!this.selectedProjectType && !!this.selectedTemplate
198 && this.isValidFileName(projectName) && this.isValidUri(projectDirectory) 224 && this.isValidFileName(projectName) && this.isValidUri(projectDirectory)
199 && !this.checkFileExists(projectName, projectDirectory, this.selectedProjectType) 225 && !this.checkFileExists(projectName, projectDirectory, this.selectedProjectType)
200 ){ 226 ){
201 this.error.innerHTML=""; 227 this.error.innerHTML="";
202 console.log("$$$ new file selections: \n" + selectionlog); 228 //console.log("$$$ new file selections: \n" + selectionlog);
203 if(!!this.newFileModel.callback && !!this.newFileModel.callbackScope){//inform document-controller if save successful 229 if(!!this.newFileModel.callback && !!this.newFileModel.callbackScope){//inform document-controller if save successful
204 this.newFileModel.callback.call(this.newFileModel.callbackScope, {"selectedProjectTypeID":selectedProjectTypeID, 230 this.newFileModel.callback.call(this.newFileModel.callbackScope, {"fileTemplateUri":selectedProjectTypeID,
205 "templateID":templateID, 231 "newFilePath":newFilePath});//document-controller api
206 "projectName": projectName,
207 "projectDirectory":projectDirectory,
208 "projectWidth":projectWidth,
209 "projectHeight":projectHeight});//document-controller api
210 }else{ 232 }else{
211 //send selection event 233 //send selection event
212 var newFileSelectionEvent = document.createEvent("Events"); 234 var newFileSelectionEvent = document.createEvent("Events");
213 newFileSelectionEvent.initEvent("createNewFile", false, false); 235 newFileSelectionEvent.initEvent("createNewFile", false, false);
214 newFileSelectionEvent.newFileOptions = {"selectedProjectTypeID":selectedProjectTypeID, 236 newFileSelectionEvent.newFileOptions = {"fileTemplateUri":selectedProjectTypeID, "newFilePath":newFilePath};
215 "templateID":templateID,
216 "projectName": projectName,
217 "projectDirectory":projectDirectory,
218 "projectWidth":projectWidth,
219 "projectHeight":projectHeight};
220 this.eventManager.dispatchEvent(newFileSelectionEvent); 237 this.eventManager.dispatchEvent(newFileSelectionEvent);
221 } 238 }
222 //store last selected project type 239 //store last selected project type
@@ -306,7 +323,7 @@ var NewFileOptionsNavigator = exports.NewFileOptionsNavigator = Montage.create(C
306 323
307 if(!!this.selectedProjectType && !!this.selectedTemplate 324 if(!!this.selectedProjectType && !!this.selectedTemplate
308 && this.isValidFileName(this.newFileName) && this.isValidUri(this.newFileDirectory) 325 && this.isValidFileName(this.newFileName) && this.isValidUri(this.newFileDirectory)
309 && !this.checkFileExists(this.newFileName, this.newFileDirectory, this.selectedProjectType) 326 && !this.checkFileExists(this.newFileName, this.newFileDirectory, this.newFileModel.projectTypeData[this.selectedProjectType.uri].fileExtension)
310 ){ 327 ){
311 status = true; 328 status = true;
312 this.okButton.removeAttribute("disabled"); 329 this.okButton.removeAttribute("disabled");
@@ -346,7 +363,7 @@ var NewFileOptionsNavigator = exports.NewFileOptionsNavigator = Montage.create(C
346 }, 363 },
347 isValidFileName:{ 364 isValidFileName:{
348 value: function(fileName){ 365 value: function(fileName){
349 var status = nj.isValidFileName(fileName); 366 var status = this.isValidFileName(fileName);
350 if(fileName !== ""){ 367 if(fileName !== ""){
351 if(!status){ 368 if(!status){
352 this.showError("! Invalid file name."); 369 this.showError("! Invalid file name.");
@@ -373,6 +390,23 @@ var NewFileOptionsNavigator = exports.NewFileOptionsNavigator = Montage.create(C
373 this.okButton.setAttribute("disabled", "true"); 390 this.okButton.setAttribute("disabled", "true");
374 } 391 }
375 } 392 }
376 } 393 },
394
395 /***
396 * file name validation
397 */
398 isValidFileName:{
399 value: function(fileName){
400 var status = false;
401 if(fileName !== ""){
402 fileName = fileName.replace(/^\s+|\s+$/g,"");
403 status = !(/[/\\]/g.test(fileName));
404 if(status && navigator.userAgent.indexOf("Macintosh") != -1){//for Mac files beginning with . are hidden
405 status = !(/^\./g.test(fileName));
406 }
407 }
408 return status;
409 }
410 }
377 411
378}); \ No newline at end of file 412}); \ No newline at end of file