package com.algobase.widgets;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

public class AutoRepeatButton extends Button {

  private long initialDelay = 500;
  private long repeatInterval = 120;
  private boolean click_enabled = true;

  @Override 
  public boolean performClick() { 
    return (click_enabled == false) ? true : super.performClick();
  }

  private Runnable repeatClickRunnable = new Runnable() {
    @Override
    public void run() {
      performClick();
      postDelayed(repeatClickRunnable, repeatInterval);
    }
  };

  private void constructor() {
    this.setOnTouchListener(new OnTouchListener() {
      @Override
      public boolean onTouch(View v, MotionEvent event) {
           int action = event.getAction(); 
           if(action == MotionEvent.ACTION_DOWN) 
           { removeCallbacks(repeatClickRunnable);
             click_enabled = true;
             performClick();
             postDelayed(repeatClickRunnable,initialDelay);
            }
           else 
             if(action == MotionEvent.ACTION_UP) {
               removeCallbacks(repeatClickRunnable);
               click_enabled = false;
             }

           return false;
      }
    });
  }

    public AutoRepeatButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        constructor();
    }


    public AutoRepeatButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        constructor();
    }

  public AutoRepeatButton(Context context) {
    super(context);
    constructor();
  }
}
