aboutsummaryrefslogtreecommitdiff
path: root/js/io/ui/file-picker
diff options
context:
space:
mode:
authorJon Reid2012-02-27 12:08:17 -0800
committerJon Reid2012-02-27 12:08:17 -0800
commitd55224f36da55e26c266a02efa6e58d4ecf1253e (patch)
tree36faa8ff93c0f7b925f5c0a7fb85b5d209da1f8e /js/io/ui/file-picker
parentec5f81c6c0ccf865505ab82ebf9240c667f05c91 (diff)
parentcf9e9b711ba3d77a2a0888f8ab763383f53a1619 (diff)
downloadninja-d55224f36da55e26c266a02efa6e58d4ecf1253e.tar.gz
Merge remote-tracking branch 'ninja-jduran/Timeline' into Timeline-local
Diffstat (limited to 'js/io/ui/file-picker')
-rwxr-xr-xjs/io/ui/file-picker/file-input-field.reel/file-input-field.js21
-rwxr-xr-xjs/io/ui/file-picker/file-picker-controller.js36
-rw-r--r--js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js26
3 files changed, 35 insertions, 48 deletions
diff --git a/js/io/ui/file-picker/file-input-field.reel/file-input-field.js b/js/io/ui/file-picker/file-input-field.reel/file-input-field.js
index 235be8ad..651fd7fa 100755
--- a/js/io/ui/file-picker/file-input-field.reel/file-input-field.js
+++ b/js/io/ui/file-picker/file-input-field.reel/file-input-field.js
@@ -9,24 +9,13 @@ var Montage = require("montage/core/core").Montage,
9 9
10var FileInputField = exports.FileInputField = Montage.create(Component, { 10var FileInputField = exports.FileInputField = Montage.create(Component, {
11 11
12 hasReel: {
13 value: true
14 },
15
16 willDraw: {
17 enumerable: false,
18 value: function() {}
19 },
20 draw: {
21 enumerable: false,
22 value: function() {}
23 },
24 didDraw: { 12 didDraw: {
25 enumerable: false, 13 enumerable: false,
26 value: function() { 14 value: function() {
27 var that = this; 15 var that = this;
28 this.findDirectory.identifier = "findDirectory"; 16 this.findDirectory.identifier = "findDirectory";
29 this.findDirectory.addEventListener("click", function(evt){that.handleFindDirectoryClick(evt);}, false); 17
18 this.findDirectory.addEventListener("click", this, false);
30 19
31 this.eventManager.addEventListener("pickerSelectionsDone", function(evt){that.handleFileInputPickerSelectionsDone(evt);}, false); 20 this.eventManager.addEventListener("pickerSelectionsDone", function(evt){that.handleFileInputPickerSelectionsDone(evt);}, false);
32 21
@@ -60,8 +49,6 @@ var FileInputField = exports.FileInputField = Montage.create(Component, {
60 49
61 handleFindDirectoryClick: { 50 handleFindDirectoryClick: {
62 value: function(evt){ 51 value: function(evt){
63 var openFilePicker = document.createEvent("Events");
64 openFilePicker.initEvent("openFilePicker", false, false);
65 var settings = {}; 52 var settings = {};
66 if(this.selectDirectory === true){ 53 if(this.selectDirectory === true){
67 settings.inFileMode = false; 54 settings.inFileMode = false;
@@ -71,8 +58,8 @@ var FileInputField = exports.FileInputField = Montage.create(Component, {
71 settings.pickerName = this.pickerName || "fileSelector"; 58 settings.pickerName = this.pickerName || "fileSelector";
72 } 59 }
73 settings.callback = this.filePickerCallback.bind(this); 60 settings.callback = this.filePickerCallback.bind(this);
74 openFilePicker.settings = settings; 61
75 this.eventManager.dispatchEvent(openFilePicker); 62 NJevent("openFilePicker", settings);
76 } 63 }
77 }, 64 },
78 65
diff --git a/js/io/ui/file-picker/file-picker-controller.js b/js/io/ui/file-picker/file-picker-controller.js
index 129bebad..3b19de83 100755
--- a/js/io/ui/file-picker/file-picker-controller.js
+++ b/js/io/ui/file-picker/file-picker-controller.js
@@ -19,25 +19,21 @@ var FilePickerController = exports.FilePickerController = Montage.create(require
19 writable:false, 19 writable:false,
20 enumerable:true, 20 enumerable:true,
21 value:function(){ 21 value:function(){
22 var that = this; 22 this.eventManager.addEventListener("openFilePicker", this, false);
23
24 this.eventManager.addEventListener("openFilePicker", function(evt){
25 var settings;
26 if(typeof evt._event.settings !== "undefined"){
27 settings = evt._event.settings;
28 }
29 that.showFilePicker(settings);
30 }, false);
31
32 } 23 }
33 }, 24 },
34 25
35 filePickerPopupType:{ 26 filePickerPopupType:{
36 writable: true,
37 enumerable: false, 27 enumerable: false,
38 value: "filePicker" 28 value: "filePicker"
39 }, 29 },
40 30
31 handleOpenFilePicker: {
32 value: function(evt) {
33 this.showFilePicker(evt.detail);
34 }
35 },
36
41 /** 37 /**
42 *this function is used to create an instance of a file picker 38 *this function is used to create an instance of a file picker
43 * 39 *
@@ -129,7 +125,9 @@ var FilePickerController = exports.FilePickerController = Montage.create(require
129 } 125 }
130 126
131 if(!!storedUri){ 127 if(!!storedUri){
132 aModel.currentRoot = unescape(storedUri); 128 // This is depracated -- use decodeURI instead
129 //aModel.currentRoot = unescape(storedUri);
130 aModel.currentRoot = decodeURI(storedUri);
133 } 131 }
134 132
135 if(!!allFileFilters){aModel.fileFilters = allFileFilters;} 133 if(!!allFileFilters){aModel.fileFilters = allFileFilters;}
@@ -138,7 +136,6 @@ var FilePickerController = exports.FilePickerController = Montage.create(require
138 if(typeof pickerMode !== "undefined"){aModel.pickerMode = pickerMode;} 136 if(typeof pickerMode !== "undefined"){aModel.pickerMode = pickerMode;}
139 137
140 138
141
142 //logic: get file content data onDemand from the REST api for the default or last opened root. Cache the data in page [in local cache ? dirty fs? ]. Filter on client side to reduce network calls. 139 //logic: get file content data onDemand from the REST api for the default or last opened root. Cache the data in page [in local cache ? dirty fs? ]. Filter on client side to reduce network calls.
143 this.openFilePickerAsModal(callback, aModel); 140 this.openFilePickerAsModal(callback, aModel);
144 141
@@ -152,15 +149,6 @@ var FilePickerController = exports.FilePickerController = Montage.create(require
152 writable:false, 149 writable:false,
153 enumerable:true, 150 enumerable:true,
154 value:function(callback, aModel){ 151 value:function(callback, aModel){
155 //render modal dialog
156 var pickerNavContent = document.createElement("div");
157 pickerNavContent.id = "filePicker";
158
159 pickerNavContent.style.color = "#fff";
160
161 //hack (elements needs to be on DOM to be drawn)
162 document.getElementById('modalContainer').appendChild(pickerNavContent);
163
164 var pickerNavChoices = Montage.create(pickerNavigatorReel); 152 var pickerNavChoices = Montage.create(pickerNavigatorReel);
165 var initUri = aModel.currentRoot; 153 var initUri = aModel.currentRoot;
166 154
@@ -171,10 +159,6 @@ var FilePickerController = exports.FilePickerController = Montage.create(require
171 159
172 pickerNavChoices.mainContentData = this.prepareContentList(initUri, aModel); 160 pickerNavChoices.mainContentData = this.prepareContentList(initUri, aModel);
173 pickerNavChoices.pickerModel = aModel; 161 pickerNavChoices.pickerModel = aModel;
174 pickerNavChoices.element = pickerNavContent;
175
176 //hack - remove after rendering and add in modal dialog
177 document.getElementById('modalContainer').removeChild(pickerNavContent);
178 162
179 var popup = Popup.create(); 163 var popup = Popup.create();
180 popup.content = pickerNavChoices; 164 popup.content = pickerNavChoices;
diff --git a/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js b/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js
index 411386f9..428e7bab 100644
--- a/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js
+++ b/js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js
@@ -214,6 +214,7 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, {
214 214
215 this.element.addEventListener("openFolder", function(evt){that.handlePickerNavOpenFolder(evt);}, false);//add icon double click event listener to reload iconList with new set of data 215 this.element.addEventListener("openFolder", function(evt){that.handlePickerNavOpenFolder(evt);}, false);//add icon double click event listener to reload iconList with new set of data
216 this.element.addEventListener("selectedItem", function(evt){that.handlePickerNavSelectedItem(evt);}, false);//for single selection only 216 this.element.addEventListener("selectedItem", function(evt){that.handlePickerNavSelectedItem(evt);}, false);//for single selection only
217 this.element.addEventListener("selectFile", function(evt){that.handlePickerNavSelectedFile(evt);}, false);//for file selection
217 this.element.addEventListener("showMetadata", function(evt){that.handlePickerNavShowMetadata(evt);}, false);//show metadata on hover of icon 218 this.element.addEventListener("showMetadata", function(evt){that.handlePickerNavShowMetadata(evt);}, false);//show metadata on hover of icon
218 this.element.addEventListener("updateMetadata", function(evt){that.handlePickerNavUpdateMetadata(evt);}, false);//show metadata on click of icon 219 this.element.addEventListener("updateMetadata", function(evt){that.handlePickerNavUpdateMetadata(evt);}, false);//show metadata on click of icon
219 //this.addressGo.addEventListener("click", this, false); 220 //this.addressGo.addEventListener("click", this, false);
@@ -669,14 +670,29 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, {
669 } 670 }
670 }, 671 },
671 672
673 handlePickerNavSelectedFile:{
674 value: function(evt){
675 var uri = evt.fileUri;
676
677 //do selection if in file selection mode
678 if(this.pickerModel.inFileMode && (this.application.ninja.filePickerController._directoryContentCache[uri].type === "file")){
679 this.okButton.removeAttribute("disabled");
680 //put into selectedItems..currently single selection is supported
681 this.selectedItems = [uri];
682 this.currentURI = uri.substring(0, uri.lastIndexOf("/"));
683 this.handleOkButtonAction();
684 }
685 }
686 },
687
672 handlePickerNavShowMetadata: { 688 handlePickerNavShowMetadata: {
673 value: function(evt){ 689 value: function(evt){
674 //update matadata only if nothing is already selected 690 //update matadata only if nothing is already selected
675 if(this.currentSelectedNode == null){ 691 if(this.currentSelectedNode == null){
676 //console.log("handle showmetadata - true"); 692 //console.log("handle showmetadata - true");
677 this.metadataSection.innerHTML = evt.metadata; 693 this.metadataSection.innerHTML = evt.metadata;
678 }