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

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

Issue 2119733003: Wrapping leaf nodes in non polymer elements (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Converted vm-connect 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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:html';
6 import 'dart:async';
7 import 'package:observatory/models.dart' as M;
8 import 'package:observatory/src/elements/helpers/tag.dart';
9 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
10
11 class EventRemoveEvent{
12 EventRemoveEvent();
13 }
14
15 class NavNotifyEventElement extends HtmlElement implements Renderable {
16 static const tag = const Tag<NavNotifyEventElement>('nav-event');
17
18 RenderingScheduler _r;
19
20 Stream<RenderedEvent<NavNotifyEventElement>> get onRendered => _r.onRendered;
21
22 final StreamController<EventRemoveEvent> _onRemove;
23 final Stream<EventRemoveEvent> onRemove;
24
25 M.Event _event;
26 M.Event get event => _event;
27
28 factory NavNotifyEventElement(M.Event event, {RenderingQueue queue}) {
29 assert(event != null);
30 NavNotifyEventElement e = document.createElement(tag.name);
31 e._r = new RenderingScheduler(e, queue: queue);
32 e._event = event;
33 return e;
34 }
35
36 NavNotifyEventElement.created()
37 : this._(new StreamController<EventRemoveEvent>());
38
39 NavNotifyEventElement._(StreamController<EventRemoveEvent> onRemove)
40 : super.created(),
41 this._onRemove = onRemove,
42 this.onRemove = onRemove.stream.asBroadcastStream();
43
44 @override
45 void attached() { super.attached(); _r.enable(); }
46
47 @override
48 void detached() { super.detached(); children = []; _r.disable(notify: true); }
49
50 void render() {
51 children = [];
52 List<Element> content;
53 if (event is M.PauseStartEvent) {
54 content = _managePauseStartEvent(event as M.PauseStartEvent);
55 } else if (event is M.PauseExitEvent) {
56 content = _managePauseExitEvent(event as M.PauseExitEvent);
57 } else if (event is M.PauseBreakpointEvent) {
58 content = _managePauseBreakpointEvent(event as M.PauseBreakpointEvent);
59 } else if (event is M.PauseInterruptedEvent) {
60 content = _managePauseInterruptedEvent(event as M.PauseInterruptedEvent);
61 } else if (event is M.PauseExceptionEvent) {
62 content = _managePauseExceptionEvent(event as M.PauseExceptionEvent);
63 } else if (event is M.NoneEvent) {
64 content = _manageNoneEvent(event as M.NoneEvent);
65 } else if (event is M.ConnectionClosedEvent) {
66 content = _manageConnectionClosedEvent(event as M.ConnectionClosedEvent);
67 } else if (event is M.InspectEvent) {
68 content = _manageInspectEvent(event as M.InspectEvent);
69 } else if (event is M.IsolateReloadEvent) {
70 content = _manageIsolateReloadEvent(event as M.IsolateReloadEvent);
71 } else {
72 return;
73 }
74 children = [
75 new DivElement()
76 ..children = []
77 ..children.addAll(content)
78 ..children.add(new ButtonElement()..innerHtml = '&times;'
79 ..onClick.map(_toEvent).listen(_remove))
80 ];
81 }
82
83 static List<Element> _managePauseStartEvent(M.PauseStartEvent event) {
84 return [
85 new SpanElement()..text = 'Isolate ',
86 new AnchorElement(
87 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
88 ..text = event.isolate.name,
89 new SpanElement()..text = ' is paused at isolate start',
90 new BRElement(), new BRElement(),
91 new AnchorElement(
92 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
93 ..text = 'debug',
94 ];
95 }
96
97 static List<Element> _managePauseExitEvent(M.PauseExitEvent event) {
98 return [
99 new SpanElement()..text = 'Isolate ',
100 new AnchorElement(
101 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
102 ..text = event.isolate.name,
103 new SpanElement()..text = ' is paused at isolate exit',
104 new BRElement(), new BRElement(),
105 new AnchorElement(
106 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
107 ..text = 'debug',
108 ];
109 }
110
111 static List<Element> _managePauseBreakpointEvent(M.PauseBreakpointEvent event) {
112 String message = ' is paused';
113 if (event.breakpoint != null) {
114 message += ' at breakpoint ${event.breakpoint.number}';
115 }
116 return [
117 new SpanElement()..text = 'Isolate ',
118 new AnchorElement(
119 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
120 ..text = event.isolate.name,
121 new SpanElement()
122 ..text = message,
123 new BRElement(), new BRElement(),
124 new AnchorElement(
125 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
126 ..text = 'debug',
127 ];
128 }
129
130 static List<Element> _managePauseInterruptedEvent(M.PauseInterruptedEvent even t) {
131 return [
132 new SpanElement()..text = 'Isolate ',
133 new AnchorElement(
134 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
135 ..text = event.isolate.name,
136 new SpanElement()
137 ..text = ' is paused',
138 new BRElement(), new BRElement(),
139 new AnchorElement(
140 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
141 ..text = 'debug',
142 ];
143 }
144
145 static List<Element> _managePauseExceptionEvent(M.PauseExceptionEvent event) {
146 return [
147 new SpanElement()..text = 'Isolate ',
148 new AnchorElement(
149 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
150 ..text = event.isolate.name,
151 new SpanElement()
152 ..text = ' is paused due to exception',
153 new BRElement(), new BRElement(),
154 new AnchorElement(
155 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
156 ..text = 'debug',
157 ];
158 }
159
160 static List<Element> _manageNoneEvent(M.NoneEvent event) {
161 return [
162 new SpanElement()..text = 'Isolate ',
163 new AnchorElement(
164 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
165 ..text = event.isolate.name,
166 new SpanElement()
167 ..text = ' is paused',
168 new BRElement(), new BRElement(),
169 new AnchorElement(
170 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
171 ..text = 'debug',
172 ];
173 }
174
175 static List<Element> _manageConnectionClosedEvent(M.ConnectionClosedEvent even t) {
176 return [
177 new SpanElement()..text = 'Disconnected from VM: ${event.reason}',
178 new BRElement(), new BRElement(), new SpanElement()..text = '[',
179 new AnchorElement(href: '#/vm-connect')..text = 'Connect to a VM',
180 new SpanElement()..text = ']'
181 ];
182 }
183
184 static List<Element> _manageInspectEvent(M.InspectEvent event) {
185 return [
186 new SpanElement()..text = 'Inspect ',
187 // TODO(cbernaschina) add InstanceRefElement back.
188 //new InstanceRefElement()..instance = event.inspectee
189 ];
190 }
191
192 static List<Element> _manageIsolateReloadEvent(M.IsolateReloadEvent event) {
193 if (event.error != null) {
194 return [
195 new SpanElement()..text = 'Isolate reload failed:',
196 new BRElement(), new BRElement(),
197 new DivElement()
198 ..classes = ["indent", "error"]
199 ..text = event.error.message.toString()
200 ];
201 } else {
202 return [new SpanElement()..text = 'Isolate reload'];
203 }
204 }
205
206 EventRemoveEvent _toEvent(_) {
207 return new EventRemoveEvent();
208 }
209
210 void _remove(EventRemoveEvent e) {
211 if (_onRemove.hasListener) {
212 _onRemove.add(e);
213 }
214 }
215 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/nav/notify.dart ('k') | runtime/observatory/lib/src/elements/nav/notify_exception.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698