OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 library observatory_element; | 5 library observatory_element; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:html'; | 8 import 'dart:html'; |
9 import 'package:observatory/app.dart'; | 9 import 'package:observatory/app.dart'; |
10 import 'package:observatory/service.dart'; | 10 import 'package:observatory/service.dart'; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 _stopPoll(); | 81 _stopPoll(); |
82 return; | 82 return; |
83 } | 83 } |
84 // Restart timer. | 84 // Restart timer. |
85 _pollTimer = new Timer(pollPeriod, _onPoll); | 85 _pollTimer = new Timer(pollPeriod, _onPoll); |
86 } | 86 } |
87 | 87 |
88 /// Utility method for handling on-click of <a> tags. Navigates | 88 /// Utility method for handling on-click of <a> tags. Navigates |
89 /// within the application using the [LocationManager]. | 89 /// within the application using the [LocationManager]. |
90 void goto(MouseEvent event, var detail, Element target) { | 90 void goto(MouseEvent event, var detail, Element target) { |
91 app.locationManager.onGoto(event, detail, target); | 91 app.locationManager.onGoto(event); |
92 event.stopPropagation(); | 92 event.stopPropagation(); |
93 } | 93 } |
94 | 94 |
| 95 void onClickGoto(MouseEvent event) { |
| 96 app.locationManager.onGoto(event); |
| 97 event.stopPropagation(); |
| 98 } |
| 99 |
95 String makeLink(String url, [ServiceObject obj]) { | 100 String makeLink(String url, [ServiceObject obj]) { |
96 if (obj != null) { | 101 if (obj != null) { |
97 if (obj is Isolate) { | 102 if (obj is Isolate) { |
98 url = '${url}?isolateId=${Uri.encodeComponent(obj.id)}'; | 103 url = '${url}?isolateId=${Uri.encodeComponent(obj.id)}'; |
99 } else { | 104 } else { |
| 105 if (obj.id == null) { |
| 106 // No id |
| 107 return url; |
| 108 } |
100 url = ('${url}?isolateId=${Uri.encodeComponent(obj.isolate.id)}' | 109 url = ('${url}?isolateId=${Uri.encodeComponent(obj.isolate.id)}' |
101 '&objectId=${Uri.encodeComponent(obj.id)}'); | 110 '&objectId=${Uri.encodeComponent(obj.id)}'); |
102 } | 111 } |
103 } | 112 } |
104 return url; | 113 return url; |
105 } | 114 } |
106 | 115 |
107 /// Create a link that can be consumed by [goto]. | 116 /// Create a link that can be consumed by [goto]. |
108 String gotoLink(String url, [ServiceObject obj]) { | 117 String gotoLink(String url, [ServiceObject obj]) { |
109 return app.locationManager.makeLink(makeLink(url, obj)); | 118 return app.locationManager.makeLink(makeLink(url, obj)); |
110 } | 119 } |
111 | 120 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 result.addAll(escapeSequence.codeUnits); | 153 result.addAll(escapeSequence.codeUnits); |
145 } else result.add(codeUnit); | 154 } else result.add(codeUnit); |
146 } | 155 } |
147 if (wasTruncated) { | 156 if (wasTruncated) { |
148 result.addAll("...".codeUnits); | 157 result.addAll("...".codeUnits); |
149 } else { | 158 } else { |
150 result.add("'".codeUnitAt(0)); | 159 result.add("'".codeUnitAt(0)); |
151 } | 160 } |
152 return new String.fromCharCodes(result); | 161 return new String.fromCharCodes(result); |
153 } | 162 } |
| 163 |
| 164 void clearShadowRoot() { |
| 165 // Remove all non-style elements. |
| 166 shadowRoot.children.removeWhere((e) => e is! StyleElement); |
| 167 } |
| 168 |
| 169 void insertTextSpanIntoShadowRoot(String text) { |
| 170 var spanElement = new SpanElement(); |
| 171 spanElement.text = text; |
| 172 shadowRoot.children.add(spanElement); |
| 173 } |
| 174 |
| 175 void insertLinkIntoShadowRoot(String label, String href, [String title]) { |
| 176 var anchorElement = new AnchorElement(); |
| 177 anchorElement.href = href; |
| 178 anchorElement.text = label; |
| 179 if (title != null) { |
| 180 anchorElement.title = title; |
| 181 } |
| 182 anchorElement.onClick.listen(onClickGoto); |
| 183 shadowRoot.children.add(anchorElement); |
| 184 } |
154 } | 185 } |
OLD | NEW |