| 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 touch; | 5 part of touch; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Implementation of a scrollbar for the custom scrolling behavior | 8 * Implementation of a scrollbar for the custom scrolling behavior |
| 9 * defined in [:Scroller:]. | 9 * defined in [:Scroller:]. |
| 10 */ | 10 */ |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 */ | 45 */ |
| 46 Function _boundHideFn; | 46 Function _boundHideFn; |
| 47 | 47 |
| 48 Element _verticalElement; | 48 Element _verticalElement; |
| 49 Element _horizontalElement; | 49 Element _horizontalElement; |
| 50 | 50 |
| 51 int _currentScrollStartMouse; | 51 int _currentScrollStartMouse; |
| 52 num _currentScrollStartOffset; | 52 num _currentScrollStartOffset; |
| 53 bool _currentScrollVertical; | 53 bool _currentScrollVertical; |
| 54 num _currentScrollRatio; | 54 num _currentScrollRatio; |
| 55 num _timerId; | 55 Timer _timer; |
| 56 | 56 |
| 57 bool _displayOnHover; | 57 bool _displayOnHover; |
| 58 bool _hovering = false; | 58 bool _hovering = false; |
| 59 | 59 |
| 60 Scrollbar(Scroller scroller, [displayOnHover = true]) : | 60 Scrollbar(Scroller scroller, [displayOnHover = true]) : |
| 61 _displayOnHover = displayOnHover, | 61 _displayOnHover = displayOnHover, |
| 62 _scroller = scroller, | 62 _scroller = scroller, |
| 63 _frame = scroller.getFrame(), | 63 _frame = scroller.getFrame(), |
| 64 _cachedSize = new Map<String, num>() { | 64 _cachedSize = new Map<String, num>() { |
| 65 _boundHideFn = () { _showScrollbars(false); }; | 65 _boundHideFn = () { _showScrollbars(false); }; |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 _cancelTimeout(); | 141 _cancelTimeout(); |
| 142 _showScrollbars(true); | 142 _showScrollbars(true); |
| 143 refresh(); | 143 refresh(); |
| 144 } | 144 } |
| 145 }); | 145 }); |
| 146 _frame.onMouseOut.listen((e) { | 146 _frame.onMouseOut.listen((e) { |
| 147 _hovering = false; | 147 _hovering = false; |
| 148 // Start hiding immediately if we aren't | 148 // Start hiding immediately if we aren't |
| 149 // scrolling or already in the process of | 149 // scrolling or already in the process of |
| 150 // hidng the scrollbar | 150 // hidng the scrollbar |
| 151 if (!_scrollInProgress && _timerId == null) { | 151 if (!_scrollInProgress && _timer == null) { |
| 152 _boundHideFn(); | 152 _boundHideFn(); |
| 153 } | 153 } |
| 154 }); | 154 }); |
| 155 } | 155 } |
| 156 } | 156 } |
| 157 | 157 |
| 158 void _onStart(UIEvent e) { | 158 void _onStart(UIEvent e) { |
| 159 Element elementOver = e.target; | 159 Element elementOver = e.target; |
| 160 if (elementOver == _verticalElement || | 160 if (elementOver == _verticalElement || |
| 161 elementOver == _horizontalElement) { | 161 elementOver == _horizontalElement) { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 _scroller._onScrollerDragEnd.add( | 225 _scroller._onScrollerDragEnd.add( |
| 226 new Event(ScrollerEventType.DRAG_END)); | 226 new Event(ScrollerEventType.DRAG_END)); |
| 227 } | 227 } |
| 228 | 228 |
| 229 | 229 |
| 230 /** | 230 /** |
| 231 * When scrolling ends, schedule a timeout to hide the scrollbars. | 231 * When scrolling ends, schedule a timeout to hide the scrollbars. |
| 232 */ | 232 */ |
| 233 void _onScrollerEnd(Event e) { | 233 void _onScrollerEnd(Event e) { |
| 234 _cancelTimeout(); | 234 _cancelTimeout(); |
| 235 _timerId = window.setTimeout(_boundHideFn, _DISPLAY_TIME); | 235 _timer = new Timer(const Duration(milliseconds: _DISPLAY_TIME), |
| 236 _boundHideFn); |
| 236 _scrollInProgress = false; | 237 _scrollInProgress = false; |
| 237 } | 238 } |
| 238 void onScrollerMoved(num scrollX, num scrollY, bool decelerating) { | 239 void onScrollerMoved(num scrollX, num scrollY, bool decelerating) { |
| 239 if (_scrollInProgress == false) { | 240 if (_scrollInProgress == false) { |
| 240 // Display the scrollbar and then immediately prepare to hide it... | 241 // Display the scrollbar and then immediately prepare to hide it... |
| 241 _onScrollerStart(null); | 242 _onScrollerStart(null); |
| 242 _onScrollerEnd(null); | 243 _onScrollerEnd(null); |
| 243 } | 244 } |
| 244 updateScrollbars(scrollX, scrollY); | 245 updateScrollbars(scrollX, scrollY); |
| 245 } | 246 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 274 /** | 275 /** |
| 275 * When scrolling starts, show scrollbars and clear hide intervals. | 276 * When scrolling starts, show scrollbars and clear hide intervals. |
| 276 */ | 277 */ |
| 277 void _onScrollerStart(Event e) { | 278 void _onScrollerStart(Event e) { |
| 278 _scrollInProgress = true; | 279 _scrollInProgress = true; |
| 279 _cancelTimeout(); | 280 _cancelTimeout(); |
| 280 _showScrollbars(true); | 281 _showScrollbars(true); |
| 281 } | 282 } |
| 282 | 283 |
| 283 void _cancelTimeout() { | 284 void _cancelTimeout() { |
| 284 if (_timerId != null) { | 285 if (_timer != null) { |
| 285 window.clearTimeout(_timerId); | 286 _timer.cancel(); |
| 286 _timerId = null; | 287 _timer = null; |
| 287 } | 288 } |
| 288 } | 289 } |
| 289 | 290 |
| 290 /** | 291 /** |
| 291 * Show or hide the scrollbars by changing the opacity. | 292 * Show or hide the scrollbars by changing the opacity. |
| 292 */ | 293 */ |
| 293 void _showScrollbars(bool show) { | 294 void _showScrollbars(bool show) { |
| 294 if (_hovering == true && _displayOnHover) { | 295 if (_hovering == true && _displayOnHover) { |
| 295 show = true; | 296 show = true; |
| 296 } | 297 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 style.setProperty(cssPos, '${pos}px', ''); | 346 style.setProperty(cssPos, '${pos}px', ''); |
| 346 if (_cachedSize[cssSize] != size) { | 347 if (_cachedSize[cssSize] != size) { |
| 347 _cachedSize[cssSize] = size; | 348 _cachedSize[cssSize] = size; |
| 348 style.setProperty(cssSize, '${size}px', ''); | 349 style.setProperty(cssSize, '${size}px', ''); |
| 349 } | 350 } |
| 350 if (element.parent == null) { | 351 if (element.parent == null) { |
| 351 _frame.nodes.add(element); | 352 _frame.nodes.add(element); |
| 352 } | 353 } |
| 353 } | 354 } |
| 354 } | 355 } |
| OLD | NEW |