package com.gh4a.widget; import android.content.Context; import android.support.design.widget.FloatingActionButton; import android.util.AttributeSet; import com.gh4a.R; import com.gh4a.utils.ApiHelpers; public class IssueStateTrackingFloatingActionButton extends FloatingActionButton { private String mState; private boolean mMerged; private static final int[] STATE_CLOSED = { R.attr.state_closed }; private static final int[] STATE_MERGED = { R.attr.state_merged }; public IssueStateTrackingFloatingActionButton(Context context) { super(context); } public IssueStateTrackingFloatingActionButton(Context context, AttributeSet attrs) { super(context, attrs); } public IssueStateTrackingFloatingActionButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public void setState(String state) { mState = state; refreshDrawableState(); } public void setMerged(boolean merged) { mMerged = merged; refreshDrawableState(); } @Override public int[] onCreateDrawableState(int extraSpace) { final int[] drawableState = super.onCreateDrawableState(extraSpace + 2); if (ApiHelpers.IssueState.CLOSED.equals(mState)) { mergeDrawableStates(drawableState, STATE_CLOSED); } if (mMerged) { mergeDrawableStates(drawableState, STATE_MERGED); } return drawableState; } }