OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <!-- | 2 <!-- |
3 Copyright (c) 2014 The Chromium Authors. All rights reserved. | 3 Copyright (c) 2014 The Chromium Authors. All rights reserved. |
4 Use of this source code is governed by a BSD-style license that can be | 4 Use of this source code is governed by a BSD-style license that can be |
5 found in the LICENSE file. | 5 found in the LICENSE file. |
6 --> | 6 --> |
7 | 7 |
8 <link rel="import" href="/tracing/base/range.html"> | 8 <link rel="import" href="/tracing/base/range.html"> |
9 <link rel="import" href="/tracing/ui/side_panel/side_panel.html"> | 9 <link rel="import" href="/tracing/ui/side_panel/side_panel.html"> |
10 <link rel="import" href="/tracing/ui/side_panel/side_panel_registry.html"> | 10 <link rel="import" href="/tracing/ui/side_panel/side_panel_registry.html"> |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 } | 102 } |
103 this.brushingStateController_ = brushingStateController; | 103 this.brushingStateController_ = brushingStateController; |
104 if (this.brushingStateController) { | 104 if (this.brushingStateController) { |
105 this.brushingStateController_.addEventListener( | 105 this.brushingStateController_.addEventListener( |
106 'change', this.onSelectionChanged_); | 106 'change', this.onSelectionChanged_); |
107 this.brushingStateController_.addEventListener( | 107 this.brushingStateController_.addEventListener( |
108 'model-changed', this.onModelChanged_); | 108 'model-changed', this.onModelChanged_); |
109 } | 109 } |
110 }, | 110 }, |
111 | 111 |
112 get selection() { | |
113 return this.brushingStateController_.selection; | |
114 }, | |
115 | |
116 onSelectionChanged_: function() { | 112 onSelectionChanged_: function() { |
117 if (this.activePanel) | 113 if (this.activePanel) |
118 this.activePanel.selection = this.selection; | 114 this.activePanel.selection = this.selection; |
119 }, | 115 }, |
120 | 116 |
121 get model() { | 117 get model() { |
122 return this.brushingStateController_.model; | 118 return this.brushingStateController_.model; |
123 }, | 119 }, |
124 | 120 |
125 onModelChanged_: function() { | 121 onModelChanged_: function() { |
126 this.activePanelType_ = undefined; | 122 this.activePanelType_ = undefined; |
127 this.updateContents_(); | 123 this.updateContents_(); |
128 }, | 124 }, |
129 | 125 |
130 get expanded() { | 126 get expanded() { |
131 this.hasAttribute('expanded'); | 127 this.hasAttribute('expanded'); |
132 }, | 128 }, |
133 | 129 |
134 get activePanel() { | 130 get activePanel() { |
135 if (Polymer.dom(this.activePanelContainer_).children.length < 2) | 131 if (Polymer.dom(this.activePanelContainer_).children.length < 2) |
136 return undefined; | 132 return undefined; |
137 return this.activePanelContainer_.children[1]; | 133 return this.activePanelContainer_.children[1]; |
138 }, | 134 }, |
139 | 135 |
140 get activePanelType() { | 136 get activePanel() { |
141 return this.activePanelType_; | 137 if (Polymer.dom(this.activePanelContainer_).children.length < 2) |
| 138 return undefined; |
| 139 return Polymer.dom(this.activePanelContainer_).children[1]; |
142 }, | 140 }, |
143 | 141 |
144 set activePanelType(panelType) { | 142 set activePanelType(panelType) { |
145 if (this.model === undefined) | 143 if (this.model === undefined) |
146 throw new Error('Cannot activate panel without a model'); | 144 throw new Error('Cannot activate panel without a model'); |
147 | 145 |
148 var panel = undefined; | 146 var panel = undefined; |
149 if (panelType) | 147 if (panelType) |
150 panel = document.createElement(panelType); | 148 panel = document.createElement(panelType); |
151 | 149 |
152 if (panel !== undefined && !panel.supportsModel(this.model)) | 150 if (panel !== undefined && !panel.supportsModel(this.model)) |
153 throw new Error('Cannot activate panel: does not support this model'); | 151 throw new Error('Cannot activate panel: does not support this model'); |
154 | 152 |
155 if (this.activePanelType) { | 153 if (this.activePanelType) { |
156 Polymer.dom(this.getLabelElementForPanelType_( | 154 Polymer.dom(this.getLabelElementForPanelType_( |
157 this.activePanelType)).removeAttribute('selected'); | 155 this.activePanelType)).removeAttribute('selected'); |
158 } | 156 } |
159 Polymer.dom(this.activePanelContainer_).textContent = ''; | 157 Polymer.dom(this.activePanelContainer_).textContent = ''; |
160 | 158 |
| 159 if (this.activePanelType) { |
| 160 this.getLabelElementForPanelType_( |
| 161 this.activePanelType).removeAttribute('selected'); |
| 162 } |
| 163 |
161 if (this.activePanel) | 164 if (this.activePanel) |
162 Polymer.dom(this.activePanelContainer_).removeChild(this.activePanel); | 165 this.activePanelContainer_.removeChild(this.activePanel); |
163 | 166 |
164 if (panelType === undefined) { | 167 if (panelType === undefined) { |
165 Polymer.dom(this).removeAttribute('expanded'); | 168 Polymer.dom(this).removeAttribute('expanded'); |
166 this.activePanelType_ = undefined; | 169 this.activePanelType_ = undefined; |
167 return; | 170 return; |
168 } | 171 } |
169 | 172 |
170 Polymer.dom(this.getLabelElementForPanelType_(panelType)). | 173 Polymer.dom(this.getLabelElementForPanelType_(panelType)). |
171 setAttribute('selected', true); | 174 setAttribute('selected', true); |
172 Polymer.dom(this).setAttribute('expanded', true); | 175 Polymer.dom(this).setAttribute('expanded', true); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 | 215 |
213 var supported = panel.supportsModel(this.model); | 216 var supported = panel.supportsModel(this.model); |
214 if (this.model && supported.supported) { | 217 if (this.model && supported.supported) { |
215 supportedPanelTypes.push(panelType); | 218 supportedPanelTypes.push(panelType); |
216 Polymer.dom(labelEl).setAttribute('enabled', true); | 219 Polymer.dom(labelEl).setAttribute('enabled', true); |
217 labelEl.addEventListener('click', function(panelType) { | 220 labelEl.addEventListener('click', function(panelType) { |
218 this.activePanelType = | 221 this.activePanelType = |
219 this.activePanelType === panelType ? undefined : panelType; | 222 this.activePanelType === panelType ? undefined : panelType; |
220 }.bind(this, panelType)); | 223 }.bind(this, panelType)); |
221 } else { | 224 } else { |
222 labelEl.title = 'Not supported for the current trace: ' + | 225 if (this.activePanel) |
223 supported.reason; | 226 this.activePanelContainer_.removeChild(this.activePanel); |
224 labelEl.style.display = 'none'; | 227 this.removeAttribute('expanded'); |
225 } | 228 } |
226 Polymer.dom(this.tabStrip_).appendChild(labelEl); | 229 Polymer.dom(this.tabStrip_).appendChild(labelEl); |
227 } | 230 } |
228 | 231 |
229 // Restore the active panel, or collapse | 232 // Restore the active panel, or collapse |
230 if (previouslyActivePanelType && | 233 if (previouslyActivePanelType && |
231 supportedPanelTypes.indexOf(previouslyActivePanelType) != -1) { | 234 supportedPanelTypes.indexOf(previouslyActivePanelType) != -1) { |
232 this.activePanelType = previouslyActivePanelType; | 235 this.activePanelType = previouslyActivePanelType; |
233 Polymer.dom(this).setAttribute('expanded', true); | 236 Polymer.dom(this).setAttribute('expanded', true); |
234 } else { | 237 } else { |
(...skipping 10 matching lines...) Expand all Loading... |
245 | 248 |
246 set rangeOfInterest(range) { | 249 set rangeOfInterest(range) { |
247 if (range == undefined) | 250 if (range == undefined) |
248 throw new Error('Must not be undefined'); | 251 throw new Error('Must not be undefined'); |
249 this.rangeOfInterest_ = range; | 252 this.rangeOfInterest_ = range; |
250 if (this.activePanel) | 253 if (this.activePanel) |
251 this.activePanel.rangeOfInterest = range; | 254 this.activePanel.rangeOfInterest = range; |
252 } | 255 } |
253 }); | 256 }); |
254 </script> | 257 </script> |
OLD | NEW |