| Index: sky/sdk/lib/framework/widgets/scrollable.dart
|
| diff --git a/sky/sdk/lib/framework/widgets/scrollable.dart b/sky/sdk/lib/framework/widgets/scrollable.dart
|
| deleted file mode 100644
|
| index 129abf9c7cb37a1978e5366a0a6f2c6d0aeb1b0b..0000000000000000000000000000000000000000
|
| --- a/sky/sdk/lib/framework/widgets/scrollable.dart
|
| +++ /dev/null
|
| @@ -1,158 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -import 'dart:math' as math;
|
| -import 'dart:sky' as sky;
|
| -
|
| -import '../animation/generators.dart';
|
| -import '../animation/mechanics.dart';
|
| -import '../animation/scroll_behavior.dart';
|
| -import '../theme2/edges.dart';
|
| -import '../theme2/view_configuration.dart' as config;
|
| -import 'material.dart';
|
| -import 'basic.dart';
|
| -
|
| -const double _kMillisecondsPerSecond = 1000.0;
|
| -
|
| -double _velocityForFlingGesture(sky.GestureEvent event) {
|
| - return math.max(-config.kMaxFlingVelocity, math.min(config.kMaxFlingVelocity,
|
| - -event.velocityY)) / _kMillisecondsPerSecond;
|
| -}
|
| -
|
| -abstract class ScrollClient {
|
| - bool ancestorScrolled(Scrollable ancestor);
|
| -}
|
| -
|
| -abstract class Scrollable extends Component {
|
| -
|
| - Scrollable({Object key}) : super(key: key, stateful: true);
|
| -
|
| - void syncFields(Scrollable source) { }
|
| -
|
| - double _scrollOffset = 0.0;
|
| - double get scrollOffset => _scrollOffset;
|
| -
|
| - ScrollBehavior _scrollBehavior;
|
| - ScrollBehavior createScrollBehavior();
|
| - ScrollBehavior get scrollBehavior {
|
| - if (_scrollBehavior == null)
|
| - _scrollBehavior = createScrollBehavior();
|
| - return _scrollBehavior;
|
| - }
|
| -
|
| - Simulation _simulation;
|
| -
|
| - UINode buildContent();
|
| -
|
| - UINode build() {
|
| - return new EventListenerNode(
|
| - new Material(
|
| - child: buildContent(),
|
| - edge: MaterialEdge.canvas
|
| - ),
|
| - onPointerDown: _handlePointerDown,
|
| - onPointerUp: _handlePointerUpOrCancel,
|
| - onPointerCancel: _handlePointerUpOrCancel,
|
| - onGestureFlingStart: _handleFlingStart,
|
| - onGestureFlingCancel: _handleFlingCancel,
|
| - onGestureScrollUpdate: _handleScrollUpdate,
|
| - onWheel: _handleWheel
|
| - );
|
| - }
|
| -
|
| - List<ScrollClient> _registeredScrollClients;
|
| -
|
| - void registerScrollClient(ScrollClient notifiee) {
|
| - if (_registeredScrollClients == null)
|
| - _registeredScrollClients = new List<ScrollClient>();
|
| - setState(() {
|
| - _registeredScrollClients.add(notifiee);
|
| - });
|
| - }
|
| -
|
| - void unregisterScrollClient(ScrollClient notifiee) {
|
| - if (_registeredScrollClients == null)
|
| - return;
|
| - setState(() {
|
| - _registeredScrollClients.remove(notifiee);
|
| - });
|
| - }
|
| -
|
| - bool scrollTo(double newScrollOffset) {
|
| - if (newScrollOffset == _scrollOffset)
|
| - return false;
|
| - setState(() {
|
| - _scrollOffset = newScrollOffset;
|
| - });
|
| - if (_registeredScrollClients != null) {
|
| - var newList = null;
|
| - _registeredScrollClients.forEach((target) {
|
| - if (target.ancestorScrolled(this)) {
|
| - if (newList == null)
|
| - newList = new List<ScrollClient>();
|
| - newList.add(target);
|
| - }
|
| - });
|
| - setState(() {
|
| - _registeredScrollClients = newList;
|
| - });
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - bool scrollBy(double scrollDelta) {
|
| - var newScrollOffset = scrollBehavior.applyCurve(_scrollOffset, scrollDelta);
|
| - return scrollTo(newScrollOffset);
|
| - }
|
| -
|
| - void didUnmount() {
|
| - _stopSimulation();
|
| - super.didUnmount();
|
| - }
|
| -
|
| - void _stopSimulation() {
|
| - if (_simulation == null)
|
| - return;
|
| - _simulation.cancel();
|
| - _simulation = null;
|
| - }
|
| -
|
| - void _startSimulation(Particle particle) {
|
| - _stopSimulation();
|
| - _simulation = scrollBehavior.release(particle);
|
| - if (_simulation == null)
|
| - return;
|
| - _simulation.onTick.listen((_) => scrollTo(particle.position));
|
| - }
|
| -
|
| - Particle _createParticle([double velocity = 0.0]) {
|
| - return new Particle(position: _scrollOffset, velocity: velocity);
|
| - }
|
| -
|
| - void _handlePointerDown(_) {
|
| - _stopSimulation();
|
| - }
|
| -
|
| - void _handlePointerUpOrCancel(_) {
|
| - if (_simulation == null)
|
| - _startSimulation(_createParticle());
|
| - }
|
| -
|
| - void _handleScrollUpdate(sky.GestureEvent event) {
|
| - scrollBy(-event.dy);
|
| - }
|
| -
|
| - void _handleFlingStart(sky.GestureEvent event) {
|
| - _startSimulation(_createParticle(_velocityForFlingGesture(event)));
|
| - }
|
| -
|
| - void _handleFlingCancel(sky.GestureEvent event) {
|
| - _startSimulation(_createParticle());
|
| - }
|
| -
|
| - void _handleWheel(sky.WheelEvent event) {
|
| - scrollBy(-event.offsetY);
|
| - }
|
| -
|
| -}
|
|
|