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 c41b1c393f84514275b57ee777e85086be71912f..057f9ba48009ecf825f6401640d13d5375e1ab89 100644 |
--- a/chrome/browser/resources/file_manager/js/file_manager.js |
+++ b/chrome/browser/resources/file_manager/js/file_manager.js |
@@ -639,11 +639,12 @@ FileManager.prototype = { |
* One-time initialization of dialogs. |
*/ |
FileManager.prototype.initDialogs_ = function() { |
- cr.ui.dialogs.BaseDialog.OK_LABEL = str('OK_LABEL'); |
- cr.ui.dialogs.BaseDialog.CANCEL_LABEL = str('CANCEL_LABEL'); |
- this.alert = new cr.ui.dialogs.AlertDialog(this.dialogDom_); |
- this.confirm = new cr.ui.dialogs.ConfirmDialog(this.dialogDom_); |
- this.prompt = new cr.ui.dialogs.PromptDialog(this.dialogDom_); |
+ var d = cr.ui.dialogs; |
+ d.BaseDialog.OK_LABEL = str('OK_LABEL'); |
+ d.BaseDialog.CANCEL_LABEL = str('CANCEL_LABEL'); |
+ this.alert = new d.AlertDialog(this.dialogDom_); |
+ this.confirm = new d.ConfirmDialog(this.dialogDom_); |
+ this.prompt = new d.PromptDialog(this.dialogDom_); |
}; |
/** |
@@ -1157,8 +1158,10 @@ FileManager.prototype = { |
columns[3].renderFunction = this.renderDate_.bind(this); |
if (this.showCheckboxes_) { |
- columns.unshift(new cr.ui.table.TableColumn('checkbox_', '', 3)); |
+ columns.unshift(new cr.ui.table.TableColumn('checkbox_', '', 3.6)); |
columns[0].renderFunction = this.renderCheckbox_.bind(this); |
+ columns[0].headerRenderFunction = |
+ this.renderCheckboxColumnHeader_.bind(this); |
} |
this.table_ = this.dialogDom_.querySelector('.detail-table'); |
@@ -1544,6 +1547,34 @@ FileManager.prototype = { |
return input; |
}; |
+ FileManager.prototype.renderCheckboxColumnHeader_ = function(table) { |
+ var input = this.document_.createElement('input'); |
+ input.setAttribute('type', 'checkbox'); |
+ input.setAttribute('tabindex', -1); |
+ input.id = 'select-all-checkbox'; |
+ input.checked = this.areAllItemsSelected(); |
+ |
+ var self = this; |
+ input.addEventListener('click', function(event) { |
+ if (self.areAllItemsSelected()) |
+ table.selectionModel.unselectAll(); |
+ else |
+ table.selectionModel.selectAll(); |
+ event.preventDefault(); |
+ }); |
+ |
+ return input; |
+ }; |
+ |
+ /** |
+ * Check if all items in the current list are selected. |
+ * @return {boolean} True if all items are selected. |
+ */ |
+ FileManager.prototype.areAllItemsSelected = function() { |
+ return this.selection && |
+ this.dataModel_.length == this.selection.totalCount; |
+ }; |
+ |
/** |
* Insert a thumbnail image to fit/fill the container. |
* |
@@ -2819,6 +2850,10 @@ FileManager.prototype = { |
listItem.querySelector('input[type="checkbox"]').checked = true; |
} |
} |
+ var selectAllCheckbox = |
+ this.document_.getElementById('select-all-checkbox'); |
+ if (selectAllCheckbox) |
+ selectAllCheckbox.checked = this.areAllItemsSelected(); |
}; |
FileManager.prototype.updateOkButton_ = function(event) { |