Index: chrome/browser/resources/file_manager/js/file_manager.js |
diff --git a/chrome/browser/resources/file_manager/js/file_manager.js b/chrome/browser/resources/file_manager/js/file_manager.js |
index 7425dac2b7bcc3d2cf4b9e92a9f7f157784fcb26..ba499c525c5342d37f654b2da4b065b2caa2212c 100644 |
--- a/chrome/browser/resources/file_manager/js/file_manager.js |
+++ b/chrome/browser/resources/file_manager/js/file_manager.js |
@@ -590,6 +590,8 @@ FileManager.prototype = { |
this.alert = new d.AlertDialog(this.dialogDom_); |
this.confirm = new d.ConfirmDialog(this.dialogDom_); |
this.prompt = new d.PromptDialog(this.dialogDom_); |
+ this.defaultTaskPicker = |
+ new cr.filebrowser.DefaultActionDialog(this.dialogDom_); |
}; |
/** |
@@ -2591,6 +2593,7 @@ FileManager.prototype = { |
} |
} |
+ var defaultIdx = 0; |
this.taskItems_.hidden = dropDownItems.length == 0; |
if (dropDownItems.length > 1) { |
@@ -2600,7 +2603,17 @@ FileManager.prototype = { |
for (var j = 0; j < dropDownItems.length; j++) { |
this.taskItems_.addDropDownItem(dropDownItems[j]); |
+ if (dropDownItems[j].task.taskId == defaultTask.taskId) { |
+ defaultIdx = j; |
+ } |
} |
+ |
+ this.taskItems_.addSeparator(); |
+ this.taskItems_.addDropDownItem({ |
+ label: str('CHANGE_DEFAULT_MENU_ITEM'), |
+ items: dropDownItems, |
+ defaultIdx: defaultIdx |
+ }); |
} |
selection.tasksList = tasksList; |
@@ -2622,10 +2635,55 @@ FileManager.prototype = { |
} |
}; |
+ /** |
+ * Task combobox handler. |
+ * |
+ * @param {Object} event Event containing task which was clicked. |
+ */ |
FileManager.prototype.onTaskItemClicked_ = function(event) { |
- this.dispatchFileTask_(event.item.task.taskId, this.selection.urls); |
+ if (event.item.task) { |
+ // Task field doesn't exist on change-default dropdown item. |
+ this.dispatchFileTask_(event.item.task.taskId, this.selection.urls); |
+ } else { |
+ var extensions = []; |
+ |
+ for (var i = 0; i < this.selection.urls.length; i++) { |
+ var match = /\.(\w+)$/g.exec(this.selection.urls[i]); |
+ if (match) { |
+ var ext = match[1].toUpperCase(); |
+ if (extensions.indexOf(ext) == -1) { |
+ extensions.push(ext); |
+ } |
+ } |
+ } |
+ |
+ var format = ''; |
+ |
+ if (extensions.length != 1) { |
+ format = extensions[0]; |
+ } |
+ |
+ // Change default was clicked. We should open "change default" dialog. |
+ this.defaultTaskPicker.show( |
+ strf('CHANGE_DEFAULT_CAPTION', format), |
+ event.item.items, event.item.defaultIdx, |
+ this.onDefaultTaskDone_.bind(this)); |
+ } |
}; |
+ |
+ /** |
+ * Set's given task as default, when this task is applicable. |
+ * @param {Object} task Task to set as default. |
+ */ |
+ FileManager.prototype.onDefaultTaskDone_ = function(task) { |
+ chrome.fileBrowserPrivate.setDefaultTask(task.taskId); |
+ |
+ chrome.fileBrowserPrivate.getFileTasks( |
+ this.selection.urls, |
+ this.onTasksFound_.bind(this, this.selection)); |
+ } |
+ |
/** |
* Dispatches default task for the current selection. If tasks are not ready |
* yet, dispatches after task are available. |