Index: runtime/observatory/lib/src/elements/observatory_element.dart |
diff --git a/runtime/observatory/lib/src/elements/observatory_element.dart b/runtime/observatory/lib/src/elements/observatory_element.dart |
deleted file mode 100644 |
index ed52cf0ca3b81d4f4d002676bb5f636a85f25381..0000000000000000000000000000000000000000 |
--- a/runtime/observatory/lib/src/elements/observatory_element.dart |
+++ /dev/null |
@@ -1,192 +0,0 @@ |
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library observatory_element; |
- |
-import 'dart:async'; |
-import 'dart:html'; |
-import 'package:observatory/app.dart'; |
-import 'package:observatory/service.dart'; |
-import 'package:polymer/polymer.dart'; |
- |
-/// Base class for all Observatory custom elements. |
-class ObservatoryElement extends PolymerElement { |
- ObservatoryElement.created() : super.created(); |
- |
- ObservatoryApplication get app => ObservatoryApplication.app; |
- Page get page => app.currentPage; |
- |
- @override |
- void attached() { |
- super.attached(); |
- _startPoll(); |
- } |
- |
- @override |
- void attributeChanged(String name, var oldValue, var newValue) { |
- super.attributeChanged(name, oldValue, newValue); |
- } |
- |
- @override |
- void detached() { |
- super.detached(); |
- _stopPoll(); |
- } |
- |
- @override |
- void ready() { |
- super.ready(); |
- } |
- |
- /// Set to a non-null value to enable polling on this element. When the poll |
- /// timer fires, onPoll will be called. |
- @observable Duration pollPeriod; |
- Timer _pollTimer; |
- |
- /// Called every [pollPeriod] while the element is attached to the DOM. |
- void onPoll() { } |
- |
- void pollPeriodChanged(oldValue) { |
- if (pollPeriod != null) { |
- _startPoll(); |
- } else { |
- _stopPoll(); |
- } |
- } |
- |
- void _startPoll() { |
- if (pollPeriod == null) { |
- return; |
- } |
- if (_pollTimer != null) { |
- _pollTimer.cancel(); |
- } |
- _pollTimer = new Timer(pollPeriod, _onPoll); |
- } |
- |
- void _stopPoll() { |
- if (_pollTimer != null) { |
- _pollTimer.cancel(); |
- } |
- _pollTimer = null; |
- } |
- |
- void _onPoll() { |
- onPoll(); |
- if (pollPeriod == null) { |
- // Stop polling. |
- _stopPoll(); |
- return; |
- } |
- // Restart timer. |
- _pollTimer = new Timer(pollPeriod, _onPoll); |
- } |
- |
- /// Utility method for handling on-click of <a> tags. Navigates |
- /// within the application using the [LocationManager]. |
- void goto(MouseEvent event, var detail, Element target) { |
- app.locationManager.onGoto(event); |
- event.stopPropagation(); |
- } |
- |
- void onClickGoto(MouseEvent event) { |
- app.locationManager.onGoto(event); |
- event.stopPropagation(); |
- } |
- |
- String makeLink(String url, [ServiceObject obj]) { |
- if (obj != null) { |
- if (obj is Isolate) { |
- url = '${url}?isolateId=${Uri.encodeComponent(obj.id)}'; |
- } else { |
- if (obj.id == null) { |
- // No id |
- return url; |
- } |
- url = ('${url}?isolateId=${Uri.encodeComponent(obj.isolate.id)}' |
- '&objectId=${Uri.encodeComponent(obj.id)}'); |
- } |
- } |
- return url; |
- } |
- |
- /// Create a link that can be consumed by [goto]. |
- String gotoLink(String url, [ServiceObject obj]) { |
- return app.locationManager.makeLink(makeLink(url, obj)); |
- } |
- String gotoLinkForwardingParameters(String url, [ServiceObject obj]) { |
- return app.locationManager.makeLinkForwardingParameters(makeLink(url, obj)); |
- } |
- |
- String formatTimePrecise(double time) => Utils.formatTimePrecise(time); |
- String formatTimeMilliseconds(int millis) => |
- Utils.formatTimeMilliseconds(millis); |
- String formatTime(double time) => Utils.formatTime(time); |
- |
- String formatSeconds(double x) => Utils.formatSeconds(x); |
- |
- |
- String formatSize(int bytes) => Utils.formatSize(bytes); |
- |
- int parseInt(String value) => int.parse(value); |
- |
- String asStringLiteral(String value, [bool wasTruncated=false]) { |
- var result = new List(); |
- result.add("'".codeUnitAt(0)); |
- for (int codeUnit in value.codeUnits) { |
- if (codeUnit == '\n'.codeUnitAt(0)) result.addAll('\\n'.codeUnits); |
- else if (codeUnit == '\r'.codeUnitAt(0)) result.addAll('\\r'.codeUnits); |
- else if (codeUnit == '\f'.codeUnitAt(0)) result.addAll('\\f'.codeUnits); |
- else if (codeUnit == '\b'.codeUnitAt(0)) result.addAll('\\b'.codeUnits); |
- else if (codeUnit == '\t'.codeUnitAt(0)) result.addAll('\\t'.codeUnits); |
- else if (codeUnit == '\v'.codeUnitAt(0)) result.addAll('\\v'.codeUnits); |
- else if (codeUnit == '\$'.codeUnitAt(0)) result.addAll('\\\$'.codeUnits); |
- else if (codeUnit == '\\'.codeUnitAt(0)) result.addAll('\\\\'.codeUnits); |
- else if (codeUnit == "'".codeUnitAt(0)) result.addAll("'".codeUnits); |
- else if (codeUnit < 32) { |
- var escapeSequence = "\\u" + codeUnit.toRadixString(16).padLeft(4, "0"); |
- result.addAll(escapeSequence.codeUnits); |
- } else result.add(codeUnit); |
- } |
- if (wasTruncated) { |
- result.addAll("...".codeUnits); |
- } else { |
- result.add("'".codeUnitAt(0)); |
- } |
- return new String.fromCharCodes(result); |
- } |
- |
- void clearShadowRoot() { |
- // Remove all non-style elements. |
- // Have to do the following because removeWhere doesn't work on DOM child |
- // node lists. i.e. removeWhere((e) => e is! StyleElement); |
- var styleElements = []; |
- for (var child in shadowRoot.children) { |
- if (child is StyleElement) { |
- styleElements.add(child); |
- } |
- } |
- shadowRoot.children.clear(); |
- for (var style in styleElements) { |
- shadowRoot.children.add(style); |
- } |
- } |
- |
- void insertTextSpanIntoShadowRoot(String text) { |
- var spanElement = new SpanElement(); |
- spanElement.text = text; |
- shadowRoot.children.add(spanElement); |
- } |
- |
- void insertLinkIntoShadowRoot(String label, String href, [String title]) { |
- var anchorElement = new AnchorElement(); |
- anchorElement.href = href; |
- anchorElement.text = label; |
- if (title != null) { |
- anchorElement.title = title; |
- } |
- anchorElement.onClick.listen(onClickGoto); |
- shadowRoot.children.add(anchorElement); |
- } |
-} |