package NET.worlds.scape; import java.io.IOException; public class StdoutAction extends Action { String txt = null; boolean dumpArg = false; private static Object classCookie = new Object(); public StdoutAction() { } public StdoutAction(String text) { this.txt = text; } @Override public Persister trigger(Event arg, Persister seqID) { if (this.txt != null) { System.out.println(this.txt); } else { System.out.println("StdoutAction " + this.getName() + ", no text!"); } if (this.dumpArg) { if (arg == null) { System.out.println(""); } else { System.out.println("<" + arg + ">"); } } System.out.flush(); 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) { ret = StringPropertyEditor.make(new Property(this, index, "Text Out")); } else if (mode == 1) { ret = this.txt; } else if (mode == 2) { this.txt = (String)value; } break; case 1: if (mode == 0) { ret = BooleanPropertyEditor.make(new Property(this, index, "Dump Event"), "Don't print event", "Print event"); } else if (mode == 1) { ret = new Boolean(this.dumpArg); } else if (mode == 2) { this.dumpArg = (Boolean)value; } break; default: ret = super.properties(index, offset + 2, mode, value); } return ret; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(1, classCookie); super.saveState(s); s.saveString(this.txt); s.saveBoolean(this.dumpArg); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 0: super.restoreState(r); this.txt = r.restoreString(); r.setOldFlag(); break; case 1: super.restoreState(r); this.txt = r.restoreString(); this.dumpArg = r.restoreBoolean(); break; default: throw new TooNewException(); } } @Override public String toString() { return super.toString() + "[" + this.txt + "]"; } }