Index: samples-dev/swarm/swarm_ui_lib/touch/Scroller.dart |
diff --git a/samples-dev/swarm/swarm_ui_lib/touch/Scroller.dart b/samples-dev/swarm/swarm_ui_lib/touch/Scroller.dart |
index ef78bb49fc03b2f1ed0966c6b9dfdbe80f399875..813ba35342916350cdd9d944f0e35d12509234a7 100644 |
--- a/samples-dev/swarm/swarm_ui_lib/touch/Scroller.dart |
+++ b/samples-dev/swarm/swarm_ui_lib/touch/Scroller.dart |
@@ -44,13 +44,13 @@ void joinFutures(List<Future> futures, Callback callback) { |
callback(); |
} |
} |
+ |
for (Future p in futures) { |
p.then(helper); |
} |
} |
class Scroller implements Draggable, MomentumDelegate { |
- |
/** Pixels to move each time an arrow key is pressed. */ |
static const ARROW_KEY_DELTA = 30; |
static const SCROLL_WHEEL_VELOCITY = 0.01; |
@@ -141,18 +141,21 @@ class Scroller implements Draggable, MomentumDelegate { |
bool _activeGesture = false; |
ScrollWatcher _scrollWatcher; |
- Scroller(Element scrollableElem, [this.verticalEnabled = false, |
- this.horizontalEnabled = false, |
- momentumEnabled = true, |
- lookupContentSizeDelegate = null, |
- num defaultDecelerationFactor = 1, |
- int scrollTechnique = null, bool capture = false]) |
+ Scroller(Element scrollableElem, |
+ [this.verticalEnabled = false, |
+ this.horizontalEnabled = false, |
+ momentumEnabled = true, |
+ lookupContentSizeDelegate = null, |
+ num defaultDecelerationFactor = 1, |
+ int scrollTechnique = null, |
+ bool capture = false]) |
: _momentumEnabled = momentumEnabled, |
_lookupContentSizeDelegate = lookupContentSizeDelegate, |
_element = scrollableElem, |
_frame = scrollableElem.parent, |
_scrollTechnique = scrollTechnique != null |
- ? scrollTechnique : ScrollerScrollTechnique.TRANSFORM_3D, |
+ ? scrollTechnique |
+ : ScrollerScrollTechnique.TRANSFORM_3D, |
_minPoint = new Coordinate(0, 0), |
_maxPoint = new Coordinate(0, 0), |
_maxOffset = new Coordinate(0, 0), |
@@ -178,33 +181,28 @@ class Scroller implements Draggable, MomentumDelegate { |
}); |
_frame.onKeyDown.listen((KeyboardEvent e) { |
- bool handled = false; |
- // We ignore key events where further scrolling in that direction |
- // would have no impact which matches default browser behavior with |
- // nested scrollable areas. |
- |
- switch(e.keyCode) { |
- case 33: // page-up |
- throwDelta( |
- 0, |
- _scrollSize.height * PAGE_KEY_SCROLL_FRACTION); |
- handled = true; |
- break; |
- case 34: // page-down |
- throwDelta( |
- 0, -_scrollSize.height * PAGE_KEY_SCROLL_FRACTION); |
- handled = true; |
- break; |
- case 35: // End |
- throwTo(_maxPoint.x, _minPoint.y, |
- FAST_SNAP_DECELERATION_FACTOR); |
- handled = true; |
- break; |
- case 36: // Home |
- throwTo(_maxPoint.x,_maxPoint.y, |
- FAST_SNAP_DECELERATION_FACTOR); |
- handled = true; |
- break; |
+ bool handled = false; |
+ // We ignore key events where further scrolling in that direction |
+ // would have no impact which matches default browser behavior with |
+ // nested scrollable areas. |
+ |
+ switch (e.keyCode) { |
+ case 33: // page-up |
+ throwDelta(0, _scrollSize.height * PAGE_KEY_SCROLL_FRACTION); |
+ handled = true; |
+ break; |
+ case 34: // page-down |
+ throwDelta(0, -_scrollSize.height * PAGE_KEY_SCROLL_FRACTION); |
+ handled = true; |
+ break; |
+ case 35: // End |
+ throwTo(_maxPoint.x, _minPoint.y, FAST_SNAP_DECELERATION_FACTOR); |
+ handled = true; |
+ break; |
+ case 36: // Home |
+ throwTo(_maxPoint.x, _maxPoint.y, FAST_SNAP_DECELERATION_FACTOR); |
+ handled = true; |
+ break; |
/* TODO(jacobr): enable arrow keys when the don't conflict with other |
application keyboard shortcuts. |
case 38: // up |
@@ -230,11 +228,11 @@ class Scroller implements Draggable, MomentumDelegate { |
FAST_SNAP_DECELERATION_FACTOR); |
break; |
*/ |
- } |
- if (handled) { |
- e.preventDefault(); |
- } |
- }); |
+ } |
+ if (handled) { |
+ e.preventDefault(); |
+ } |
+ }); |
// The scrollable element must be relatively positioned. |
// TODO(jacobr): this assert fires asynchronously which could be confusing. |
if (_scrollTechnique == ScrollerScrollTechnique.RELATIVE_POSITIONING) { |
@@ -284,7 +282,6 @@ class Scroller implements Draggable, MomentumDelegate { |
return _onDecelStartStream; |
} |
- |
/** |
* Add a scroll listener. This allows other classes to subscribe to scroll |
* notifications from this scroller. |
@@ -301,8 +298,7 @@ class Scroller implements Draggable, MomentumDelegate { |
* Adjust the new calculated scroll position based on the minimum allowed |
* position and returns the adjusted scroll value. |
*/ |
- num _adjustValue(num newPosition, num minPosition, |
- num maxPosition) { |
+ num _adjustValue(num newPosition, num minPosition, num maxPosition) { |
assert(minPosition <= maxPosition); |
if (newPosition < minPosition) { |
@@ -347,9 +343,7 @@ class Scroller implements Draggable, MomentumDelegate { |
_startDeceleration( |
_momentum.calculateVelocity( |
- _contentOffset, |
- snappedTarget, |
- decelerationFactor), |
+ _contentOffset, snappedTarget, decelerationFactor), |
decelerationFactor); |
if (_onDecelStart != null) { |
_onDecelStart.add(new Event(ScrollerEventType.DECEL_START)); |
@@ -383,17 +377,18 @@ class Scroller implements Draggable, MomentumDelegate { |
_snapContentOffsetToBounds(); |
_setContentOffset(_contentOffset.x, _contentOffset.y); |
} |
+ |
/** |
* Adjusted content size is a size with the combined largest height and width |
* of both the content and the frame. |
*/ |
Size _getAdjustedContentSize() { |
return new Size(Math.max(_scrollSize.width, _contentSize.width), |
- Math.max(_scrollSize.height, _contentSize.height)); |
+ Math.max(_scrollSize.height, _contentSize.height)); |
} |
// TODO(jmesserly): these should be properties instead of get* methods |
- num getDefaultVerticalOffset() => _maxPoint.y; |
+ num getDefaultVerticalOffset() => _maxPoint.y; |
Element getElement() => _element; |
Element getFrame() => _frame; |
num getHorizontalOffset() => _contentOffset.x; |
@@ -408,7 +403,7 @@ class Scroller implements Draggable, MomentumDelegate { |
return (x - _minPoint.x) / (_maxPoint.x - _minPoint.x); |
} |
- num getMaxPointY()=> _maxPoint.y; |
+ num getMaxPointY() => _maxPoint.y; |
num getMinPointY() => _minPoint.y; |
Momentum get momentum => _momentum; |
@@ -487,10 +482,12 @@ class Scroller implements Draggable, MomentumDelegate { |
Coordinate contentStart = _contentStartOffset; |
num newX = contentStart.x + _touchHandler.getDragDeltaX(); |
num newY = contentStart.y + _touchHandler.getDragDeltaY(); |
- newY = _shouldScrollVertically() ? |
- _adjustValue(newY, _minPoint.y, _maxPoint.y) : 0; |
- newX = _shouldScrollHorizontally() ? |
- _adjustValue(newX, _minPoint.x, _maxPoint.x) : 0; |
+ newY = _shouldScrollVertically() |
+ ? _adjustValue(newY, _minPoint.y, _maxPoint.y) |
+ : 0; |
+ newX = _shouldScrollHorizontally() |
+ ? _adjustValue(newX, _minPoint.x, _maxPoint.x) |
+ : 0; |
if (!_activeGesture) { |
_activeGesture = true; |
_dragInProgress = true; |
@@ -515,8 +512,7 @@ class Scroller implements Draggable, MomentumDelegate { |
return !!(shouldVertical || shouldHorizontal && !verticalish); |
} |
- void onTouchEnd() { |
- } |
+ void onTouchEnd() {} |
/** |
* Prepare the scrollable area for possible movement. |
@@ -570,15 +566,14 @@ class Scroller implements Draggable, MomentumDelegate { |
_contentSize = new Size(_element.scrollWidth, _element.scrollHeight); |
} |
- _scrollSize = new Size(_frame.offset.width, |
- _frame.offset.height); |
+ _scrollSize = new Size(_frame.offset.width, _frame.offset.height); |
Size adjusted = _getAdjustedContentSize(); |
_maxPoint = new Coordinate(-_maxOffset.x, -_maxOffset.y); |
_minPoint = new Coordinate( |
Math.min( |
_scrollSize.width - adjusted.width + _minOffset.x, _maxPoint.x), |
- Math.min( |
- _scrollSize.height - adjusted.height + _minOffset.y, _maxPoint.y)); |
+ Math.min(_scrollSize.height - adjusted.height + _minOffset.y, |
+ _maxPoint.y)); |
callback(); |
}); |
} |
@@ -616,7 +611,7 @@ class Scroller implements Draggable, MomentumDelegate { |
_setContentOffset(_contentOffset.x, y); |
} |
- /** |
+ /** |
* Whether the scrollable area should scroll horizontally. Only |
* returns true if the client has enabled horizontal scrolling, and the |
* content is wider than the frame. |
@@ -642,10 +637,8 @@ class Scroller implements Draggable, MomentumDelegate { |
* the frame, snap it back in to place. |
*/ |
void _snapContentOffsetToBounds() { |
- num clampX = |
- GoogleMath.clamp(_minPoint.x, _contentOffset.x, _maxPoint.x); |
- num clampY = |
- GoogleMath.clamp(_minPoint.y, _contentOffset.y, _maxPoint.y); |
+ num clampX = GoogleMath.clamp(_minPoint.x, _contentOffset.x, _maxPoint.x); |
+ num clampY = GoogleMath.clamp(_minPoint.y, _contentOffset.y, _maxPoint.y); |
if (_contentOffset.x != clampX || _contentOffset.y != clampY) { |
_setContentOffset(clampX, clampY); |
} |
@@ -656,7 +649,7 @@ class Scroller implements Draggable, MomentumDelegate { |
* Returns true if deceleration has been initiated. |
*/ |
bool _startDeceleration(Coordinate velocity, |
- [num decelerationFactor = null]) { |
+ [num decelerationFactor = null]) { |
if (!_shouldScrollHorizontally()) { |
velocity.x = 0; |
} |
@@ -665,8 +658,8 @@ class Scroller implements Draggable, MomentumDelegate { |
} |
assert(_minPoint != null); // Min point is not set |
assert(_maxPoint != null); // Max point is not set |
- return _momentum.start(velocity, _minPoint, _maxPoint, _contentOffset, |
- decelerationFactor); |
+ return _momentum.start( |
+ velocity, _minPoint, _maxPoint, _contentOffset, decelerationFactor); |
} |
Coordinate stop() { |
@@ -682,9 +675,13 @@ class Scroller implements Draggable, MomentumDelegate { |
} |
static Function _getOffsetFunction(int scrollTechnique) { |
- return scrollTechnique == ScrollerScrollTechnique.TRANSFORM_3D ? |
- (el, x, y) { FxUtil.setTranslate(el, x, y, 0); } : |
- (el, x, y) { FxUtil.setLeftAndTop(el, x, y); }; |
+ return scrollTechnique == ScrollerScrollTechnique.TRANSFORM_3D |
+ ? (el, x, y) { |
+ FxUtil.setTranslate(el, x, y, 0); |
+ } |
+ : (el, x, y) { |
+ FxUtil.setLeftAndTop(el, x, y); |
+ }; |
} |
} |