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 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(); } } 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; } }