OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 * @implements {SDK.SDKModelObserver<!SDK.DebuggerModel>} | 5 * @implements {SDK.SDKModelObserver<!SDK.DebuggerModel>} |
6 * @implements {UI.ListDelegate<!SDK.DebuggerModel>} | 6 * @implements {UI.ListDelegate<!SDK.DebuggerModel>} |
7 */ | 7 */ |
8 Sources.ThreadsSidebarPane = class extends UI.VBox { | 8 Sources.ThreadsSidebarPane = class extends UI.VBox { |
9 constructor() { | 9 constructor() { |
10 super(true); | 10 super(true); |
11 this.registerRequiredCSS('sources/threadsSidebarPane.css'); | 11 this.registerRequiredCSS('sources/threadsSidebarPane.css'); |
12 | 12 |
13 /** @type {!UI.ListControl<!SDK.DebuggerModel>} */ | 13 /** @type {!UI.ListControl<!SDK.DebuggerModel>} */ |
14 this._list = new UI.ListControl(this, UI.ListMode.NonViewport); | 14 this._list = new UI.ListControl(this, UI.ListMode.NonViewport); |
15 this.contentElement.appendChild(this._list.element); | 15 this.contentElement.appendChild(this._list.element); |
16 | 16 |
| 17 this._availableNodeTargetsElement = this.contentElement.createChild('div', '
hidden available-node-targets'); |
| 18 |
17 UI.context.addFlavorChangeListener(SDK.Target, this._targetFlavorChanged, th
is); | 19 UI.context.addFlavorChangeListener(SDK.Target, this._targetFlavorChanged, th
is); |
| 20 |
| 21 SDK.targetManager.addEventListener( |
| 22 SDK.TargetManager.Events.AvailableNodeTargetsChanged, this._availableNod
eTargetsChanged, this); |
| 23 this._availableNodeTargetsChanged(); |
| 24 |
18 SDK.targetManager.observeModels(SDK.DebuggerModel, this); | 25 SDK.targetManager.observeModels(SDK.DebuggerModel, this); |
19 } | 26 } |
20 | 27 |
21 /** | 28 /** |
22 * @return {boolean} | 29 * @return {boolean} |
23 */ | 30 */ |
24 static shouldBeShown() { | 31 static shouldBeShown() { |
25 var minJSTargets = Runtime.queryParam('nodeFrontend') ? 1 : 2; | 32 var minJSTargets = Runtime.queryParam('nodeFrontend') ? 1 : 2; |
26 return SDK.targetManager.models(SDK.DebuggerModel).length >= minJSTargets; | 33 if (SDK.targetManager.models(SDK.DebuggerModel).length >= minJSTargets) |
| 34 return true; |
| 35 return !!SDK.targetManager.availableNodeTargetsCount(); |
| 36 } |
| 37 |
| 38 _availableNodeTargetsChanged() { |
| 39 var count = SDK.targetManager.availableNodeTargetsCount(); |
| 40 if (!count) { |
| 41 this._availableNodeTargetsElement.classList.add('hidden'); |
| 42 return; |
| 43 } |
| 44 this._availableNodeTargetsElement.removeChildren(); |
| 45 this._availableNodeTargetsElement.createTextChild( |
| 46 count === 1 ? Common.UIString('Node instance available.') : |
| 47 Common.UIString('%d Node instances available.', count)); |
| 48 var link = this._availableNodeTargetsElement.createChild('span', 'link'); |
| 49 link.textContent = Common.UIString('Connect'); |
| 50 link.addEventListener('click', () => { |
| 51 InspectorFrontendHost.openNodeFrontend(); |
| 52 }, false); |
| 53 this._availableNodeTargetsElement.classList.remove('hidden'); |
27 } | 54 } |
28 | 55 |
29 /** | 56 /** |
30 * @override | 57 * @override |
31 * @param {!SDK.DebuggerModel} debuggerModel | 58 * @param {!SDK.DebuggerModel} debuggerModel |
32 * @return {!Element} | 59 * @return {!Element} |
33 */ | 60 */ |
34 createElementForItem(debuggerModel) { | 61 createElementForItem(debuggerModel) { |
35 var element = createElementWithClass('div', 'thread-item'); | 62 var element = createElementWithClass('div', 'thread-item'); |
36 var title = element.createChild('div', 'thread-item-title'); | 63 var title = element.createChild('div', 'thread-item-title'); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 /** | 150 /** |
124 * @param {!Common.Event} event | 151 * @param {!Common.Event} event |
125 */ | 152 */ |
126 _targetFlavorChanged(event) { | 153 _targetFlavorChanged(event) { |
127 var target = /** @type {!SDK.Target} */ (event.data); | 154 var target = /** @type {!SDK.Target} */ (event.data); |
128 var debuggerModel = target.model(SDK.DebuggerModel); | 155 var debuggerModel = target.model(SDK.DebuggerModel); |
129 if (debuggerModel) | 156 if (debuggerModel) |
130 this._list.selectItem(debuggerModel); | 157 this._list.selectItem(debuggerModel); |
131 } | 158 } |
132 }; | 159 }; |
OLD | NEW |