package editor.menu;
import java.awt.Graphics;
import applet.resource.Sprite1D;
/** */
public class Button {
/** */
public static enum State {
/** */
NORMAL(0), HOVER(1), PRESSED(2);
/** */
private int frame;
/**
* @param newFrame
* - the frame corresponding to this state.
*/
private State(final int newFrame) {
frame = newFrame;
}
/** @return the frame corresponding to this state. */
public final int getFrame() {
return frame;
}
}
/** */
public static final int WIDTH = 96;
/** */
public static final int HEIGHT = 32;
/** */
private static final int ITEM_X = 4;
/** */
private static final int ITEM_Y = 4;
/** */
private static final Sprite1D SPRITE = new Sprite1D("editor/button-2.png",
3);
/** */
private int index;
/** */
private String name;
/** */
private Item item;
/** */
private JumpList jumpList;
/** */
private State state;
/**
* @param newIndex
* - the position of the button.
* @param newName
* - the name of this button.
*/
public Button(final int newIndex, final String newName) {
index = newIndex;
name = newName;
item = null;
jumpList = null;
state = State.NORMAL;
}
/** @return the position of this button. */
public final int getIndex() {
return index;
}
/**
* @param newState
* - the state to go to.
*/
public final void setState(final State newState) {
state = newState;
}
/**
* @param newItem
* - the item attached to this button.
*/
public final void setItem(final Item newItem) {
item = newItem;
}
/**
* @param newJumpList
* - the jump list attached to this button.
*/
public final void setJumpList(final JumpList newJumpList) {
jumpList = newJumpList;
}
/** @return the item attached to this button. */
public final Item getItem() {
return item;
}
/** @return the name of this button. */
public final String getName() {
return name;
}
/** @return the jump list attached to this button. */
public final JumpList getJumpList() {
return jumpList;
}
/**
* @param g
* - the graphics context to draw to.
*/
public final void draw(final Graphics g) {
final int x = index * WIDTH;
SPRITE.draw(g, state.getFrame(), x, Menu.Y);
if (item != null) {
item.draw(g, x + ITEM_X, Menu.Y + ITEM_Y);
}
}
/** @return the state. */
public final State getState() {
return state;
}
}
|