package NET.worlds.scape; import java.io.IOException; public class SwitchableBehavior extends SuperRoot { protected boolean enabled = true; private static Object classCookie = new Object(); public boolean getEnabled() { return this.enabled; } public SwitchableBehavior setEnabled(boolean s) { this.enabled = s; return this; } public SwitchableBehavior toggleEnabled() { this.setEnabled(!this.getEnabled()); return this; } @Override public Object properties(int index, int offset, int mode, Object value) throws NoSuchPropertyException { Object ret = null; switch (index - offset) { case 0: if (mode == 0) { ret = BooleanPropertyEditor.make(new Property(this, index, "Enabled"), "No", "Yes"); } else if (mode == 1) { ret = new Boolean(this.enabled); } else if (mode == 2) { this.enabled = (Boolean)value; } break; default: ret = super.properties(index, offset + 1, mode, value); } return ret; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(1, classCookie); super.saveState(s); s.saveBoolean(this.enabled); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 1: super.restoreState(r); case 0: this.enabled = r.restoreBoolean(); return; default: throw new TooNewException(); } } }