package org.ultramine.gui;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class ElementButtonFixable extends ElementButton implements ILinkable
{
private boolean pressed = false;
private ILinkable previous;
private ILinkable next;
public ElementButtonFixable(int id, int x, int y, int width, int height, String str)
{
super(id, x, y, width, height, str);
}
public boolean isPressed()
{
return pressed;
}
public void setPressed()
{
pressed = true;
}
@Override
protected boolean canPress()
{
return !pressed;
}
@Override
protected void buttonActivate()
{
pressed = true;
if(previous != null) previous.otherElementAction(this, PREV);
if(next != null) next.otherElementAction(this, NEXT);
}
@Override
protected int getHoverState(boolean par1)
{
if (!enabled || pressed)
{
return 0;
}
else if (par1)
{
return 2;
}
return 1;
}
// ILinkable
@Override
public boolean linkTo(ILinkable to)
{
if(!(to instanceof ElementButtonFixable))
return false;
if(next != null)
{
next.linkTo(to);
}
else
{
next = to;
to.setPrevious(this);
}
return true;
}
@Override
public void setPrevious(ILinkable to)
{
previous = to;
}
@Override
public ILinkable getPrevious()
{
return previous;
}
@Override
public ILinkable getNext()
{
return next;
}
@Override
public void otherElementAction(ILinkable element, int side)
{
pressed = false;
if(side == PREV && previous != null) previous.otherElementAction(this, PREV);
if(side == NEXT && next != null) next.otherElementAction(this, NEXT);
}
}