From c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Thu, 12 Feb 2026 22:33:32 -0800 Subject: Initial commit --- NET/worlds/scape/Library.java | 191 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 NET/worlds/scape/Library.java (limited to 'NET/worlds/scape/Library.java') diff --git a/NET/worlds/scape/Library.java b/NET/worlds/scape/Library.java new file mode 100644 index 0000000..a531d71 --- /dev/null +++ b/NET/worlds/scape/Library.java @@ -0,0 +1,191 @@ +package NET.worlds.scape; + +import NET.worlds.network.URL; +import java.io.File; +import java.io.IOException; +import java.util.Vector; + +public class Library extends SuperRoot { + private Object owningDialog; + private Vector contents = new Vector(); + private LibEventHandler handler; + protected String propertyName; + private static Object classCookie = new Object(); + + public static Library load(URL url) { + return (Library)SuperRoot.readFile(url); + } + + public Library(URL url, String name) { + this.setSourceURL(url); + this.setName(name); + } + + public Library() { + } + + public void save() { + try { + this.saveFile(this.getSourceURL()); + } catch (IOException var2) { + } + } + + public void delete() { + new File(this.getSourceURL().unalias()).delete(); + } + + public void add(LibraryEntry ent) { + assert ent.getOwner() == null; + + this.contents.addElement(ent); + super.add(ent); + this.changed(); + } + + public void delete(LibraryEntry ent) { + boolean found = this.contents.removeElement(ent); + + assert found; + + assert ent.getOwner() == this; + + ent.detach(); + this.changed(); + } + + public void move(LibraryEntry src, LibraryEntry dst) { + int oldPos = this.contents.indexOf(src); + + assert oldPos != -1; + + int newPos = this.contents.indexOf(dst); + + assert newPos != -1; + + this.contents.removeElement(src); + this.contents.insertElementAt(src, newPos); + this.changed(); + } + + void entryChanged(LibraryEntry which) { + this.changed(); + } + + private void changed() { + if (this.handler != null) { + this.handler.libraryChanged(this); + } + } + + public Object getOwningDialog() { + return this.owningDialog; + } + + public Vector getContents() { + return (Vector)this.contents.clone(); + } + + public String getPropertyName() { + return this.propertyName; + } + + public LibraryEntry getEntry(int index) { + return (LibraryEntry)this.contents.elementAt(index); + } + + public void setOwningDialog(Object o) { + this.owningDialog = o; + } + + @Override + public void setName(String s) { + super.setName(s); + this.changed(); + } + + public void setPropertyName(String s) { + this.propertyName = s; + this.changed(); + } + + public void setEventHandler(LibEventHandler handler) { + this.handler = handler; + } + + @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 = PropAdder.make(new VectorProperty(this, index, "Contents")); + } else if (mode == 1) { + ret = this.getContents(); + } else if (mode == 4) { + this.delete((LibraryEntry)value); + } else if (mode == 3) { + this.add((LibraryEntry)value); + } else if (mode == 5 && value instanceof LibraryEntry) { + ret = value; + } + break; + case 1: + if (mode == 0) { + ret = StringPropertyEditor.make(new Property(this, index, "Property Name").allowSetNull()); + } else if (mode == 1) { + ret = this.getPropertyName(); + } else if (mode == 2) { + this.setPropertyName((String)value); + } + break; + default: + ret = super.properties(index, offset + 2, mode, value); + } + + return ret; + } + + @Override + public Object propertyParent() { + return this.getOwningDialog(); + } + + @Override + public void saveState(Saver s) throws IOException { + s.saveVersion(2, classCookie); + super.saveState(s); + s.saveVector(this.contents); + s.saveString(this.propertyName); + } + + @Override + public void restoreState(Restorer r) throws IOException, TooNewException { + Vector newContents = null; + switch (r.restoreVersion(classCookie)) { + case 0: + this.setName(r.restoreString()); + r.restoreString(); + r.restoreString(); + newContents = r.restoreVector(); + break; + case 1: + super.restoreState(r); + r.restoreString(); + r.restoreString(); + newContents = r.restoreVector(); + break; + case 2: + super.restoreState(r); + newContents = r.restoreVector(); + this.propertyName = r.restoreString(); + break; + default: + throw new TooNewException(); + } + + for (int i = 0; i < newContents.size(); i++) { + this.add((LibraryEntry)newContents.elementAt(i)); + } + } +} -- cgit v1.2.3