OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 // TODO - figure out whether classList exists, and if so use that | 5 // TODO - figure out whether classList exists, and if so use that |
6 // rather than the className property that is being used here. | 6 // rather than the className property that is being used here. |
7 | 7 |
8 class _CssClassSet implements Set<String> { | 8 class _CssClassSet implements Set<String> { |
9 | 9 |
10 final _element; | 10 final _element; |
11 | 11 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 /** | 94 /** |
95 * Helper method used to modify the set of css classes on this element. | 95 * Helper method used to modify the set of css classes on this element. |
96 * | 96 * |
97 * f - callback with: | 97 * f - callback with: |
98 * s - a Set of all the css class name currently on this element. | 98 * s - a Set of all the css class name currently on this element. |
99 * | 99 * |
100 * After f returns, the modified set is written to the | 100 * After f returns, the modified set is written to the |
101 * className property of this element. | 101 * className property of this element. |
102 */ | 102 */ |
103 void _modify( f(Set<String> s)) { | 103 void _modify( f(Set<String> s)) { |
| 104 assert(!_inMeasurementFrame || !_nodeInDocument(_element)); |
104 Set<String> s = _read(); | 105 Set<String> s = _read(); |
105 f(s); | 106 f(s); |
106 _write(s); | 107 _write(s); |
107 } | 108 } |
108 | 109 |
109 /** | 110 /** |
110 * Read the class names from the HTMLElement class property, | 111 * Read the class names from the HTMLElement class property, |
111 * and put them into a set (duplicates are discarded). | 112 * and put them into a set (duplicates are discarded). |
112 */ | 113 */ |
113 Set<String> _read() { | 114 Set<String> _read() { |
114 // TODO(mattsh) simplify this once split can take regex. | 115 // TODO(mattsh) simplify this once split can take regex. |
115 Set<String> s = new Set<String>(); | 116 Set<String> s = new Set<String>(); |
116 for (String name in _element.className.split(' ')) { | 117 for (String name in _element.className.split(' ')) { |
117 String trimmed = name.trim(); | 118 String trimmed = name.trim(); |
118 if (!trimmed.isEmpty()) { | 119 if (!trimmed.isEmpty()) { |
119 s.add(trimmed); | 120 s.add(trimmed); |
120 } | 121 } |
121 } | 122 } |
122 return s; | 123 return s; |
123 } | 124 } |
124 | 125 |
125 /** | 126 /** |
126 * Join all the elements of a set into one string and write | 127 * Join all the elements of a set into one string and write |
127 * back to the element. | 128 * back to the element. |
128 */ | 129 */ |
129 void _write(Set s) { | 130 void _write(Set s) { |
| 131 assert(!_inMeasurementFrame || !_nodeInDocument(_element)); |
130 _element.className = _formatSet(s); | 132 _element.className = _formatSet(s); |
131 } | 133 } |
132 | 134 |
133 String _formatSet(Set<String> s) { | 135 String _formatSet(Set<String> s) { |
134 // TODO(mattsh) should be able to pass Set to String.joins http:/b/5398605 | 136 // TODO(mattsh) should be able to pass Set to String.joins http:/b/5398605 |
135 List list = new List.from(s); | 137 List list = new List.from(s); |
136 return Strings.join(list, ' '); | 138 return Strings.join(list, ' '); |
137 } | 139 } |
138 | 140 |
139 } | 141 } |
140 | 142 |
OLD | NEW |