OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2014, 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 'package:observatory/service_html.dart' show ServiceMap; |
| 7 import 'package:observatory/src/elements/helpers/tag.dart'; |
| 8 import 'package:observatory/src/elements/shims/binding.dart'; |
| 9 |
| 10 class AnyServiceRefElementWrapper extends HtmlElement { |
| 11 |
| 12 static final binder = new Binder<AnyServiceRefElementWrapper>( |
| 13 const [const Binding('ref'), const Binding('expandKey'), |
| 14 const Binding('asValue')]); |
| 15 |
| 16 static const tag = const Tag<AnyServiceRefElementWrapper>('any-service-ref'); |
| 17 |
| 18 ServiceMap _ref; |
| 19 String _expandKey; |
| 20 bool _asValue; |
| 21 ServiceMap get ref => _ref; |
| 22 String get expandKey => _expandKey; |
| 23 bool get asValue => _asValue; |
| 24 void set ref(ServiceMap ref) { _ref = ref; render(); } |
| 25 void set expandKey(String expandKey) { _expandKey = expandKey; render(); } |
| 26 void set asValue(bool asValue) { _asValue = asValue; render(); } |
| 27 |
| 28 AnyServiceRefElementWrapper.created() : super.created() { |
| 29 binder.registerCallback(this); |
| 30 createShadowRoot(); |
| 31 render(); |
| 32 } |
| 33 |
| 34 @override |
| 35 void attached() { |
| 36 super.attached(); |
| 37 render(); |
| 38 } |
| 39 |
| 40 void render() { |
| 41 shadowRoot.children = []; |
| 42 if (_ref == null) return; |
| 43 |
| 44 shadowRoot.children.add(_constructElementForRef()); |
| 45 } |
| 46 |
| 47 Element _constructElementForRef() { |
| 48 var type = ref.type; |
| 49 switch (type) { |
| 50 case 'Class': |
| 51 var element = new Element.tag('class-ref'); |
| 52 element.ref = ref; |
| 53 element.asValue = asValue; |
| 54 return element; |
| 55 case 'Code': |
| 56 var element = new Element.tag('code-ref'); |
| 57 element.ref = ref; |
| 58 return element; |
| 59 case 'Context': |
| 60 var element = new Element.tag('context-ref'); |
| 61 element.ref = ref; |
| 62 return element; |
| 63 case 'Error': |
| 64 var element = new Element.tag('error-ref'); |
| 65 element.ref = ref; |
| 66 return element; |
| 67 case 'Field': |
| 68 var element = new Element.tag('field-ref'); |
| 69 element.ref = ref; |
| 70 return element; |
| 71 case 'Function': |
| 72 var element = new Element.tag('function-ref'); |
| 73 element.ref = ref; |
| 74 return element; |
| 75 case 'Library': |
| 76 var element = new Element.tag('library-ref'); |
| 77 element.ref = ref; |
| 78 element.asValue = asValue; |
| 79 return element; |
| 80 case 'Object': |
| 81 var element = new Element.tag('object-ref'); |
| 82 element.ref = ref; |
| 83 return element; |
| 84 case 'Script': |
| 85 var element = new Element.tag('script-ref'); |
| 86 element.ref = ref; |
| 87 return element; |
| 88 case 'Instance': |
| 89 case 'Sentinel': |
| 90 var element = new Element.tag('instance-ref'); |
| 91 element.ref = ref; |
| 92 if (expandKey != null) { |
| 93 element.expandKey = expandKey; |
| 94 } |
| 95 return element; |
| 96 default: |
| 97 SpanElement element = new Element.tag('span'); |
| 98 element.text = "<<Unknown service ref: $ref>>"; |
| 99 return element; |
| 100 } |
| 101 } |
| 102 } |
OLD | NEW |