package com.charlesmadere.android.classygames.views; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Build; import android.widget.ImageButton; import com.charlesmadere.android.classygames.models.games.Coordinate; /** * A View that occupies a single position on the BoardView. In Checkers or * Chess, 64 of things make up the entire BoardView. */ public final class PositionView extends ImageButton { public final static float PADDING_DEFAULT = 0; private Coordinate coordinate; private Drawable background; private Drawable backgroundSelected; public PositionView(final Context context, final byte x, final byte y, final float padding, final Drawable brightBackground, final Drawable darkBackground, final Drawable brightBackgroundSelected, final Drawable darkBackgroundSelected) { super(context); coordinate = new Coordinate(x, y); setBackground(brightBackground, darkBackground, brightBackgroundSelected, darkBackgroundSelected); final int paddingInt = (int) padding; setPadding(paddingInt, paddingInt, paddingInt, paddingInt); setScaleType(ScaleType.CENTER_INSIDE); } public Coordinate getCoordinate() { return coordinate; } @SuppressWarnings("deprecation") private void setBackground(final Drawable brightBackground, final Drawable darkBackground, final Drawable brightBackgroundSelected, final Drawable darkBackgroundSelected) { if (coordinate.areBothEitherEvenOrOdd()) { background = darkBackground; backgroundSelected = darkBackgroundSelected; } else { background = brightBackground; backgroundSelected = brightBackgroundSelected; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { setBackground(background); } else { setBackgroundDrawable(background); } } @SuppressWarnings("deprecation") public void select() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { setBackground(backgroundSelected); } else { setBackgroundDrawable(backgroundSelected); } } @SuppressWarnings("deprecation") public void unselect() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { setBackground(background); } else { setBackgroundDrawable(background); } } }