Index: ui/file_manager/file_manager/foreground/js/file_manager.js |
diff --git a/ui/file_manager/file_manager/foreground/js/file_manager.js b/ui/file_manager/file_manager/foreground/js/file_manager.js |
index 6fa2db83f99992c56a632b3c65f0fe676aff38b0..d79daceb63f88e96ace24dc2d1f0b42114e4f6e7 100644 |
--- a/ui/file_manager/file_manager/foreground/js/file_manager.js |
+++ b/ui/file_manager/file_manager/foreground/js/file_manager.js |
@@ -288,11 +288,11 @@ function FileManager() { |
this.hostedButton = null; |
/** |
- * The menu item for doing default action. |
+ * The menu item for doing an action. |
* @type {HTMLMenuItemElement} |
* @private |
*/ |
- this.defaultActionMenuItem_ = null; |
+ this.actionMenuItem_ = null; |
/** |
* The button to open gear menu. |
@@ -1387,14 +1387,14 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52; |
this.dialogDom_.ownerDocument.defaultView.addEventListener( |
'resize', this.onResize_.bind(this)); |
- this.defaultActionMenuItem_ = /** @type {!HTMLMenuItemElement} */ |
+ this.actionMenuItem_ = /** @type {!HTMLMenuItemElement} */ |
(queryRequiredElement(this.dialogDom_, '#default-action')); |
this.openWithCommand_ = /** @type {cr.ui.Command} */ |
(this.dialogDom_.querySelector('#open-with')); |
- this.defaultActionMenuItem_.addEventListener('activate', |
- this.dispatchSelectionAction_.bind(this)); |
+ this.actionMenuItem_.addEventListener('activate', |
+ this.onActionMenuItemActivated_.bind(this)); |
this.ui_.dialogFooter.initFileTypeFilter( |
this.fileTypes_, this.params_.includeAllFiles); |
@@ -2276,7 +2276,8 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52; |
selection.tasks.showTaskPicker(this.defaultTaskPicker, |
loadTimeData.getString('CHANGE_DEFAULT_MENU_ITEM'), |
strf('CHANGE_DEFAULT_CAPTION', format), |
- this.onDefaultTaskDone_.bind(this)); |
+ this.onDefaultTaskDone_.bind(this), |
+ true); |
} |
}; |
@@ -2537,6 +2538,17 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52; |
}; |
/** |
+ * Handles activate event of action menu item. |
+ * |
+ * @private |
+ */ |
+ FileManager.prototype.onActionMenuItemActivated_ = function() { |
+ var tasks = this.getSelection().tasks; |
+ if (tasks) |
+ tasks.execute(this.actionMenuItem_.taskId); |
+ }; |
+ |
+ /** |
* Opens the suggest file dialog. |
* |
* @param {Entry} entry Entry of the file. |
@@ -3665,41 +3677,44 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52; |
}; |
/** |
- * Updates default action menu item to match passed taskItem (icon, |
- * label and action). |
+ * Updates action menu item to match passed task items. |
* |
- * @param {Object} defaultItem - taskItem to match. |
- * @param {boolean} isMultiple - if multiple tasks available. |
- */ |
- FileManager.prototype.updateContextMenuActionItems = function(defaultItem, |
- isMultiple) { |
- if (defaultItem) { |
- if (defaultItem.iconType) { |
- this.defaultActionMenuItem_.style.backgroundImage = ''; |
- this.defaultActionMenuItem_.setAttribute('file-type-icon', |
- defaultItem.iconType); |
- } else if (defaultItem.iconUrl) { |
- this.defaultActionMenuItem_.style.backgroundImage = |
- 'url(' + defaultItem.iconUrl + ')'; |
+ * @param {Array.<Object>=} opt_items List of items. |
+ */ |
+ FileManager.prototype.updateContextMenuActionItems = function(opt_items) { |
+ var items = opt_items || []; |
+ |
+ // When only one task is available, show it as default item. |
+ if (items.length === 1) { |
+ var actionItem = items[0]; |
+ |
+ if (actionItem.iconType) { |
+ this.actionMenuItem_.style.backgroundImage = ''; |
+ this.actionMenuItem_.setAttribute('file-type-icon', |
+ actionItem.iconType); |
+ } else if (actionItem.iconUrl) { |
+ this.actionMenuItem_.style.backgroundImage = |
+ 'url(' + actionItem.iconUrl + ')'; |
} else { |
- this.defaultActionMenuItem_.style.backgroundImage = ''; |
+ this.actionMenuItem_.style.backgroundImage = ''; |
} |
- this.defaultActionMenuItem_.label = defaultItem.title; |
- this.defaultActionMenuItem_.disabled = !!defaultItem.disabled; |
- this.defaultActionMenuItem_.taskId = defaultItem.taskId; |
+ this.actionMenuItem_.label = actionItem.title; |
+ this.actionMenuItem_.disabled = !!actionItem.disabled; |
+ this.actionMenuItem_.taskId = actionItem.taskId; |
} |
- var defaultActionSeparator = |
- this.dialogDom_.querySelector('#default-action-separator'); |
+ this.actionMenuItem_.hidden = items.length !== 1; |
+ // When multiple tasks are available, show them in open with. |
this.openWithCommand_.canExecuteChange(); |
- this.openWithCommand_.setHidden(!(defaultItem && isMultiple)); |
- this.openWithCommand_.disabled = |
- defaultItem ? !!defaultItem.disabled : false; |
+ this.openWithCommand_.setHidden(items.length < 2); |
+ this.openWithCommand_.disabled = items.length < 2; |
- this.defaultActionMenuItem_.hidden = !defaultItem; |
- defaultActionSeparator.hidden = !defaultItem; |
+ // Hide default action separator when there does not exist available task. |
+ var defaultActionSeparator = |
+ this.dialogDom_.querySelector('#default-action-separator'); |
+ defaultActionSeparator.hidden = items.length === 0; |
}; |
/** |