// 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 'package:sky/widgets/basic.dart';

abstract class ButtonBase extends StatefulComponent {

  ButtonBase({ Key key, this.highlight: false }) : super(key: key);

  bool highlight;

  void syncFields(ButtonBase source) {
    highlight = source.highlight;
  }

  EventDisposition _handlePointerDown(_) {
    setState(() {
      highlight = true;
    });
    return EventDisposition.processed;
  }
  EventDisposition _handlePointerUp(_) {
    setState(() {
      highlight = false;
    });
    return EventDisposition.processed;
  }
  EventDisposition _handlePointerCancel(_) {
    setState(() {
      highlight = false;
    });
    return EventDisposition.processed;
  }

  Widget build() {
    return new Listener(
      child: buildContent(),
      onPointerDown: _handlePointerDown,
      onPointerUp: _handlePointerUp,
      onPointerCancel: _handlePointerCancel
    );
  }

  Widget buildContent();

}