package NET.worlds.console; import NET.worlds.network.NetUpdate; import NET.worlds.scape.TeleportAction; import java.awt.Color; import java.awt.Dimension; import java.awt.Event; import java.awt.Font; import java.awt.Graphics; import java.awt.MenuItem; import java.awt.PopupMenu; class WorldButton extends TextImageButtons { private static final long serialVersionUID = 8349532719484982330L; int buttonX; int buttonY; String pkg; int privacyLevel; boolean isLoaded; String readableName; DefaultConsole console; static String currentPackageName = ""; private static Font wfont = new Font(Console.message("UniverseFont"), 0, 10); private static final int[] xText = new int[1]; PopupMenu lastPackageMenu; public WorldButton( boolean isLoaded, int buttonX, int buttonY, int buttonWidth, int buttonHeight, String[] texts, String pkg, int privacy, DefaultConsole console, ImageButtonsCallback handler ) { super(null, buttonWidth, intToInts(buttonHeight), xText, texts, handler, wfont); this.readableName = texts[0]; this.buttonX = buttonX; this.buttonY = buttonY; this.pkg = pkg; this.isLoaded = isLoaded; this.privacyLevel = privacy; this.console = console; this.setSize(buttonWidth, buttonHeight); this.setWidth(buttonWidth); this.setHeight(buttonHeight); } public static Dimension measure(String text) { return TextImageButtons.measure(text, wfont); } public void doAction() { if (this.console == null || !this.showPackageMenu()) { NetUpdate.loadWorld(this.pkg, true); } } public boolean showPackageMenu() { if (this.lastPackageMenu != null) { this.remove(this.lastPackageMenu); this.lastPackageMenu = null; } this.lastPackageMenu = WorldsMarkPart.getPackageMenu(this.pkg); if (this.lastPackageMenu != null && this.lastPackageMenu.getItemCount() != 0) { MenuItem first = this.lastPackageMenu.getItem(0); if (first instanceof BookmarkMenuItem) { BookmarkMenuItem title = new BookmarkMenuItem(this.readableName + " World:", ((BookmarkMenuItem)first).getTarget()); this.lastPackageMenu.insert(title, 0); this.lastPackageMenu.insertSeparator(1); } this.add(this.lastPackageMenu); try { this.lastPackageMenu.show(this, -15, -7); } catch (RuntimeException var3) { System.out.println("Warning - could not show teleport location menu."); } return true; } else { return false; } } @Override public void update(Graphics g) { this.paint(g); } @Override public boolean action(Event event, Object what) { Object target = event.target; if (target instanceof BookmarkMenuItem) { TeleportAction.teleport(((BookmarkMenuItem)target).getTarget(), null); this.console.toggleUniverseMode(); return true; } else { return super.action(event, what); } } @Override protected Graphics drawButton(Graphics g, int button, int state) { Color c; if (state == 1) { if (this.isLoaded) { c = currentPackageName.equalsIgnoreCase(this.pkg) ? new Color(192, 255, 192) : Color.white; } else { c = Color.red; } } else if (state == 2) { c = new Color(255, 192, 192); } else { c = Color.green; } return super.drawButton(g, button, state, c); } }