Index: runtime/observatory/lib/src/elements/class_tree.dart |
diff --git a/runtime/observatory/lib/src/elements/class_tree.dart b/runtime/observatory/lib/src/elements/class_tree.dart |
index 5fb3328568e352bbbe6351ec55ccf619544a8580..d9d2814be42d6ac825fb5d1917e4c60e4fb1f530 100644 |
--- a/runtime/observatory/lib/src/elements/class_tree.dart |
+++ b/runtime/observatory/lib/src/elements/class_tree.dart |
@@ -18,15 +18,16 @@ import 'package:observatory/src/elements/nav/notify.dart'; |
import 'package:observatory/src/elements/nav/top_menu.dart'; |
import 'package:observatory/src/elements/nav/vm_menu.dart'; |
- |
-class ClassTreeElement extends HtmlElement implements Renderable{ |
- static const tag = const Tag<ClassTreeElement>('class-tree', |
- dependencies: const [ClassRefElement.tag, |
- NavIsolateMenuElement.tag, |
- NavNotifyElement.tag, |
- NavTopMenuElement.tag, |
- NavVMMenuElement.tag, |
- VirtualTreeElement.tag]); |
+class ClassTreeElement extends HtmlElement implements Renderable { |
+ static const tag = |
+ const Tag<ClassTreeElement>('class-tree', dependencies: const [ |
+ ClassRefElement.tag, |
+ NavIsolateMenuElement.tag, |
+ NavNotifyElement.tag, |
+ NavTopMenuElement.tag, |
+ NavVMMenuElement.tag, |
+ VirtualTreeElement.tag |
+ ]); |
RenderingScheduler _r; |
@@ -41,11 +42,13 @@ class ClassTreeElement extends HtmlElement implements Renderable{ |
final _subclasses = <String, Iterable<M.Class>>{}; |
final _mixins = <String, List<M.Instance>>{}; |
- factory ClassTreeElement(M.VMRef vm, M.IsolateRef isolate, |
- M.EventRepository events, |
- M.NotificationRepository notifications, |
- M.ClassRepository classes, |
- {RenderingQueue queue}) { |
+ factory ClassTreeElement( |
+ M.VMRef vm, |
+ M.IsolateRef isolate, |
+ M.EventRepository events, |
+ M.NotificationRepository notifications, |
+ M.ClassRepository classes, |
+ {RenderingQueue queue}) { |
assert(vm != null); |
assert(isolate != null); |
assert(events != null); |
@@ -92,16 +95,18 @@ class ClassTreeElement extends HtmlElement implements Renderable{ |
..classes = ['content-centered'] |
..children = [ |
new HeadingElement.h1()..text = 'Class Hierarchy', |
- new BRElement(), new HRElement(), |
- _object == null ? (new HeadingElement.h2()..text = 'Loading...') |
- : _createTree() |
+ new BRElement(), |
+ new HRElement(), |
+ _object == null |
+ ? (new HeadingElement.h2()..text = 'Loading...') |
+ : _createTree() |
] |
]; |
} |
Element _createTree() { |
_tree = new VirtualTreeElement(_create, _update, _children, |
- items: [_object], queue: _r.queue); |
+ items: [_object], queue: _r.queue); |
_tree.expand(_object, autoExpandSingleChildNodes: true); |
return _tree; |
} |
@@ -116,10 +121,9 @@ class ClassTreeElement extends HtmlElement implements Renderable{ |
Future<M.Class> _register(M.Class cls) async { |
_subclasses[cls.id] = await Future.wait( |
- (await Future.wait(cls.subclasses.map(_getActualChildrens))) |
- .expand((f) => f) |
- .map(_register) |
- ); |
+ (await Future.wait(cls.subclasses.map(_getActualChildrens))) |
+ .expand((f) => f) |
+ .map(_register)); |
return cls; |
} |
@@ -132,20 +136,22 @@ class ClassTreeElement extends HtmlElement implements Renderable{ |
return [cls]; |
} |
return (await Future.wait(cls.subclasses.map(_getActualChildrens))) |
- .expand((f) => f) |
- ..forEach((subcls) { |
- _mixins[subcls.id] = (_mixins[subcls.id] ?? [])..add(cls.mixin); |
- }); |
+ .expand((f) => f) |
+ ..forEach((subcls) { |
+ _mixins[subcls.id] = (_mixins[subcls.id] ?? [])..add(cls.mixin); |
+ }); |
} |
static Element _create(toggle) { |
- return new DivElement()..classes = ['class-tree-item'] |
- ..children = [ |
- new SpanElement()..classes = ['lines'], |
- new ButtonElement()..classes = ['expander'] |
- ..onClick.listen((_) => toggle(autoToggleSingleChildNodes: true)), |
- new SpanElement()..classes = ['name'] |
- ]; |
+ return new DivElement() |
+ ..classes = ['class-tree-item'] |
+ ..children = [ |
+ new SpanElement()..classes = ['lines'], |
+ new ButtonElement() |
+ ..classes = ['expander'] |
+ ..onClick.listen((_) => toggle(autoToggleSingleChildNodes: true)), |
+ new SpanElement()..classes = ['name'] |
+ ]; |
} |
void _update(HtmlElement el, M.Class cls, int index) { |
@@ -164,12 +170,15 @@ class ClassTreeElement extends HtmlElement implements Renderable{ |
} |
List<Element> _createMixins(List<M.Instance> types) { |
- final children = types.expand((type) => [ |
- new SpanElement()..text = ', ', |
- type.typeClass == null |
- ? (new SpanElement()..text = type.name.split('<').first) |
- : new ClassRefElement(_isolate, type.typeClass, queue: _r.queue) |
- ]).toList(); |
+ final children = types |
+ .expand((type) => [ |
+ new SpanElement()..text = ', ', |
+ type.typeClass == null |
+ ? (new SpanElement()..text = type.name.split('<').first) |
+ : new ClassRefElement(_isolate, type.typeClass, |
+ queue: _r.queue) |
+ ]) |
+ .toList(); |
children.first.text = ' with '; |
return children; |
} |