| 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 curly_block_element; | 5 library curly_block_element; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:html'; | 8 import 'dart:html'; |
| 9 import 'package:observatory/src/elements/helpers/tag.dart'; | 9 import 'package:observatory/src/elements/helpers/tag.dart'; |
| 10 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; | 10 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 Iterable<Element> _content = const []; | 30 Iterable<Element> _content = const []; |
| 31 | 31 |
| 32 bool get expanded => _expanded; | 32 bool get expanded => _expanded; |
| 33 bool get disabled => _disabled; | 33 bool get disabled => _disabled; |
| 34 Iterable<Element> get content => _content; | 34 Iterable<Element> get content => _content; |
| 35 | 35 |
| 36 set expanded(bool value) { | 36 set expanded(bool value) { |
| 37 if (_expanded != value) _onToggle.add(new CurlyBlockToggleEvent(this)); | 37 if (_expanded != value) _onToggle.add(new CurlyBlockToggleEvent(this)); |
| 38 _expanded = _r.checkAndReact(_expanded, value); | 38 _expanded = _r.checkAndReact(_expanded, value); |
| 39 } | 39 } |
| 40 |
| 40 set disabled(bool value) => _disabled = _r.checkAndReact(_disabled, value); | 41 set disabled(bool value) => _disabled = _r.checkAndReact(_disabled, value); |
| 41 set content(Iterable<Element> value) { | 42 set content(Iterable<Element> value) { |
| 42 _content = value.toList(); | 43 _content = value.toList(); |
| 43 _r.dirty(); | 44 _r.dirty(); |
| 44 } | 45 } |
| 45 | 46 |
| 46 factory CurlyBlockElement({bool expanded: false, bool disabled: false, | 47 factory CurlyBlockElement( |
| 47 RenderingQueue queue}) { | 48 {bool expanded: false, bool disabled: false, RenderingQueue queue}) { |
| 48 assert(expanded != null); | 49 assert(expanded != null); |
| 49 assert(disabled != null); | 50 assert(disabled != null); |
| 50 CurlyBlockElement e = document.createElement(tag.name); | 51 CurlyBlockElement e = document.createElement(tag.name); |
| 51 e._r = new RenderingScheduler(e, queue: queue); | 52 e._r = new RenderingScheduler(e, queue: queue); |
| 52 e._expanded = expanded; | 53 e._expanded = expanded; |
| 53 e._disabled = disabled; | 54 e._disabled = disabled; |
| 54 e._r.enable(); | 55 e._r.enable(); |
| 55 return e; | 56 return e; |
| 56 } | 57 } |
| 57 | 58 |
| 58 CurlyBlockElement.created() : super.created(); | 59 CurlyBlockElement.created() : super.created(); |
| 59 | 60 |
| 60 @override | 61 @override |
| 61 void attached() { super.attached(); _r.enable(); } | 62 void attached() { |
| 63 super.attached(); |
| 64 _r.enable(); |
| 65 } |
| 62 | 66 |
| 63 @override | 67 @override |
| 64 void detached() { | 68 void detached() { |
| 65 super.detached(); _r.disable(notify: true); | 69 super.detached(); |
| 70 _r.disable(notify: true); |
| 66 children = []; | 71 children = []; |
| 67 } | 72 } |
| 68 | 73 |
| 69 void toggle() { | 74 void toggle() { |
| 70 if (disabled) { | 75 if (disabled) { |
| 71 _r.scheduleNotification(); | 76 _r.scheduleNotification(); |
| 72 return; | 77 return; |
| 73 } | 78 } |
| 74 expanded = !expanded; | 79 expanded = !expanded; |
| 75 } | 80 } |
| 76 | 81 |
| 77 void render() { | 82 void render() { |
| 78 List<Element> content = [ | 83 List<Element> content = [new SpanElement()..text = '{']; |
| 79 new SpanElement()..text = '{' | |
| 80 ]; | |
| 81 SpanElement label = new SpanElement() | 84 SpanElement label = new SpanElement() |
| 82 ..classes = disabled ? ['curly-block', 'disabled'] : ['curly-block'] | 85 ..classes = disabled ? ['curly-block', 'disabled'] : ['curly-block'] |
| 83 ..innerHtml = expanded ? | 86 ..innerHtml = expanded |
| 84 ' ⊟ ' : ' ⊞ '; | 87 ? ' ⊟ ' |
| 88 : ' ⊞ '; |
| 85 if (disabled) { | 89 if (disabled) { |
| 86 content.add(label); | 90 content.add(label); |
| 87 } else { | 91 } else { |
| 88 content.add(new AnchorElement() | 92 content.add(new AnchorElement() |
| 89 ..onClick.listen((_) { toggle(); }) | 93 ..onClick.listen((_) { |
| 94 toggle(); |
| 95 }) |
| 90 ..children = [label]); | 96 ..children = [label]); |
| 91 } | 97 } |
| 92 if (expanded) { | 98 if (expanded) { |
| 93 content.add(new BRElement()); | 99 content.add(new BRElement()); |
| 94 content.addAll(_content); | 100 content.addAll(_content); |
| 95 } | 101 } |
| 96 content.add(new SpanElement()..text = '}'); | 102 content.add(new SpanElement()..text = '}'); |
| 97 children = content; | 103 children = content; |
| 98 } | 104 } |
| 99 } | 105 } |
| OLD | NEW |