| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 view; | 5 part of view; |
| 6 | 6 |
| 7 class PageState { | 7 class PageState { |
| 8 final ObservableValue<int> current; | 8 final ObservableValue<int> current; |
| 9 final ObservableValue<int> target; | 9 final ObservableValue<int> target; |
| 10 final ObservableValue<int> length; | 10 final ObservableValue<int> length; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 // TODO(jmesserly): this was supposed to use the somewhat flatter unicode | 39 // TODO(jmesserly): this was supposed to use the somewhat flatter unicode |
| 40 // glyphs that Chrome uses on the new tab page, but the text is getting | 40 // glyphs that Chrome uses on the new tab page, but the text is getting |
| 41 // corrupted. | 41 // corrupted. |
| 42 final node = new Element.html(''' | 42 final node = new Element.html(''' |
| 43 <div class="page-number"> | 43 <div class="page-number"> |
| 44 <div class="page-number-left">‹</div> | 44 <div class="page-number-left">‹</div> |
| 45 <div class="page-number-label"></div> | 45 <div class="page-number-label"></div> |
| 46 <div class="page-number-right">›</div> | 46 <div class="page-number-right">›</div> |
| 47 </div> | 47 </div> |
| 48 '''); | 48 '''); |
| 49 _left = node.query('.page-number-left'); | 49 _left = node.querySelector('.page-number-left'); |
| 50 _label = node.query('.page-number-label'); | 50 _label = node.querySelector('.page-number-label'); |
| 51 _right = node.query('.page-number-right'); | 51 _right = node.querySelector('.page-number-right'); |
| 52 return node; | 52 return node; |
| 53 } | 53 } |
| 54 | 54 |
| 55 void enterDocument() { | 55 void enterDocument() { |
| 56 watch(pages.current, (s) => _update()); | 56 watch(pages.current, (s) => _update()); |
| 57 watch(pages.length, (s) => _update()); | 57 watch(pages.length, (s) => _update()); |
| 58 | 58 |
| 59 _left.onClick.listen((e) { | 59 _left.onClick.listen((e) { |
| 60 if (pages.current.value > 0) { | 60 if (pages.current.value > 0) { |
| 61 pages.target.value = pages.current.value - 1; | 61 pages.target.value = pages.current.value - 1; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 int _viewportSize; | 96 int _viewportSize; |
| 97 Scroller scroller; | 97 Scroller scroller; |
| 98 | 98 |
| 99 PagedColumnView(this.pages, this.contentView) : super(); | 99 PagedColumnView(this.pages, this.contentView) : super(); |
| 100 | 100 |
| 101 Element render() { | 101 Element render() { |
| 102 final node = new Element.html(''' | 102 final node = new Element.html(''' |
| 103 <div class="paged-column"> | 103 <div class="paged-column"> |
| 104 <div class="paged-column-container"></div> | 104 <div class="paged-column-container"></div> |
| 105 </div>'''); | 105 </div>'''); |
| 106 _container = node.query('.paged-column-container'); | 106 _container = node.querySelector('.paged-column-container'); |
| 107 _container.nodes.add(contentView.node); | 107 _container.nodes.add(contentView.node); |
| 108 | 108 |
| 109 // TODO(jmesserly): if we end up with empty columns on the last page, | 109 // TODO(jmesserly): if we end up with empty columns on the last page, |
| 110 // this causes the last page to end up right justified. But it seems to | 110 // this causes the last page to end up right justified. But it seems to |
| 111 // work reasonably well for both clicking and throwing. So for now, leave | 111 // work reasonably well for both clicking and throwing. So for now, leave |
| 112 // the scroller configured the default way. | 112 // the scroller configured the default way. |
| 113 | 113 |
| 114 // TODO(jacobr): use named arguments when available. | 114 // TODO(jacobr): use named arguments when available. |
| 115 scroller = new Scroller( | 115 scroller = new Scroller( |
| 116 _container, | 116 _container, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 136 // But we need computedStyle to read our CSS properties. | 136 // But we need computedStyle to read our CSS properties. |
| 137 void enterDocument() { | 137 void enterDocument() { |
| 138 scheduleMicrotask(() { | 138 scheduleMicrotask(() { |
| 139 var style = contentView.node.getComputedStyle(); | 139 var style = contentView.node.getComputedStyle(); |
| 140 _computeColumnGap(style); | 140 _computeColumnGap(style); |
| 141 | 141 |
| 142 // Trigger a fake resize event so we measure our height. | 142 // Trigger a fake resize event so we measure our height. |
| 143 windowResized(); | 143 windowResized(); |
| 144 | 144 |
| 145 // Hook img onload events, so we find out about changes in content size | 145 // Hook img onload events, so we find out about changes in content size |
| 146 for (ImageElement img in contentView.node.queryAll("img")) { | 146 for (ImageElement img in contentView.node.querySelectorAll("img")) { |
| 147 if (!img.complete) { | 147 if (!img.complete) { |
| 148 img.onLoad.listen((e) { | 148 img.onLoad.listen((e) { |
| 149 _updatePageCount(null); | 149 _updatePageCount(null); |
| 150 }); | 150 }); |
| 151 } | 151 } |
| 152 } | 152 } |
| 153 | 153 |
| 154 // If the selected page changes, animate to it. | 154 // If the selected page changes, animate to it. |
| 155 watch(pages.target, (s) => _onPageSelected()); | 155 watch(pages.target, (s) => _onPageSelected()); |
| 156 watch(pages.length, (s) => _onPageSelected()); | 156 watch(pages.length, (s) => _onPageSelected()); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 return perPage * (columnSize + _columnGap); | 276 return perPage * (columnSize + _columnGap); |
| 277 } | 277 } |
| 278 | 278 |
| 279 void _onPageSelected() { | 279 void _onPageSelected() { |
| 280 scheduleMicrotask(() { | 280 scheduleMicrotask(() { |
| 281 int translate = -pages.target.value * _computePageSize(_container); | 281 int translate = -pages.target.value * _computePageSize(_container); |
| 282 scroller.throwTo(translate, 0); | 282 scroller.throwTo(translate, 0); |
| 283 }); | 283 }); |
| 284 } | 284 } |
| 285 } | 285 } |
| OLD | NEW |