// 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();

}
