summaryrefslogtreecommitdiff
path: root/NET/worlds/console/SavedAvPart.java
diff options
context:
space:
mode:
Diffstat (limited to 'NET/worlds/console/SavedAvPart.java')
-rw-r--r--NET/worlds/console/SavedAvPart.java155
1 files changed, 155 insertions, 0 deletions
diff --git a/NET/worlds/console/SavedAvPart.java b/NET/worlds/console/SavedAvPart.java
new file mode 100644
index 0000000..73d2b6a
--- /dev/null
+++ b/NET/worlds/console/SavedAvPart.java
@@ -0,0 +1,155 @@
+package NET.worlds.console;
+
+import NET.worlds.network.URL;
+import NET.worlds.scape.FrameEvent;
+import NET.worlds.scape.Restorer;
+import NET.worlds.scape.Saver;
+import java.awt.CheckboxMenuItem;
+import java.awt.Container;
+import java.awt.Event;
+import java.awt.Font;
+import java.awt.Menu;
+import java.awt.MenuItem;
+import java.util.Vector;
+
+public class SavedAvPart extends Menu implements FramePart, DialogReceiver {
+ private static final long serialVersionUID = -3931139364330871273L;
+ private static final int firstUserItem = 3;
+ private static final String avsFileName = "Gamma.avatars";
+ private static URL savedAvsURL = URL.make("home:Gamma.avatars");
+ private static Vector<Object> savedAvatars;
+ private static Font font = new Font(Console.message("MenuFont"), 0, 12);
+ private Menu menu;
+ private MenuItem saveItem = new MenuItem(Console.message("Save-Avatar"));
+ private MenuItem deleteItem = new MenuItem(Console.message("Delete-Avatar"));
+ private DefaultConsole console;
+
+ public SavedAvPart() {
+ super(Console.message("Saved-Avatars"));
+ if (savedAvatars == null) {
+ loadAvatars();
+ }
+ }
+
+ private static void loadAvatars() {
+ try {
+ Restorer r = new Restorer(savedAvsURL);
+ savedAvatars = r.restoreVector();
+ r.done();
+ } catch (Exception var1) {
+ savedAvatars = new Vector<Object>();
+ }
+ }
+
+ private static void saveAvatars() {
+ try {
+ Saver s = new Saver(savedAvsURL);
+ s.saveVector(savedAvatars);
+ s.done();
+ } catch (Exception var1) {
+ }
+ }
+
+ static int getAvatarCount() {
+ return savedAvatars.size();
+ }
+
+ private static SavedAvMenuItem getAvatar(int index) {
+ return (SavedAvMenuItem)savedAvatars.elementAt(index);
+ }
+
+ static String getAvatarName(int index) {
+ return getAvatar(index).getLabel();
+ }
+
+ static String getAvatarAvatar(int index) {
+ return getAvatar(index).getAvatar();
+ }
+
+ private SavedAvMenuItem addAvatar(String name, String avatar) {
+ SavedAvMenuItem item = new SavedAvMenuItem(name, avatar);
+ item.setFont(font);
+ this.add(item);
+ savedAvatars.addElement(item);
+ saveAvatars();
+ return item;
+ }
+
+ void removeAvatar(int index) {
+ Object item = savedAvatars.elementAt(index);
+ savedAvatars.removeElementAt(index);
+ this.remove(index + 3);
+ saveAvatars();
+ this.console.deletedSavedAvatar((CheckboxMenuItem)item);
+ }
+
+ @Override
+ public void dialogDone(Object who, boolean confirmed) {
+ if (confirmed) {
+ SavedAvAddDialog adder = (SavedAvAddDialog)who;
+ URL avName = this.console.getDefaultAvatarURL();
+ if (avName != null) {
+ this.console.setCurrentAvatarItem(this.addAvatar(adder.getName(), avName.getAbsolute()));
+ }
+ }
+ }
+
+ @Override
+ public void activate(Console c, Container f, Console prev) {
+ this.console = (DefaultConsole)c;
+ this.saveItem.setFont(font);
+ this.deleteItem.setFont(font);
+ this.add(this.saveItem);
+ this.add(this.deleteItem);
+ this.addSeparator();
+
+ for (int i = 0; i < savedAvatars.size(); i++) {
+ MenuItem item = (MenuItem)savedAvatars.elementAt(i);
+ item.setFont(font);
+ this.add(item);
+ }
+ }
+
+ @Override
+ public void deactivate() {
+ this.removeAll();
+ }
+
+ @Override
+ public boolean action(Event event, Object what) {
+ Object target = event.target;
+ if (target == this.saveItem) {
+ new SavedAvAddDialog(Console.getFrame(), this);
+ } else if (target == this.deleteItem) {
+ new SavedAvDeleteDialog(this);
+ } else {
+ if (!(target instanceof SavedAvMenuItem)) {
+ return false;
+ }
+
+ SavedAvMenuItem item = (SavedAvMenuItem)target;
+ this.console.setNextAvatar(URL.make(item.getAvatar()), item);
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean handle(FrameEvent f) {
+ return true;
+ }
+
+ public CheckboxMenuItem findMenuItem(URL url) {
+ String name = url.getAbsolute();
+ int count = getAvatarCount();
+
+ for (int i = 0; i < count; i++) {
+ SavedAvMenuItem item = getAvatar(i);
+ if (item.getAvatar().equals(name)) {
+ return item;
+ }
+ }
+
+ return null;
+ }
+}