| // 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 function_ref_element; |
| |
| import 'dart:html'; |
| import 'package:polymer/polymer.dart'; |
| import 'package:observatory/service.dart'; |
| import 'service_ref.dart'; |
| |
| @CustomTag('function-ref') |
| class FunctionRefElement extends ServiceRefElement { |
| @published bool qualified = true; |
| |
| FunctionRefElement.created() : super.created(); |
| |
| refChanged(oldValue) { |
| super.refChanged(oldValue); |
| _updateShadowDom(); |
| } |
| |
| ServiceFunction get function => ref; |
| void _updateShadowDom() { |
| clearShadowRoot(); |
| if (ref == null) { |
| return; |
| } |
| if (!function.kind.isDart()) { |
| insertTextSpanIntoShadowRoot(name); |
| return; |
| } |
| if (qualified) { |
| if (function.dartOwner is ServiceFunction) { |
| var functionRef = new Element.tag('function-ref'); |
| functionRef.ref = function.dartOwner; |
| functionRef.qualified = true; |
| shadowRoot.children.add(functionRef); |
| insertTextSpanIntoShadowRoot('.'); |
| } else if (function.dartOwner is Class) { |
| var classRef = new Element.tag('class-ref'); |
| classRef.ref = function.dartOwner; |
| shadowRoot.children.add(classRef); |
| insertTextSpanIntoShadowRoot('.'); |
| } |
| } |
| insertLinkIntoShadowRoot(name, url, hoverText); |
| } |
| } |