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

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

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

Powered by Google App Engine
This is Rietveld 408576698