Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: runtime/observatory/lib/src/elements/nav/vm_menu_wrapper.dart

Issue 2170723002: Converted Observatory vm-nav-menu element (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Added missing space Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:html'; 5 import 'dart:html';
6 import 'dart:async'; 6 import 'dart:async';
7 7
8 import 'package:observatory/app.dart'; 8 import 'package:observatory/app.dart';
9 import 'package:observatory/service.dart';
10 import 'package:observatory/mocks.dart'; 9 import 'package:observatory/mocks.dart';
11 import 'package:observatory/models.dart' as M; 10 import 'package:observatory/models.dart' as M;
11 import 'package:observatory/service.dart';
12 import 'package:observatory/service_common.dart';
12 import 'package:observatory/src/elements/helpers/tag.dart'; 13 import 'package:observatory/src/elements/helpers/tag.dart';
13 import 'package:observatory/src/elements/shims/binding.dart'; 14 import 'package:observatory/src/elements/shims/binding.dart';
14 import 'package:observatory/src/elements/nav/isolate_menu.dart'; 15 import 'package:observatory/src/elements/nav/vm_menu.dart';
15 16
16 class NavIsolateMenuElementWrapper extends HtmlElement { 17 class NavVMMenuElementWrapper extends HtmlElement {
17 static final binder = new Binder<NavIsolateMenuElementWrapper>( 18 static final binder = new Binder<NavVMMenuElementWrapper>(
18 const [const Binding('last'), const Binding('isolate')]); 19 const [const Binding('last'), const Binding('vm')]);
19 20
20 static const tag = 21 static const tag = const Tag<NavVMMenuElementWrapper>('vm-nav-menu');
21 const Tag<NavIsolateMenuElementWrapper>('isolate-nav-menu');
22 22
23 final StreamController<M.IsolateUpdateEvent> _updatesController =
24 new StreamController<M.IsolateUpdateEvent>();
25 Stream<M.IsolateUpdateEvent> _updates;
26 StreamSubscription _subscription; 23 StreamSubscription _subscription;
24 StreamController<M.VMUpdateEvent> _updatesController =
25 new StreamController<M.VMUpdateEvent>.broadcast();
27 26
28 bool _last = false; 27 bool _last = false;
29 Isolate _isolate; 28 VM _vm;
30 bool get last => _last; 29 bool get last => _last;
31 Isolate get isolate => _isolate; 30 VM get vm => _vm;
32 set last(bool value) { 31 set last(bool value) {
33 _last = value; render(); 32 _last = value; render();
34 } 33 }
35 set isolate(Isolate value) { 34 set vm(VM value) {
36 _isolate = value; _detached(); _attached(); 35 _vm = value; _detached(); _attached();
37 } 36 }
38 37
39 NavIsolateMenuElementWrapper.created() : super.created() { 38 NavVMMenuElementWrapper.created() : super.created() {
40 _updates = _updatesController.stream.asBroadcastStream();
41 binder.registerCallback(this); 39 binder.registerCallback(this);
42 _last = _getBoolAttribute('last'); 40 _last = _getBoolAttribute('last');
43 createShadowRoot(); 41 createShadowRoot();
44 render(); 42 render();
45 } 43 }
46 44
47 @override 45 @override
48 void attached() { 46 void attached() {
49 super.attached(); 47 super.attached();
50 _attached(); 48 _attached();
51 } 49 }
52 50
53 @override 51 @override
54 void detached() { 52 void detached() {
55 super.detached(); 53 super.detached();
56 _detached(); 54 _detached();
57 } 55 }
58 56
59 void _attached() { 57 void _attached() {
60 if (_isolate != null) { 58 if (_vm != null) {
61 _subscription = _isolate.changes.listen((_) { 59 _subscription = _vm.changes.listen((_) {
62 _updatesController.add(new IsolateUpdateEventMock(isolate: isolate)); 60 _updatesController.add(new VMUpdateEventMock(vm: _vm));
63 }); 61 });
64 } 62 }
65 render(); 63 render();
66 } 64 }
67 65
68 void _detached() { 66 void _detached() {
69 if (_subscription != null) { 67 if (_subscription != null) {
70 _subscription.cancel(); 68 _subscription.cancel();
71 _subscription = null; 69 _subscription = null;
72 } 70 }
73 } 71 }
74 72
75 void render() { 73 void render() {
76 shadowRoot.children = []; 74 shadowRoot.children = [];
77 if (_isolate == null || _last == null) return; 75 if (_vm == null || _last == null) return;
78 76
79 shadowRoot.children = [ 77 shadowRoot.children = [
80 new NavIsolateMenuElement(isolate, _updates, last: last, 78 new NavVMMenuElement(vm, _updatesController.stream, last: last,
81 queue: ObservatoryApplication.app.queue) 79 target: (vm as CommonWebSocketVM)?.target,
80 queue: ObservatoryApplication.app.queue)
82 ..children = [new ContentElement()] 81 ..children = [new ContentElement()]
83 ]; 82 ];
84 } 83 }
85 84
86 bool _getBoolAttribute(String name) { 85 bool _getBoolAttribute(String name) {
87 final String value = getAttribute(name); 86 final String value = getAttribute(name);
88 return !(value == null || value == 'false'); 87 return !(value == null || value == 'false');
89 } 88 }
90 } 89 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/nav/vm_menu.dart ('k') | runtime/observatory/lib/src/elements/nav_bar.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698