package NET.worlds.scape; import java.io.IOException; import java.util.Vector; public class AddObjectAction extends SetPropertyAction { private SuperRoot _value; private static Object classCookie = new Object(); @Override public Persister trigger(Event e, Persister seqID) { assert !this.useParam(); this.add((Object)this._value); return null; } @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) { VectorProperty vp = new VectorProperty(this, index, "Object to Add"); if (this._value != null) { vp.allowSetNull(); ret = vp; } } else if (mode == 1) { ret = new Vector(1); if (this._value != null) { ((Vector)ret).addElement(this._value); } } else if (mode == 4) { assert value == this._value; this._value = null; } else if (mode == 3) { assert this._value == null; this._value = (SuperRoot)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.saveMaybeNull(this._value); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 1: super.restoreState(r); this._value = (SuperRoot)r.restoreMaybeNull(); return; default: throw new TooNewException(); } } }