| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 /** | 5 /** |
| 6 * TabSwitcher is an implementation of View that handles tab switching. | 6 * TabSwitcher is an implementation of View that handles tab switching. |
| 7 * | 7 * |
| 8 * +-----------------------------------+ | 8 * +-----------------------------------+ |
| 9 * | Tab1 / Tab2 / Tab3 / .. | <- tab handle view | 9 * | Tab1 / Tab2 / Tab3 / .. | <- tab handle view |
| 10 * +-----------------------------------+ | 10 * +-----------------------------------+ |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 }; | 57 }; |
| 58 | 58 |
| 59 /** | 59 /** |
| 60 * Adds a new tab (initially hidden). | 60 * Adds a new tab (initially hidden). |
| 61 * | 61 * |
| 62 * @param {String} id The ID for DOM node that will be made clickable to select | 62 * @param {String} id The ID for DOM node that will be made clickable to select |
| 63 * this tab. This is also the ID we use to identify the | 63 * this tab. This is also the ID we use to identify the |
| 64 * "tab". | 64 * "tab". |
| 65 * @param {!View} view The tab's actual contents. | 65 * @param {!View} view The tab's actual contents. |
| 66 */ | 66 */ |
| 67 TabSwitcherView.prototype.addTab = function(id, contentView) { | 67 TabSwitcherView.prototype.addTab = function(id, contentView, switchOnClick) { |
| 68 var tab = new TabEntry(id, contentView); | 68 var tab = new TabEntry(id, contentView); |
| 69 this.tabs_.push(tab); | 69 this.tabs_.push(tab); |
| 70 | 70 |
| 71 // Attach a click handler, used to switch to the tab. | 71 if (switchOnClick) { |
| 72 var self = this; | 72 // Attach a click handler, used to switch to the tab. |
| 73 tab.getTabHandleNode().onclick = function() { | 73 var self = this; |
| 74 self.switchToTab(id); | 74 tab.getTabHandleNode().onclick = function() { |
| 75 }; | 75 self.switchToTab(id); |
| 76 }; |
| 77 } |
| 76 | 78 |
| 77 // Start tabs off as hidden. | 79 // Start tabs off as hidden. |
| 78 tab.contentView.show(false); | 80 tab.contentView.show(false); |
| 79 }; | 81 }; |
| 80 | 82 |
| 81 /** | 83 /** |
| 82 * Returns the currently selected tab, or null if there is none. | 84 * Returns the currently selected tab, or null if there is none. |
| 83 * @returns {!TabEntry} | 85 * @returns {!TabEntry} |
| 84 */ | 86 */ |
| 85 TabSwitcherView.prototype.findActiveTab = function() { | 87 TabSwitcherView.prototype.findActiveTab = function() { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 109 */ | 111 */ |
| 110 TabSwitcherView.prototype.switchToTab = function(id) { | 112 TabSwitcherView.prototype.switchToTab = function(id) { |
| 111 var oldTab = this.findActiveTab(); | 113 var oldTab = this.findActiveTab(); |
| 112 if (oldTab) | 114 if (oldTab) |
| 113 oldTab.setSelected(false); | 115 oldTab.setSelected(false); |
| 114 | 116 |
| 115 var newTab = this.findTabById(id); | 117 var newTab = this.findTabById(id); |
| 116 newTab.setSelected(true); | 118 newTab.setSelected(true); |
| 117 }; | 119 }; |
| 118 | 120 |
| 121 TabSwitcherView.prototype.getAllTabIds = function() { |
| 122 var ids = []; |
| 123 for (var i = 0; i < this.tabs_.length; ++i) |
| 124 ids.push(this.tabs_[i].id); |
| 125 return ids; |
| 126 }; |
| 127 |
| 119 //----------------------------------------------------------------------------- | 128 //----------------------------------------------------------------------------- |
| 120 | 129 |
| 121 /** | 130 /** |
| 122 * @constructor | 131 * @constructor |
| 123 */ | 132 */ |
| 124 function TabEntry(id, contentView) { | 133 function TabEntry(id, contentView) { |
| 125 this.id = id; | 134 this.id = id; |
| 126 this.contentView = contentView; | 135 this.contentView = contentView; |
| 127 } | 136 } |
| 128 | 137 |
| 129 TabEntry.prototype.setSelected = function(isSelected) { | 138 TabEntry.prototype.setSelected = function(isSelected) { |
| 130 this.active = isSelected; | 139 this.active = isSelected; |
| 131 changeClassName(this.getTabHandleNode(), 'selected', isSelected); | 140 changeClassName(this.getTabHandleNode(), 'selected', isSelected); |
| 132 this.contentView.show(isSelected); | 141 this.contentView.show(isSelected); |
| 133 }; | 142 }; |
| 134 | 143 |
| 135 /** | 144 /** |
| 136 * Returns the DOM node that is used to select the tab. | 145 * Returns the DOM node that is used to select the tab. |
| 137 */ | 146 */ |
| 138 TabEntry.prototype.getTabHandleNode = function() { | 147 TabEntry.prototype.getTabHandleNode = function() { |
| 139 return document.getElementById(this.id); | 148 return document.getElementById(this.id); |
| 140 }; | 149 }; |
| 141 | 150 |
| OLD | NEW |