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
|
/* <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 FileInputField = exports.FileInputField = Montage.create(Component, {
didDraw: {
enumerable: false,
value: function() {
var that = this;
this.findDirectory.identifier = "findDirectory";
this.findDirectory.addEventListener("click", this, false);
this.eventManager.addEventListener("pickerSelectionsDone", this.handleFileInputPickerSelectionsDone, false);
this.addPropertyChangeListener("newFileDirectory.value", this.handleNewFileDirectoryChange, false);
this.newFileDirectory.element.addEventListener("keyup", this, false);
}
},
/**
* Either selectDirectory OR selectFile can be true
* If both are false then the file picker will default to file selection mode
*/
selectDirectory:{
writable: true,
enumerable:false,
value: false
},
pickerName:{
writable: true,
enumerable:false,
value: null
},
selectFile:{
writable: true,
enumerable:false,
value: false
},
handleFindDirectoryClick: {
value: function(evt){
var settings = {};
if(this.selectDirectory === true){
settings.inFileMode = false;
settings.pickerName = this.pickerName || "newFileDirectorySelector";
}else{
settings.inFileMode = true;
settings.pickerName = this.pickerName || "fileSelector";
}
settings.callback = this.filePickerCallback.bind(this);
NJevent("openFilePicker", settings);
}
},
handleNewFileDirectoryChange:{
value:function(evt){
var newFileDirectorySetEvent = document.createEvent("Events");
newFileDirectorySetEvent.initEvent("newFileDirectorySet", false, false);
newFileDirectorySetEvent.newFileDirectory = this.newFileDirectory.value;
newFileDirectorySetEvent.keyCode = evt.keyCode;
this.eventManager.dispatchEvent(newFileDirectorySetEvent);
}
},
handleKeyup:{
value: function(evt){
if(evt.keyCode === 13){
var enterKeyupEvent = document.createEvent("Events");
enterKeyupEvent.initEvent("enterKey", false, false);
this.eventManager.dispatchEvent(enterKeyupEvent);
}else if(evt.keyCode === 27){
var escKeyupEvent = document.createEvent("Events");
escKeyupEvent.initEvent("escKey", false, false);
this.eventManager.dispatchEvent(escKeyupEvent);
}
}
},
handleFileInputPickerSelectionsDone:{
value: function(evt){
var selectedUri = "";
if(!!evt._event.selectedItems && evt._event.selectedItems.length > 0){
selectedUri = evt._event.selectedItems[0];
this.newFileDirectory.value = selectedUri;
var newFileDirectorySetEvent = document.createEvent("Events");
newFileDirectorySetEvent.initEvent("newFileDirectorySet", false, false);
newFileDirectorySetEvent.newFileDirectory = this.newFileDirectory.value;
this.eventManager.dispatchEvent(newFileDirectorySetEvent);
}
}
},
filePickerCallback:{
value: function(obj){
var selectedUri = "";
if(!!obj && obj.uri && obj.uri.length > 0){
selectedUri = obj.uri[0];
this.newFileDirectory.value = selectedUri;
this.newFileDirectory.element.focus();
var newFileDirectorySetEvent = document.createEvent("Events");
newFileDirectorySetEvent.initEvent("newFileDirectorySet", false, false);
newFileDirectorySetEvent.newFileDirectory = this.newFileDirectory.value;
this.eventManager.dispatchEvent(newFileDirectorySetEvent);
}
}
}
});
|