Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** @constructor */ | 5 /** @constructor */ |
| 6 function TaskManager() { } | 6 function TaskManager() { } |
| 7 | 7 |
| 8 cr.addSingletonGetter(TaskManager); | 8 cr.addSingletonGetter(TaskManager); |
| 9 | 9 |
| 10 var localStrings = new LocalStrings(); | 10 var localStrings = new LocalStrings(); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 84 measureTime.startInterval('Load.DOM'); | 84 measureTime.startInterval('Load.DOM'); |
| 85 | 85 |
| 86 this.opt_ = opt; | 86 this.opt_ = opt; |
| 87 | 87 |
| 88 this.initialized_ = true; | 88 this.initialized_ = true; |
| 89 | 89 |
| 90 this.elementsCache_ = {}; | 90 this.elementsCache_ = {}; |
| 91 this.dialogDom_ = dialogDom; | 91 this.dialogDom_ = dialogDom; |
| 92 this.document_ = dialogDom.ownerDocument; | 92 this.document_ = dialogDom.ownerDocument; |
| 93 | 93 |
| 94 this.is_column_shown_ = []; | |
| 95 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { | |
| 96 this.is_column_shown_[i] = DEFAULT_COLUMNS[i][3]; | |
| 97 } | |
| 98 | |
| 99 this.localized_column_ = []; | 94 this.localized_column_ = []; |
| 100 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { | 95 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { |
| 101 var column_label_id = DEFAULT_COLUMNS[i][1]; | 96 var column_label_id = DEFAULT_COLUMNS[i][1]; |
| 102 var localized_label = localStrings.getString(column_label_id); | 97 var localized_label = localStrings.getString(column_label_id); |
| 103 // Falls back to raw column_label_id if localized string is not defined. | 98 // Falls back to raw column_label_id if localized string is not defined. |
| 104 if (localized_label == "") | 99 if (localized_label == "") |
| 105 localized_label = column_label_id; | 100 localized_label = column_label_id; |
| 106 | 101 |
| 107 this.localized_column_[i] = localized_label; | 102 this.localized_column_[i] = localized_label; |
| 108 } | 103 } |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 138 var aValue = aValues && aValues[0] || 0; | 133 var aValue = aValues && aValues[0] || 0; |
| 139 var bvalue = bValues && bValues[0] || 0; | 134 var bvalue = bValues && bValues[0] || 0; |
| 140 return dm.defaultValuesCompareFunction(aValue, bvalue); | 135 return dm.defaultValuesCompareFunction(aValue, bvalue); |
| 141 }; | 136 }; |
| 142 })(); | 137 })(); |
| 143 dm.setCompareFunction(columnId, compareFunc); | 138 dm.setCompareFunction(columnId, compareFunc); |
| 144 } | 139 } |
| 145 | 140 |
| 146 this.initTable_(); | 141 this.initTable_(); |
| 147 | 142 |
| 148 // enableTaskManager() must be called after enabling columns using | |
| 149 // setUpdateColumn() because it is necessary to tell the handler which | |
| 150 // columns to display before updating. | |
| 151 commands.enableTaskManager(); | 143 commands.enableTaskManager(); |
| 152 | 144 |
| 153 // Populate the static localized strings. | 145 // Populate the static localized strings. |
| 154 i18nTemplate.process(this.document_, templateData); | 146 i18nTemplate.process(this.document_, templateData); |
| 155 | 147 |
| 156 measureTime.recordInterval('Load.DOM'); | 148 measureTime.recordInterval('Load.DOM'); |
| 157 measureTime.recordInterval('Load.Total'); | 149 measureTime.recordInterval('Load.Total'); |
| 158 | 150 |
| 159 loadDelayedIncludes(this); | 151 loadDelayedIncludes(this); |
| 160 }, | 152 }, |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 212 } | 204 } |
| 213 } | 205 } |
| 214 | 206 |
| 215 this.isFinishedInitDelayed_ = true; | 207 this.isFinishedInitDelayed_ = true; |
| 216 this.table_.redraw(); | 208 this.table_.redraw(); |
| 217 }, | 209 }, |
| 218 | 210 |
| 219 initColumnModel_: function () { | 211 initColumnModel_: function () { |
| 220 var table_columns = new Array(); | 212 var table_columns = new Array(); |
| 221 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { | 213 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { |
| 222 if (!this.is_column_shown_[i]) | 214 var column = DEFAULT_COLUMNS[i]; |
| 215 var columnId = column[0]; | |
| 216 if (!isColumnEnabled(columnId)) | |
| 223 continue; | 217 continue; |
| 224 | 218 |
| 225 var column = DEFAULT_COLUMNS[i]; | |
| 226 var columnId = column[0]; | |
| 227 table_columns.push(new cr.ui.table.TableColumn(columnId, | 219 table_columns.push(new cr.ui.table.TableColumn(columnId, |
| 228 this.localized_column_[i], | 220 this.localized_column_[i], |
| 229 column[2])); | 221 column[2])); |
| 230 } | 222 } |
| 231 | 223 |
| 232 for (var i = 0; i < table_columns.length; i++) { | 224 for (var i = 0; i < table_columns.length; i++) { |
| 233 table_columns[i].renderFunction = this.renderColumn_.bind(this); | 225 table_columns[i].renderFunction = this.renderColumn_.bind(this); |
| 234 } | 226 } |
| 235 | 227 |
| 236 this.columnModel_ = new cr.ui.table.TableColumnModel(table_columns); | 228 this.columnModel_ = new cr.ui.table.TableColumnModel(table_columns); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 251 command.id = COMMAND_CONTEXTMENU_COLUMN_PREFIX + '-' + column[0]; | 243 command.id = COMMAND_CONTEXTMENU_COLUMN_PREFIX + '-' + column[0]; |
| 252 cr.ui.Command.decorate(command); | 244 cr.ui.Command.decorate(command); |
| 253 this.column_menu_commands_[command.id] = command; | 245 this.column_menu_commands_[command.id] = command; |
| 254 this.commandsElement_.appendChild(command); | 246 this.commandsElement_.appendChild(command); |
| 255 | 247 |
| 256 // Creates menuitem element. | 248 // Creates menuitem element. |
| 257 var item = this.document_.createElement('menuitem'); | 249 var item = this.document_.createElement('menuitem'); |
| 258 item.command = command; | 250 item.command = command; |
| 259 command.menuitem = item; | 251 command.menuitem = item; |
| 260 item.textContent = this.localized_column_[i]; | 252 item.textContent = this.localized_column_[i]; |
| 261 if (this.is_column_shown_[i]) | 253 if (isColumnEnabled(column[0])) |
| 262 item.setAttributeNode(this.document_.createAttribute("checked")); | 254 item.setAttributeNode(this.document_.createAttribute("checked")); |
| 263 this.columnSelectContextMenu_.appendChild(item); | 255 this.columnSelectContextMenu_.appendChild(item); |
| 264 } | 256 } |
| 265 | 257 |
| 266 this.document_.body.appendChild(this.columnSelectContextMenu_); | 258 this.document_.body.appendChild(this.columnSelectContextMenu_); |
| 267 cr.ui.Menu.decorate(this.columnSelectContextMenu_); | 259 cr.ui.Menu.decorate(this.columnSelectContextMenu_); |
| 268 | 260 |
| 269 cr.ui.contextMenuHandler.setContextMenu(this.table_.header, | 261 cr.ui.contextMenuHandler.setContextMenu(this.table_.header, |
| 270 this.columnSelectContextMenu_); | 262 this.columnSelectContextMenu_); |
| 271 cr.ui.contextMenuHandler.setContextMenu(this.table_.list, | 263 cr.ui.contextMenuHandler.setContextMenu(this.table_.list, |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 634 | 626 |
| 635 // Enables if the page can be inspected. | 627 // Enables if the page can be inspected. |
| 636 if (target.data['canInspect'][index_in_group]) | 628 if (target.data['canInspect'][index_in_group]) |
| 637 inspect_menuitem.disabled = false; | 629 inspect_menuitem.disabled = false; |
| 638 | 630 |
| 639 // Enables if the page can be activated. | 631 // Enables if the page can be activated. |
| 640 if (target.data['canActivate'][index_in_group]) | 632 if (target.data['canActivate'][index_in_group]) |
| 641 activate_menuitem.disabled = false; | 633 activate_menuitem.disabled = false; |
| 642 }, | 634 }, |
| 643 | 635 |
| 644 onColumnContextMenu_: function(id, command) { | 636 onColumnContextMenu_: function(columnId, command) { |
| 645 var menuitem = command.menuitem; | 637 var menuitem = command.menuitem; |
| 646 var checked_item_count = 0; | 638 var checkedItemCount = 0; |
| 647 var is_uncheck = 0; | 639 var checked = isColumnEnabled(columnId); |
| 648 | 640 |
| 649 // Leaves a item visible when user tries making invisible but it is the | 641 // Leaves a item visible when user tries making invisible but it is the |
| 650 // last one. | 642 // last one. |
| 651 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { | 643 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { |
| 652 var column = DEFAULT_COLUMNS[i]; | 644 var column = DEFAULT_COLUMNS[i]; |
| 653 if (column[0] == id && this.is_column_shown_[i]) { | 645 if (isColumnEnabled(column[0])) |
| 654 is_uncheck = 1; | 646 checkedItemCount++; |
| 655 } | |
| 656 if (this.is_column_shown_[i]) | |
| 657 checked_item_count++; | |
| 658 } | 647 } |
| 659 if (checked_item_count == 1 && is_uncheck) { | 648 if (checkedItemCount == 1 && checked) { |
|
James Hawkins
2012/03/01 20:03:09
nit: No braces for single-line blocks.
| |
| 660 return; | 649 return; |
| 661 } | 650 } |
| 662 | 651 |
| 663 // Toggles the visibility of the column. | 652 // Toggles the visibility of the column. |
| 664 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { | 653 var newChecked = !checked; |
| 665 var column = DEFAULT_COLUMNS[i]; | 654 menuitem.checked = newChecked; |
| 666 if (column[0] == id) { | |
| 667 this.is_column_shown_[i] = !this.is_column_shown_[i]; | |
| 668 var checked = this.is_column_shown_[i]; | |
| 669 menuitem.checked = checked; | |
| 670 this.initColumnModel_() | |
| 671 this.table_.columnModel = this.columnModel_; | |
| 672 this.table_.redraw(); | |
| 673 | 655 |
| 674 commands.setUpdateColumn(column[0], checked); | 656 var enabledColumns = getEnabledColumns(); |
| 675 return; | 657 enabledColumns[columnId] = newChecked; |
| 676 } | 658 setEnabledColumns(enabledColumns); |
| 677 } | 659 commands.setUpdateColumn(columnId, newChecked); |
| 660 | |
| 661 this.initColumnModel_() | |
| 662 this.table_.columnModel = this.columnModel_; | |
| 663 this.table_.redraw(); | |
| 678 }, | 664 }, |
| 679 }; | 665 }; |
| 680 | 666 |
| 681 // |taskmanager| has been declared in preload.js. | 667 // |taskmanager| has been declared in preload.js. |
| 682 taskmanager = TaskManager.getInstance(); | 668 taskmanager = TaskManager.getInstance(); |
| 683 | 669 |
| 684 function init() { | 670 function init() { |
| 685 var params = parseQueryParams(window.location); | 671 var params = parseQueryParams(window.location); |
| 686 var opt = {}; | 672 var opt = {}; |
| 687 opt['isShowTitle'] = params.showtitle; | 673 opt['isShowTitle'] = params.showtitle; |
| 688 opt['isBackgroundMode'] = params.background; | 674 opt['isBackgroundMode'] = params.background; |
| 689 opt['isShowCloseButton'] = params.showclose; | 675 opt['isShowCloseButton'] = params.showclose; |
| 690 taskmanager.initialize(document.body, opt); | 676 taskmanager.initialize(document.body, opt); |
| 691 } | 677 } |
| 692 | 678 |
| 693 document.addEventListener('DOMContentLoaded', init); | 679 document.addEventListener('DOMContentLoaded', init); |
| 694 document.addEventListener('Close', taskmanager.onClose.bind(taskmanager)); | 680 document.addEventListener('Close', taskmanager.onClose.bind(taskmanager)); |
| OLD | NEW |