| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 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 | 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 part of app; | 5 part of app; |
| 6 | 6 |
| 7 abstract class TableTreeRow extends Observable { | 7 abstract class TableTreeRow extends Observable { |
| 8 final TableTreeRow parent; | 8 final TableTreeRow parent; |
| 9 @observable final int depth; | 9 @observable final int depth; |
| 10 @observable final List<TableTreeRow> children = new List<TableTreeRow>(); | 10 @observable final List<TableTreeRow> children = new List<TableTreeRow>(); |
| 11 @observable final List<String> columns = []; | 11 @observable final List<String> columns = []; |
| 12 static const arrowRight = '\u2192'; |
| 13 static const arrowDownRight = '\u21b3'; |
| 14 // TODO(johnmccutchan): Move expander display decisions into html once |
| 15 // tables and templates are better supported. |
| 16 @observable String expander = arrowRight; |
| 12 | 17 |
| 13 TableTreeRow(TableTreeRow parent) : | 18 TableTreeRow(TableTreeRow parent) : |
| 14 parent = parent, | 19 parent = parent, |
| 15 depth = parent != null ? parent.depth+1 : 0; | 20 depth = parent != null ? parent.depth+1 : 0; |
| 16 | 21 |
| 17 bool _expanded = false; | 22 bool _expanded = false; |
| 18 bool get expanded => _expanded; | 23 bool get expanded => _expanded; |
| 19 set expanded(bool expanded) { | 24 set expanded(bool expanded) { |
| 20 var changed = _expanded != expanded; | 25 var changed = _expanded != expanded; |
| 21 _expanded = expanded; | 26 _expanded = expanded; |
| 22 if (changed) { | 27 if (changed) { |
| 23 // If the state has changed, fire callbacks. | 28 // If the state has changed, fire callbacks. |
| 24 if (_expanded) { | 29 if (_expanded) { |
| 30 expander = arrowDownRight; |
| 25 onShow(); | 31 onShow(); |
| 26 } else { | 32 } else { |
| 33 expander = arrowRight; |
| 27 onHide(); | 34 onHide(); |
| 28 } | 35 } |
| 29 } | 36 } |
| 30 } | 37 } |
| 31 | 38 |
| 32 bool toggle() { | 39 bool toggle() { |
| 33 expanded = !expanded; | 40 expanded = !expanded; |
| 34 return expanded; | 41 return expanded; |
| 35 } | 42 } |
| 36 | 43 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 _collapse(row.children[i]); | 92 _collapse(row.children[i]); |
| 86 } | 93 } |
| 87 } | 94 } |
| 88 // Collapse this row. | 95 // Collapse this row. |
| 89 row.expanded = false; | 96 row.expanded = false; |
| 90 // Remove all children. | 97 // Remove all children. |
| 91 int index = _index(row); | 98 int index = _index(row); |
| 92 rows.removeRange(index + 1, index + 1 + childCount); | 99 rows.removeRange(index + 1, index + 1 + childCount); |
| 93 } | 100 } |
| 94 } | 101 } |
| OLD | NEW |