Chromium Code Reviews| 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 d29de39efcc67ea3a7d0086abe2c6a555b9b6a08..5da7fc2dc2f8ef4eb2278b8dea9d6a9c5c7eba3a 100644 |
| --- a/chrome/browser/resources/file_manager/js/file_manager.js |
| +++ b/chrome/browser/resources/file_manager/js/file_manager.js |
| @@ -495,6 +495,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_); |
| }; |
| /** |
| @@ -2433,11 +2435,19 @@ FileManager.prototype = { |
| task.title = str('INSTALL_CRX'); |
| } |
| } |
| + |
| + var label = task.title; |
| + if (defaultTask == null) { |
| + defaultTask = task; |
| + label = label + ' ' + str('DEFAULT_ACTION_LABEL'); |
| + } |
| + |
| if (tasksList.length > 1) |
| - this.taskItems_.addItem({label: task.title, |
| + this.taskItems_.addItem({label: label, |
| iconUrl: task.iconUrl, task: task}); |
| + |
| tasksCount++; |
| - if (defaultTask == null) defaultTask = task; |
| + |
| } |
| this.taskItems_.hidden = tasksCount == 0; |
| @@ -2446,6 +2456,12 @@ FileManager.prototype = { |
| iconUrl: defaultTask.iconUrl, task: defaultTask}); |
| } |
| + if (tasksList.length > 1) { |
|
dgozman
2012/05/18 14:50:06
use tasksCount, which is not the same as tasksList
Dmitry Zvorygin
2012/05/22 14:32:59
Done.
|
| + this.taskItems_.addSeparator(); |
| + this.taskItems_.addItem( |
| + {label: str('CHANGE_DEFAULT_MENU_ITEM'), taskList: tasksList}); |
| + } |
| + |
| selection.tasksList = tasksList; |
| if (selection.dispatchDefault) { |
| // We got a request to dispatch the default task for the selection. |
| @@ -2465,10 +2481,45 @@ 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) { |
| + this.dispatchFileTask_(event.item.task.taskId, this.selection.urls); |
| + } else { |
|
dgozman
2012/05/18 14:50:06
We should have a comment that item without task mu
Dmitry Zvorygin
2012/05/22 14:32:59
Done.
|
| + var extensions = []; |
| + |
| + for (var i = 0; i < this.selection.urls.length; i++) { |
| + var ext = /\.(\w+)$/g.exec(this.selection.urls[i])[1].toUpperCase(); |
|
dgozman
2012/05/18 14:50:06
There may be no extension.
Dmitry Zvorygin
2012/05/22 14:32:59
Done.
|
| + if (extensions.indexOf(ext) == -1) { |
| + extensions.push(ext); |
| + } |
| + } |
| + |
| + // Change default was clicked. We should open "change default" dialog. |
| + this.defaultTaskPicker.show( |
| + strf('CHANGE_DEFAULT_CAPTION', |
|
dgozman
2012/05/18 14:50:06
We don't want to show all extensions in the captio
Dmitry Zvorygin
2012/05/22 14:32:59
Done.
|
| + extensions.join(', ')), |
|
dgozman
2012/05/18 14:50:06
indentation
Dmitry Zvorygin
2012/05/22 14:32:59
Done.
|
| + event.item.taskList, 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. |