package NET.worlds.scape; import NET.worlds.core.IniFile; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class BizCard extends Attribute { String[] _line = new String[]{"", "", "", "", ""}; private static Object classCookie = new Object(); public BizCard(int attrID) { super(attrID); this.loadIni(); } public BizCard() { } private void loadIni() { for (int i = 0; i < 5; i++) { this._line[i] = IniFile.gamma().getIniString("BizCard" + i, this._line[i]); } } public String[] get() { return this._line; } public void set(String[] lines) { int total = 0; for (int i = 0; i < this._line.length; i++) { int l = lines[i].length(); total += l; if (total < 200 && lines[i] != null) { this._line[i] = lines[i]; } else { this._line[i] = ""; } } this.noteChange(); } @Override protected void noteAddingTo(SuperRoot owner) { this.set(this._line); } @Override public void generateNetData(DataOutputStream s) throws IOException { s.writeInt(this._line.length); for (int i = 0; i < this._line.length; i++) { s.writeUTF(this._line[i]); } } @Override public void setFromNetData(DataInputStream ds, int len) throws IOException { int nLines = ds.readInt(); String[] serverLines = new String[nLines]; for (int i = 0; i < nLines; i++) { serverLines[i] = ds.readUTF(); } this.set(serverLines); } @Override public Object properties(int index, int offset, int mode, Object value) throws NoSuchPropertyException { Object ret = null; switch (index - offset) { case 0: case 1: case 2: case 3: case 4: if (mode == 0) { ret = StringPropertyEditor.make(new Property(this, index, "Line " + (index - offset))); } else if (mode == 1) { ret = this._line[index - offset]; } else if (mode == 2) { this._line[index - offset] = (String)value; this.set(this._line); } break; default: ret = super.properties(index, offset + 5, mode, value); } return ret; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(0, classCookie); super.saveState(s); s.saveInt(this._line.length); for (int i = 0; i < this._line.length; i++) { s.saveString(this._line[i]); } } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 0: super.restoreState(r); int nLines = r.restoreInt(); this._line = new String[nLines]; for (int i = 0; i < nLines; i++) { this._line[i] = r.restoreString(); } this.set(this._line); return; default: throw new TooNewException(); } } }