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 |