| 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 instance_view_element; | 5 library instance_view_element; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:html'; | 8 import 'dart:html'; |
| 9 import 'package:observatory/models.dart' as M; | 9 import 'package:observatory/models.dart' as M; |
| 10 import 'package:observatory/src/elements/class_ref.dart'; | 10 import 'package:observatory/src/elements/class_ref.dart'; |
| 11 import 'package:observatory/src/elements/context_ref.dart'; | 11 import 'package:observatory/src/elements/context_ref.dart'; |
| 12 import 'package:observatory/src/elements/curly_block.dart'; | 12 import 'package:observatory/src/elements/curly_block.dart'; |
| 13 import 'package:observatory/src/elements/eval_box.dart'; | 13 import 'package:observatory/src/elements/eval_box.dart'; |
| 14 import 'package:observatory/src/elements/field_ref.dart'; | 14 import 'package:observatory/src/elements/field_ref.dart'; |
| 15 import 'package:observatory/src/elements/function_ref.dart'; | 15 import 'package:observatory/src/elements/function_ref.dart'; |
| 16 import 'package:observatory/src/elements/helpers/any_ref.dart'; | 16 import 'package:observatory/src/elements/helpers/any_ref.dart'; |
| 17 import 'package:observatory/src/elements/helpers/nav_bar.dart'; |
| 18 import 'package:observatory/src/elements/helpers/nav_menu.dart'; |
| 17 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; | 19 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; |
| 18 import 'package:observatory/src/elements/helpers/tag.dart'; | 20 import 'package:observatory/src/elements/helpers/tag.dart'; |
| 19 import 'package:observatory/src/elements/instance_ref.dart'; | 21 import 'package:observatory/src/elements/instance_ref.dart'; |
| 20 import 'package:observatory/src/elements/nav/bar.dart'; | |
| 21 import 'package:observatory/src/elements/nav/class_menu.dart'; | 22 import 'package:observatory/src/elements/nav/class_menu.dart'; |
| 22 import 'package:observatory/src/elements/nav/isolate_menu.dart'; | 23 import 'package:observatory/src/elements/nav/isolate_menu.dart'; |
| 23 import 'package:observatory/src/elements/nav/library_menu.dart'; | 24 import 'package:observatory/src/elements/nav/library_menu.dart'; |
| 24 import 'package:observatory/src/elements/nav/menu.dart'; | |
| 25 import 'package:observatory/src/elements/nav/notify.dart'; | 25 import 'package:observatory/src/elements/nav/notify.dart'; |
| 26 import 'package:observatory/src/elements/nav/refresh.dart'; | 26 import 'package:observatory/src/elements/nav/refresh.dart'; |
| 27 import 'package:observatory/src/elements/nav/top_menu.dart'; | 27 import 'package:observatory/src/elements/nav/top_menu.dart'; |
| 28 import 'package:observatory/src/elements/nav/vm_menu.dart'; | 28 import 'package:observatory/src/elements/nav/vm_menu.dart'; |
| 29 import 'package:observatory/src/elements/object_common.dart'; | 29 import 'package:observatory/src/elements/object_common.dart'; |
| 30 import 'package:observatory/src/elements/source_inset.dart'; | 30 import 'package:observatory/src/elements/source_inset.dart'; |
| 31 import 'package:observatory/src/elements/source_link.dart'; | 31 import 'package:observatory/src/elements/source_link.dart'; |
| 32 import 'package:observatory/src/elements/view_footer.dart'; | 32 import 'package:observatory/src/elements/view_footer.dart'; |
| 33 import 'package:observatory/utils.dart'; | 33 import 'package:observatory/utils.dart'; |
| 34 | 34 |
| 35 class InstanceViewElement extends HtmlElement implements Renderable { | 35 class InstanceViewElement extends HtmlElement implements Renderable { |
| 36 static const tag = const Tag<InstanceViewElement>('instance-view', | 36 static const tag = const Tag<InstanceViewElement>('instance-view', |
| 37 dependencies: const [ | 37 dependencies: const [ |
| 38 ClassRefElement.tag, | 38 ClassRefElement.tag, |
| 39 ContextRefElement.tag, | 39 ContextRefElement.tag, |
| 40 CurlyBlockElement.tag, | 40 CurlyBlockElement.tag, |
| 41 FieldRefElement.tag, | 41 FieldRefElement.tag, |
| 42 FunctionRefElement.tag, | 42 FunctionRefElement.tag, |
| 43 InstanceRefElement.tag, | 43 InstanceRefElement.tag, |
| 44 NavBarElement.tag, | |
| 45 NavClassMenuElement.tag, | 44 NavClassMenuElement.tag, |
| 46 NavLibraryMenuElement.tag, | 45 NavLibraryMenuElement.tag, |
| 47 NavTopMenuElement.tag, | 46 NavTopMenuElement.tag, |
| 48 NavVMMenuElement.tag, | 47 NavVMMenuElement.tag, |
| 49 NavIsolateMenuElement.tag, | 48 NavIsolateMenuElement.tag, |
| 50 NavMenuElement.tag, | |
| 51 NavRefreshElement.tag, | 49 NavRefreshElement.tag, |
| 52 NavNotifyElement.tag, | 50 NavNotifyElement.tag, |
| 53 ObjectCommonElement.tag, | 51 ObjectCommonElement.tag, |
| 54 SourceInsetElement.tag, | 52 SourceInsetElement.tag, |
| 55 SourceLinkElement.tag, | 53 SourceLinkElement.tag, |
| 56 ViewFooterElement.tag | 54 ViewFooterElement.tag |
| 57 ]); | 55 ]); |
| 58 | 56 |
| 59 RenderingScheduler<InstanceViewElement> _r; | 57 RenderingScheduler<InstanceViewElement> _r; |
| 60 | 58 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 new HRElement(), | 176 new HRElement(), |
| 179 new SourceInsetElement(_isolate, _location, _scripts, _instances, | 177 new SourceInsetElement(_isolate, _location, _scripts, _instances, |
| 180 _events, queue: _r.queue) | 178 _events, queue: _r.queue) |
| 181 ]); | 179 ]); |
| 182 } | 180 } |
| 183 content.addAll([ | 181 content.addAll([ |
| 184 new HRElement(), | 182 new HRElement(), |
| 185 new ViewFooterElement(queue: _r.queue) | 183 new ViewFooterElement(queue: _r.queue) |
| 186 ]); | 184 ]); |
| 187 children = [ | 185 children = [ |
| 188 new NavBarElement(queue: _r.queue) | 186 navBar(_createMenu()), |
| 189 ..children = _createMenu(), | |
| 190 new DivElement()..classes = ['content-centered-big'] | 187 new DivElement()..classes = ['content-centered-big'] |
| 191 ..children = content | 188 ..children = content |
| 192 ]; | 189 ]; |
| 193 } | 190 } |
| 194 | 191 |
| 195 List<Element> _createMenu() { | 192 List<Element> _createMenu() { |
| 196 final menu = [ | 193 final menu = [ |
| 197 new NavTopMenuElement(queue: _r.queue), | 194 new NavTopMenuElement(queue: _r.queue), |
| 198 new NavVMMenuElement(_vm, _events, queue: _r.queue), | 195 new NavVMMenuElement(_vm, _events, queue: _r.queue), |
| 199 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue) | 196 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue) |
| 200 ]; | 197 ]; |
| 201 if (_library != null) { | 198 if (_library != null) { |
| 202 menu.add(new NavLibraryMenuElement(_isolate, _library, | 199 menu.add(new NavLibraryMenuElement(_isolate, _library, |
| 203 queue: _r.queue)); | 200 queue: _r.queue)); |
| 204 } | 201 } |
| 205 menu.addAll([ | 202 menu.addAll([ |
| 206 new NavClassMenuElement(_isolate, _instance.clazz, queue: _r.queue), | 203 new NavClassMenuElement(_isolate, _instance.clazz, queue: _r.queue), |
| 207 new NavMenuElement('instance', last: true, queue: _r.queue), | 204 navMenu('instance'), |
| 208 new NavRefreshElement(queue: _r.queue) | 205 new NavRefreshElement(queue: _r.queue) |
| 209 ..onRefresh.listen((e) { | 206 ..onRefresh.listen((e) { |
| 210 e.element.disabled = true; | 207 e.element.disabled = true; |
| 211 _refresh(); | 208 _refresh(); |
| 212 }), | 209 }), |
| 213 new NavNotifyElement(_notifications, queue: _r.queue) | 210 new NavNotifyElement(_notifications, queue: _r.queue) |
| 214 ]); | 211 ]); |
| 215 return menu; | 212 return menu; |
| 216 } | 213 } |
| 217 | 214 |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 int i = 0; | 351 int i = 0; |
| 355 members.add(new DivElement()..classes = ['memberItem'] | 352 members.add(new DivElement()..classes = ['memberItem'] |
| 356 ..children = [ | 353 ..children = [ |
| 357 new DivElement()..classes = ['memberName'] | 354 new DivElement()..classes = ['memberName'] |
| 358 ..text = 'native fields (${_instance.nativeFields.length})', | 355 ..text = 'native fields (${_instance.nativeFields.length})', |
| 359 new DivElement()..classes = ['memberName'] | 356 new DivElement()..classes = ['memberName'] |
| 360 ..children = [ | 357 ..children = [ |
| 361 new CurlyBlockElement( | 358 new CurlyBlockElement( |
| 362 expanded: _instance.nativeFields.length <= 100, | 359 expanded: _instance.nativeFields.length <= 100, |
| 363 queue: _r.queue) | 360 queue: _r.queue) |
| 364 ..children = [ | 361 ..content = [ |
| 365 new DivElement()..classes = ['memberList'] | 362 new DivElement()..classes = ['memberList'] |
| 366 ..children = _instance.nativeFields.map((f) => | 363 ..children = _instance.nativeFields.map((f) => |
| 367 new DivElement()..classes = ['memberItem'] | 364 new DivElement()..classes = ['memberItem'] |
| 368 ..children = [ | 365 ..children = [ |
| 369 new DivElement()..classes = ['memberName'] | 366 new DivElement()..classes = ['memberName'] |
| 370 ..text = '[ ${i++} ]', | 367 ..text = '[ ${i++} ]', |
| 371 new DivElement()..classes = ['memberValue'] | 368 new DivElement()..classes = ['memberValue'] |
| 372 ..text = '[ ${f.value} ]' | 369 ..text = '[ ${f.value} ]' |
| 373 ]).toList() | 370 ]).toList() |
| 374 ] | 371 ] |
| 375 ] | 372 ] |
| 376 ]); | 373 ]); |
| 377 } | 374 } |
| 378 | 375 |
| 379 if (_instance.fields != null && _instance.fields.isNotEmpty) { | 376 if (_instance.fields != null && _instance.fields.isNotEmpty) { |
| 380 final fields = _instance.fields.toList(); | 377 final fields = _instance.fields.toList(); |
| 381 members.add(new DivElement()..classes = ['memberItem'] | 378 members.add(new DivElement()..classes = ['memberItem'] |
| 382 ..children = [ | 379 ..children = [ |
| 383 new DivElement()..classes = ['memberName'] | 380 new DivElement()..classes = ['memberName'] |
| 384 ..text = 'fields (${fields.length})', | 381 ..text = 'fields (${fields.length})', |
| 385 new DivElement()..classes = ['memberName'] | 382 new DivElement()..classes = ['memberName'] |
| 386 ..children = [ | 383 ..children = [ |
| 387 new CurlyBlockElement( | 384 new CurlyBlockElement( |
| 388 expanded: fields.length <= 100, | 385 expanded: fields.length <= 100, |
| 389 queue: _r.queue) | 386 queue: _r.queue) |
| 390 ..children = [ | 387 ..content = [ |
| 391 new DivElement()..classes = ['memberList'] | 388 new DivElement()..classes = ['memberList'] |
| 392 ..children = fields.map((f) => | 389 ..children = fields.map((f) => |
| 393 new DivElement()..classes = ['memberItem'] | 390 new DivElement()..classes = ['memberItem'] |
| 394 ..children = [ | 391 ..children = [ |
| 395 new DivElement()..classes = ['memberName'] | 392 new DivElement()..classes = ['memberName'] |
| 396 ..children = [ | 393 ..children = [ |
| 397 new FieldRefElement(_isolate, f.decl, _instances, | 394 new FieldRefElement(_isolate, f.decl, _instances, |
| 398 queue: _r.queue) | 395 queue: _r.queue) |
| 399 ], | 396 ], |
| 400 new DivElement()..classes = ['memberValue'] | 397 new DivElement()..classes = ['memberValue'] |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 final associations = _instance.associations.toList(); | 449 final associations = _instance.associations.toList(); |
| 453 members.add(new DivElement()..classes = ['memberItem'] | 450 members.add(new DivElement()..classes = ['memberItem'] |
| 454 ..children = [ | 451 ..children = [ |
| 455 new DivElement()..classes = ['memberName'] | 452 new DivElement()..classes = ['memberName'] |
| 456 ..text = 'associations (${_instance.length})', | 453 ..text = 'associations (${_instance.length})', |
| 457 new DivElement()..classes = ['memberName'] | 454 new DivElement()..classes = ['memberName'] |
| 458 ..children = [ | 455 ..children = [ |
| 459 new CurlyBlockElement( | 456 new CurlyBlockElement( |
| 460 expanded: associations.length <= 100, | 457 expanded: associations.length <= 100, |
| 461 queue: _r.queue) | 458 queue: _r.queue) |
| 462 ..children = [ | 459 ..content = [ |
| 463 new DivElement()..classes = ['memberList'] | 460 new DivElement()..classes = ['memberList'] |
| 464 ..children = associations.map((a) => | 461 ..children = associations.map((a) => |
| 465 new DivElement()..classes = ['memberItem'] | 462 new DivElement()..classes = ['memberItem'] |
| 466 ..children = [ | 463 ..children = [ |
| 467 new DivElement()..classes = ['memberName'] | 464 new DivElement()..classes = ['memberName'] |
| 468 ..children = [ | 465 ..children = [ |
| 469 new SpanElement()..text = '[ ', | 466 new SpanElement()..text = '[ ', |
| 470 anyRef(_isolate, a.key, _instances, | 467 anyRef(_isolate, a.key, _instances, |
| 471 queue: _r.queue), | 468 queue: _r.queue), |
| 472 new SpanElement()..text = ' ]', | 469 new SpanElement()..text = ' ]', |
| (...skipping 24 matching lines...) Expand all Loading... |
| 497 int i = 0; | 494 int i = 0; |
| 498 members.add(new DivElement()..classes = ['memberItem'] | 495 members.add(new DivElement()..classes = ['memberItem'] |
| 499 ..children = [ | 496 ..children = [ |
| 500 new DivElement()..classes = ['memberName'] | 497 new DivElement()..classes = ['memberName'] |
| 501 ..text = 'elements (${_instance.length})', | 498 ..text = 'elements (${_instance.length})', |
| 502 new DivElement()..classes = ['memberValue'] | 499 new DivElement()..classes = ['memberValue'] |
| 503 ..children = [ | 500 ..children = [ |
| 504 new CurlyBlockElement( | 501 new CurlyBlockElement( |
| 505 expanded: typedElements.length <= 100, | 502 expanded: typedElements.length <= 100, |
| 506 queue: _r.queue) | 503 queue: _r.queue) |
| 507 ..children = [ | 504 ..content = [ |
| 508 new DivElement()..classes = ['memberList'] | 505 new DivElement()..classes = ['memberList'] |
| 509 ..children = typedElements.map((e) => | 506 ..children = typedElements.map((e) => |
| 510 new DivElement()..classes = ['memberItem'] | 507 new DivElement()..classes = ['memberItem'] |
| 511 ..children = [ | 508 ..children = [ |
| 512 new DivElement()..classes = ['memberName'] | 509 new DivElement()..classes = ['memberName'] |
| 513 ..text = '[ ${i++} ]', | 510 ..text = '[ ${i++} ]', |
| 514 new DivElement()..classes = ['memberValue'] | 511 new DivElement()..classes = ['memberValue'] |
| 515 ..text = '$e' | 512 ..text = '$e' |
| 516 ]).toList() | 513 ]).toList() |
| 517 ] | 514 ] |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 684 | 681 |
| 685 Future _toggleBreakpoint() async { | 682 Future _toggleBreakpoint() async { |
| 686 if (_instance.activationBreakpoint == null) { | 683 if (_instance.activationBreakpoint == null) { |
| 687 await _breakpoints.addOnActivation(_isolate, _instance); | 684 await _breakpoints.addOnActivation(_isolate, _instance); |
| 688 } else { | 685 } else { |
| 689 await _breakpoints.remove(_isolate, _instance.activationBreakpoint); | 686 await _breakpoints.remove(_isolate, _instance.activationBreakpoint); |
| 690 } | 687 } |
| 691 await _refresh(); | 688 await _refresh(); |
| 692 } | 689 } |
| 693 } | 690 } |
| OLD | NEW |