package NET.worlds.scape; import NET.worlds.console.Console; import java.awt.Color; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class Whiteboard extends Attribute { String _line = "default text"; private static Object classCookie = new Object(); public Whiteboard(int attrID) { super(attrID); } public Whiteboard() { } @Override protected void noteAddingTo(SuperRoot owner) { this.nada((Surface)((Sharer)owner).getOwner()); this.setOwnerText(); } public void set(String s) { this._line = s; this.setOwnerText(); this.noteChange(); } protected void nada(Surface s) { } private void setOwnerText() { Sharer sh = (Sharer)this.getOwner(); if (sh != null) { Surface surf = (Surface)sh.getOwner(); surf.setMaterial(new Material(new StringTexture(this._line, Console.message("MaterialFont"), 20, Color.black, Color.white))); } } public String get() { return this._line; } @Override public void generateNetData(DataOutputStream s) throws IOException { s.writeUTF(this._line); } @Override public void setFromNetData(DataInputStream ds, int len) throws IOException { this.set(ds.readUTF()); } @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, "Whiteboard text")); } else if (mode == 1) { ret = this._line; } else if (mode == 2) { this.set((String)value); } break; default: ret = super.properties(index, offset + 1, mode, value); } return ret; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(0, classCookie); super.saveState(s); s.saveString(this._line); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 0: super.restoreState(r); this._line = r.restoreString(); this.setOwnerText(); return; default: throw new TooNewException(); } } }