Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: runtime/bin/vmservice/client/lib/src/app/view_model.dart

Issue 237683004: Disable applyAuthorStyles (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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>();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 _collapse(row.children[i]); 92 _collapse(row.children[i]);
93 } 93 }
94 } 94 }
95 // Collapse this row. 95 // Collapse this row.
96 row.expanded = false; 96 row.expanded = false;
97 // Remove all children. 97 // Remove all children.
98 int index = _index(row); 98 int index = _index(row);
99 rows.removeRange(index + 1, index + 1 + childCount); 99 rows.removeRange(index + 1, index + 1 + childCount);
100 } 100 }
101 } 101 }
102
103 typedef String ValueFormatter(dynamic value);
104
105 class SortedTableColumn {
106 static String toStringFormatter(dynamic v) => v != null ? v.toString() : '<nul l>';
turnidge 2014/04/17 20:18:54 Line is long.
Cutch 2014/04/17 22:12:39 Done.
107 final String label;
108 final ValueFormatter formatter;
109 SortedTableColumn.withFormatter(this.label, this.formatter);
110 SortedTableColumn(this.label)
111 : formatter = toStringFormatter;
112 }
113
114 class SortedTableRow {
115 final List values;
116 SortedTableRow(this.values);
117 }
118
119 class SortedTable extends Observable {
120 final List<SortedTableColumn> columns;
121 final List<SortedTableRow> rows = new List<SortedTableRow>();
122 final List<int> _order = [];
turnidge 2014/04/17 20:18:54 name - maybe _sortedRows?
Cutch 2014/04/17 22:12:39 Done.
Cutch 2014/04/17 22:12:39 Done.
123
124 SortedTable(this.columns) {
turnidge 2014/04/17 20:18:54 drop constructor body -> SortedTable(this.columns)
Cutch 2014/04/17 22:12:39 Done.
125
126 }
127
128 int _sortColumnIndex = 0;
129 set sortColumnIndex(var index) {
130 assert(index >= 0);
131 assert(index < columns.length);
132 _sortColumnIndex = index;
133 notifyPropertyChange(#getColumnLabel, 0, 1);
134 }
135 int get sortColumnIndex => _sortColumnIndex;
136 bool _sortDescending = true;
137
138 void sort() {
139 assert(_sortColumnIndex >= 0);
140 assert(_sortColumnIndex < columns.length);
141 _order.sort((i, j) {
142 var a = rows[i].values[_sortColumnIndex];
143 var b = rows[j].values[_sortColumnIndex];
144 if (_sortDescending) {
145 return b.compareTo(a);
146 } else {
147 return a.compareTo(b);
148 }
149 });
150 notifyPropertyChange(#sortedRows, 0, 1);
151 }
152
153 @observable List<int> get sortedRows => _order;
154
155 void clearRows() {
156 rows.clear();
157 _order.clear();
158 }
159
160 void addRow(SortedTableRow row) {
161 _order.add(rows.length);
162 rows.add(row);
163 notifyPropertyChange(#sortedRows, 0, 1);
164 }
165
166 @reflectable String getFormattedValue(int row, int column) {
167 var value = getValue(row, column);
168 var formatter = columns[column].formatter;
169 return formatter(value);
170 }
171
172 @reflectable String getColumnLabel(int column) {
173 assert(column >= 0);
174 assert(column < columns.length);
175 const arrowUp = '\u25BC';
176 const arrowDown = '\u25B2';
177 const none = '';
turnidge 2014/04/17 20:18:54 Is 'none' used?
Cutch 2014/04/17 22:12:39 Dead.
178 if (column != _sortColumnIndex) {
179 return columns[column].label;
180 }
181 return columns[column].label + (_sortDescending ? arrowUp : arrowDown);
182 }
183
184 @reflectable dynamic getValue(int row, int column) {
185 return rows[row].values[column];
186 }
187
188 void dump() {
189 for (var i = 0; i < rows.length; i++) {
190 String row = '';
turnidge 2014/04/17 20:18:54 Does it make sense to use StringBuffer here?
Cutch 2014/04/17 22:12:39 This code was only used for debugging. Removed.
191 for (var j = 0; j < columns.length; j++) {
192 row += getFormattedValue(i, j) + ' ';
193 }
194 print(row);
195 }
196 }
197 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698