// 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 'arena.dart';
import 'constants.dart';
import 'events.dart';
import 'recognizer.dart';

typedef void GestureShowPressCallback();

class ShowPressGestureRecognizer extends PrimaryPointerGestureRecognizer {
  ShowPressGestureRecognizer({ PointerRouter router, this.onShowPress })
    : super(router: router, deadline: kTapTimeout);

  GestureShowPressCallback onShowPress;

  void didExceedDeadline() {
    // Show press isn't an exclusive gesture. We can recognize a show press
    // as well as another gesture, like a long press.
    resolve(GestureDisposition.rejected);
    onShowPress();
  }

  void handlePrimaryPointer(PointerInputEvent event) {
    if (event.type == 'pointerup')
      resolve(GestureDisposition.rejected);
  }
}