package joshie.progression.gui.fields;
import joshie.progression.api.criteria.IRuleProvider;
import joshie.progression.api.gui.IDrawHelper;
import joshie.progression.api.special.IEnum;
import joshie.progression.api.special.IInit;
import java.lang.reflect.Field;
public class EnumField extends AbstractField {
public Field field;
public IEnum object;
public EnumField(String displayName, String fieldName, IEnum object) {
super(displayName);
this.object = object;
try {
field = object.getClass().getField(fieldName);
} catch (Exception e) {}
}
public EnumField(String name, IEnum object) {
this(name, name, object);
}
public Enum getName() throws IllegalArgumentException, IllegalAccessException {
return (Enum) field.get(object);
}
public void setField(Object next) throws IllegalArgumentException, IllegalAccessException {
field.set(object, next);
//Init the object after we've set it
if (object instanceof IInit) {
((IInit) object).init(true);
}
}
@Override
public String getFieldName() {
return field.getName();
}
@Override
public boolean click() {
try {
setField(object.next(getFieldName()));
return true;
} catch (Exception e) { return false;}
}
@Override
public String getField() {
try {
return getName().toString().toLowerCase();
} catch (Exception e) {
return "";
}
}
@Override
public void draw(IRuleProvider provider, IDrawHelper helper, int renderX, int renderY, int color, int yPos, int mouseX, int mouseY) {
try {
String value = getName().toString().toLowerCase();
helper.drawSplitText(renderX, renderY, name + ": " + value, 4, yPos, 150, color, 0.75F);
} catch (Exception e) {}
}
@Override
public void setObject(Object object) {
this.object = (IEnum) object;
}
}