aboutsummaryrefslogtreecommitdiff
path: root/js/io/ui/file-picker
diff options
context:
space:
mode:
Diffstat (limited to 'js/io/ui/file-picker')
-rwxr-xr-xjs/io/ui/file-picker/file-input-field.reel/file-input-field.js10
-rwxr-xr-xjs/io/ui/file-picker/file-picker-controller.js11
-rwxr-xr-xjs/io/ui/file-picker/file-picker-model.js6
-rw-r--r--js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js20
4 files changed, 40 insertions, 7 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 651fd7fa..46e8b386 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
@@ -20,6 +20,7 @@ var FileInputField = exports.FileInputField = Montage.create(Component, {
20 this.eventManager.addEventListener("pickerSelectionsDone", function(evt){that.handleFileInputPickerSelectionsDone(evt);}, false); 20 this.eventManager.addEventListener("pickerSelectionsDone", function(evt){that.handleFileInputPickerSelectionsDone(evt);}, false);
21 21
22 this.newFileDirectory.addEventListener("keyup", function(evt){that.handleNewFileDirectoryOnkeyup(evt);}, false); 22 this.newFileDirectory.addEventListener("keyup", function(evt){that.handleNewFileDirectoryOnkeyup(evt);}, false);
23 this.newFileDirectory.addEventListener("paste", this, false);
23 } 24 }
24 }, 25 },
25 26
@@ -63,12 +64,21 @@ var FileInputField = exports.FileInputField = Montage.create(Component, {
63 } 64 }
64 }, 65 },
65 66
67 handlePaste:{
68 value:function(evt){
69 evt.preventDefault();
70 evt.target.value = evt.clipboardData.getData("Text");
71 this.handleNewFileDirectoryOnkeyup(evt);
72 }
73 },
74
66 handleNewFileDirectoryOnkeyup:{ 75 handleNewFileDirectoryOnkeyup:{
67 value:function(evt){ 76 value:function(evt){
68 if(this.newFileDirectory.value !== ""){ 77 if(this.newFileDirectory.value !== ""){
69 var newFileDirectorySetEvent = document.createEvent("Events"); 78 var newFileDirectorySetEvent = document.createEvent("Events");
70 newFileDirectorySetEvent.initEvent("newFileDirectorySet", false, false); 79 newFileDirectorySetEvent.initEvent("newFileDirectorySet", false, false);
71 newFileDirectorySetEvent.newFileDirectory = this.newFileDirectory.value; 80 newFileDirectorySetEvent.newFileDirectory = this.newFileDirectory.value;
81 newFileDirectorySetEvent.keyCode = evt.keyCode;
72 this.eventManager.dispatchEvent(newFileDirectorySetEvent); 82 this.eventManager.dispatchEvent(newFileDirectorySetEvent);
73 } 83 }
74 } 84 }
diff --git a/js/io/ui/file-picker/file-picker-controller.js b/js/io/ui/file-picker/file-picker-controller.js
index 3b19de83..436a50f3 100755
--- a/js/io/ui/file-picker/file-picker-controller.js
+++ b/js/io/ui/file-picker/file-picker-controller.js
@@ -23,6 +23,11 @@ var FilePickerController = exports.FilePickerController = Montage.create(require
23 } 23 }
24 }, 24 },
25 25
26 pickerNavChoices:{
27 enumerable: true,
28 value: null
29 },
30
26 filePickerPopupType:{ 31 filePickerPopupType:{
27 enumerable: false, 32 enumerable: false,
28 value: "filePicker" 33 value: "filePicker"
@@ -104,7 +109,7 @@ var FilePickerController = exports.FilePickerController = Montage.create(require
104 aModel.topLevelDirectories = topLevelDirectories; 109 aModel.topLevelDirectories = topLevelDirectories;
105 110
106 if(!!topLevelDirectories && !!topLevelDirectories[0]){ 111 if(!!topLevelDirectories && !!topLevelDirectories[0]){
107 aModel.currentRoot = topLevelDirectories[0].uri; 112 aModel.currentRoot = aModel.currentLogicalDrive = topLevelDirectories[0].uri;
108 } 113 }
109 114
110 //populate the last opened folder first, if none then populate default root 115 //populate the last opened folder first, if none then populate default root
@@ -125,8 +130,6 @@ var FilePickerController = exports.FilePickerController = Montage.create(require
125 } 130 }
126 131
127 if(!!storedUri){ 132 if(!!storedUri){
128 // This is depracated -- use decodeURI instead
129 //aModel.currentRoot = unescape(storedUri);
130 aModel.currentRoot = decodeURI(storedUri); 133 aModel.currentRoot = decodeURI(storedUri);
131 } 134 }
132 135
@@ -149,7 +152,7 @@ var FilePickerController = exports.FilePickerController = Montage.create(require
149 writable:false, 152 writable:false,
150 enumerable:true, 153 enumerable:true,
151 value:function(callback, aModel){ 154 value:function(callback, aModel){
152 var pickerNavChoices = Montage.create(pickerNavigatorReel); 155 var pickerNavChoices = this.pickerNavChoices = Montage.create(pickerNavigatorReel);
153 var initUri = aModel.currentRoot; 156 var initUri = aModel.currentRoot;
154 157
155 //remove extra / at the end 158 //remove extra / at the end
diff --git a/js/io/ui/file-picker/file-picker-model.js b/js/io/ui/file-picker/file-picker-model.js
index 09c3ae9c..c92ec586 100755
--- a/js/io/ui/file-picker/file-picker-model.js
+++ b/js/io/ui/file-picker/file-picker-model.js
@@ -73,6 +73,12 @@ exports.FilePickerModel = (require("montage/core/core").Montage).create(require(
73 value:"" 73 value:""
74 }, 74 },
75 75
76 currentLogicalDrive:{
77 writable:true,
78 enumerable:true,
79 value:""
80 },
81
76 callback:{ 82 callback:{
77 writable:true, 83 writable:true,
78 enumerable:true, 84 enumerable:true,
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 3d99ae4d..945b0301 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
@@ -258,12 +258,20 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, {
258 this.element.addEventListener("refreshTreeSegment", function(evt){that.handlePickerNavRefreshTreeSegment(evt);}, false); 258 this.element.addEventListener("refreshTreeSegment", function(evt){that.handlePickerNavRefreshTreeSegment(evt);}, false);
259 this.resultsArea.addEventListener("click", function(evt){that.handleResultsAreaClick(evt);}, false); 259 this.resultsArea.addEventListener("click", function(evt){that.handleResultsAreaClick(evt);}, false);
260 this.element.addEventListener("click", function(evt){that.handlePickerNavClick(evt);}, false); 260 this.element.addEventListener("click", function(evt){that.handlePickerNavClick(evt);}, false);
261
262 this.okButton.addEventListener("click", function(evt){that.handleOkButtonAction(evt);}, false); 261 this.okButton.addEventListener("click", function(evt){that.handleOkButtonAction(evt);}, false);
263 this.cancelButton.addEventListener("click", function(evt){that.handleCancelButtonAction(evt);}, false); 262 this.cancelButton.addEventListener("click", function(evt){that.handleCancelButtonAction(evt);}, false);
264 263
264 this.element.addEventListener("keyup", function(evt){
265 if(evt.keyCode == 27) {
266 if(that.application.ninja.filePickerController.pickerNavChoices !== null){
267 that.handleCancelButtonAction();
268 }
269 }
270 }, true);
271
265 //ready to show picker now 272 //ready to show picker now
266 this.element.style.visibility = "visible"; 273 this.element.style.visibility = "visible";
274 this.element.focus();
267 } 275 }
268 }, 276 },
269 277
@@ -346,6 +354,11 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, {
346 var arr = []; 354 var arr = [];
347 var temp = new String(uri); 355 var temp = new String(uri);
348 while(temp.indexOf("/") != -1){ 356 while(temp.indexOf("/") != -1){
357
358 if(""+temp === this.pickerModel.currentLogicalDrive){//stop at the logical drive
359 break;
360 }
361
349 temp = temp.substring(0, temp.lastIndexOf("/")); 362 temp = temp.substring(0, temp.lastIndexOf("/"));
350 363
351 //populate dropdown irrespective of validity 364 //populate dropdown irrespective of validity
@@ -496,7 +509,7 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, {
496 metadata = "Name: "+data.name; 509 metadata = "Name: "+data.name;
497 } 510 }
498 metadata = metadata + "<br />" + "Type: "+data.type; 511 metadata = metadata + "<br />" + "Type: "+data.type;
499 if(data.size){metadata = metadata + "<br />" + "Size: "+data.size;} 512 if(data.size){metadata = metadata + "<br />" + "Size: "+data.size+" bytes";}
500 if(data.creationDate){metadata = metadata + "<br />" + "Creation date: "+ this.formatTimestamp(data.creationDate);} 513 if(data.creationDate){metadata = metadata + "<br />" + "Creation date: "+ this.formatTimestamp(data.creationDate);}
501 if(data.modifiedDate){metadata = metadata + "<br />" + "Modified date: "+ this.formatTimestamp(data.modifiedDate);} 514 if(data.modifiedDate){metadata = metadata + "<br />" + "Modified date: "+ this.formatTimestamp(data.modifiedDate);}
502 } 515 }
@@ -560,7 +573,7 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, {
560 enumerable: true, 573 enumerable: true,
561 writable: false, 574 writable: false,
562 value : function(evt, dirObj){ 575 value : function(evt, dirObj){
563 this.currentURI = dirObj.uri; 576 this.currentURI = this.pickerModel.currentLogicalDrive = dirObj.uri;
564 577
565 var status = this.pickerViews()[this.selectedPickerView].call(this, dirObj.uri);//dynamically calls the update function of the current picker view 578 var status = this.pickerViews()[this.selectedPickerView].call(this, dirObj.uri);//dynamically calls the update function of the current picker view
566 579
@@ -1066,6 +1079,7 @@ var PickerNavigator = exports.PickerNavigator = Montage.create(Component, {
1066 //clear memory - TODO:check for more memory leaks 1079 //clear memory - TODO:check for more memory leaks
1067 this.pickerModel = null; 1080 this.pickerModel = null;
1068 this.application.ninja.filePickerController._directoryContentCache = {}; 1081 this.application.ninja.filePickerController._directoryContentCache = {};
1082 this.application.ninja.filePickerController.pickerNavChoices = null;
1069 //remove listeners 1083 //remove listeners
1070 this.element.removeEventListener("openFolder", this, false);//add icon double click event listener to reload iconList with new set of data 1084 this.element.removeEventListener("openFolder", this, false);//add icon double click event listener to reload iconList with new set of data
1071 this.element.removeEventListener("selectedItem", this, false);//for single selection only 1085 this.element.removeEventListener("selectedItem", this, false);//for single selection only