1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/* <copyright>
This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
</copyright> */
var Montage = require("montage/core/core").Montage,
Component = require("montage/ui/component").Component;
var SaveAsDialog = exports.SaveAsDialog = Montage.create(Component, {
hasReel: {
value: true
},
fileName : {
enumerable: true,
writable: true,
value: ""
},
callback : {
enumerable: true,
writable: true,
value: null
},
callbackScope : {
enumerable: true,
writable: true,
value: null
},
willDraw: {
enumerable: false,
value: function() {}
},
draw: {
enumerable: false,
value: function() {}
},
didDraw: {
enumerable: false,
value: function() {
this.fileInputField.selectDirectory = true;
this.fileInputField.pickerName = "saveAsDirectoryPicker";
this.newFileName.value = this.fileName;
this.fileInputField.newFileDirectory.value = this.folderUri;
}
},
handleCancelButtonAction :{
value:function(evt){
//clean up memory
//this.cleanup();
if(this.popup){
this.popup.hide();
}
}
},
handleOkButtonAction:{
value: function(evt){
var filename = this.fileName,
newFileDirectory = this.newFileDirectory,
success = true;
try{
//validate file name and folder path
//check if file already exists
if(!!this.callback && !!this.callbackScope){//inform document-controller if save successful
this.callback.call(this.callbackScope, {"filename":filename, "destination": newFileDirectory});//document-controller api
}else{
//send save as event
var saveAsEvent = document.createEvent("Events");
saveAsEvent.initEvent("saveAsFile", false, false);
saveAsEvent.saveAsOptions = {"filename":filename, "destination": newFileDirectory};
this.eventManager.dispatchEvent(saveAsEvent);
}
}catch(e){
success = false;
console.log("[ERROR] Failed to save: "+ this.fileName + " at "+ this.newFileDirectory);
}
if(success){
//clean up memory
//this.cleanup();
if(this.popup){
this.popup.hide();
}
}
}
},
isValidUri:{
value: function(uri){
var isWindowsUri=false, isUnixUri=false,status=false;
if(uri !== ""){
uri = uri.replace(/^\s+|\s+$/g,""); // strip any leading or trailing spaces
//for local machine folder uri
isWindowsUri = /^([a-zA-Z]:)(\\[^<>:"/\\|?*]+)*\\?$/gi.test(uri);
isUnixUri = /^(\/)?(\/(?![.])[^/]*)*\/?$/gi.test(uri);//folders beginning with . are hidden on Mac / Unix
status = isWindowsUri || isUnixUri;
if(isWindowsUri && isUnixUri){status = false;}
}
return status;
}
},
isValidFileName:{
value: function(fileName){
var status = false;
if(fileName !== ""){
fileName = fileName.replace(/^\s+|\s+$/g,"");
status = !(/[/\\]/g.test(fileName));
if(status && navigator.userAgent.indexOf("Macintosh") != -1){//for Mac files beginning with . are hidden
status = !(/^\./g.test(fileName));
}
}
return status;
}
}
});
|