package NET.worlds.console; import NET.worlds.core.IniFile; import java.awt.Dimension; import java.awt.Point; import java.awt.Rectangle; import java.io.IOException; import java.util.Enumeration; import java.util.Stack; public class WebBrowser { private static Stack browsers = new Stack(); private static boolean disabled = IniFile.gamma().getIniInt("DISABLEIE", 0) != 0; private static boolean everWorked; private int nativeBrowserPointer; private InternetExplorer _activeX; private static boolean toolbarON = true; private static boolean windowFrameON = true; private static boolean _stayMinimized = false; private String browserTag = null; public static WebBrowser reuseOrMake(String url, String postData) throws IOException { return reuseOrMake(url, postData, defaultPlacement()); } public static void useToolbar() { toolbarON = true; } public static void dontUseToolbar() { toolbarON = false; } public static void useWindowFrame() { windowFrameON = true; } public static void dontUseWindowFrame() { windowFrameON = false; } public static void forceMinimized(boolean force) { _stayMinimized = force; } public static WebBrowser findTag(String tag) { Enumeration e = browsers.elements(); while (e.hasMoreElements()) { WebBrowser browser = e.nextElement(); if (tag != null) { if (tag.equals(browser.getTag())) { return browser; } } else if (browser.getTag() == null) { return browser; } } return null; } public static WebBrowser reuseOrMake(String url, String postData, Rectangle placement) throws IOException { Enumeration e = browsers.elements(); while (e.hasMoreElements()) { WebBrowser browser = e.nextElement(); if (browser.getTag() == null) { try { browser.browse(url, postData, null); return browser; } catch (IOException var6) { } } } return new WebBrowser(url, postData, placement); } private String getTag() { return this.browserTag; } public static WebBrowser reuseOrMake(String url, String postData, Rectangle placement, String tag) throws IOException { Enumeration e = browsers.elements(); while (e.hasMoreElements()) { WebBrowser browser = e.nextElement(); if (tag.equals(browser.getTag())) { try { browser.browse(url, postData, null); return browser; } catch (IOException var7) { } } } return new WebBrowser(url, postData, placement, tag); } public static Rectangle defaultPlacement() { Console c = Console.getActive(); return c instanceof DefaultConsole ? ((DefaultConsole)c).getBrowserPlacement() : new Rectangle(0, 0, 200, 200); } public static boolean isDisabled() { return disabled; } public static void setDisabled(boolean be) { IniFile.gamma().setIniInt("DISABLEIE", be ? 1 : 0); disabled = be; } public WebBrowser(String url, String postData) throws IOException { this(url, postData, defaultPlacement()); } public WebBrowser(String url, String postData, Rectangle placement) throws IOException { this(url, postData, placement, null); } public WebBrowser(String url, String postData, Rectangle placement, String tag) throws IOException { if (!disabled) { this._activeX = new InternetExplorer(this); try { this.nativeBrowserPointer = openBrowser(); } catch (IOException var9) { try { this._activeX.Release(); } catch (OLEInvalidObjectException var8) { assert false; } this._activeX = null; disabled = true; throw var9; } browsers.push(this); if (tag != null) { this.browserTag = tag; } try { this.browse(url, postData, placement); everWorked = true; } catch (IOException var7) { if (!everWorked) { disabled = true; } throw var7; } } else { throw new IOException(); } } public void browse(String url, String postData, Rectangle placement) throws IOException { if (this.nativeBrowserPointer != 0) { int x = -1; int y = -1; int w = -1; int h = -1; if (placement != null) { x = placement.x; y = placement.y; w = placement.width; h = placement.height; } try { browse(url, postData, x, y, w, h, this.nativeBrowserPointer); } catch (IOException var9) { this.close(); throw var9; } } else { throw new IOException(); } } public void close() { if (this.nativeBrowserPointer != 0) { closeBrowser(this.nativeBrowserPointer); this.nativeBrowserPointer = 0; try { this._activeX.Release(); } catch (OLEInvalidObjectException var2) { assert false; } this._activeX = null; browsers.removeElement(this); } } private static native void browse(String var0, String var1, int var2, int var3, int var4, int var5, int var6) throws IOException; private static native int openBrowser() throws IOException; private static native void closeBrowser(int var0); public static Rectangle getMapPartPlacement() { Rectangle placement = null; Console c = Console.getActive(); if (c != null) { MapPart ap = null; Enumeration e = c.getParts(); while (e.hasMoreElements()) { Object o = e.nextElement(); if (o instanceof MapPart) { ap = (MapPart)o; break; } } if (ap != null) { placement = new Rectangle(ap.getLocationOnScreen(), ap.getSize()); placement.grow(0, 10); placement.translate(0, -9); } } return placement; } public static Rectangle getAdPartPlacement() { Rectangle placement = null; Console c = Console.getActive(); if (c != null) { AdPart ap = null; Enumeration e = c.getParts(); while (e.hasMoreElements()) { Object o = e.nextElement(); if (o instanceof AdPart) { ap = (AdPart)o; break; } } if (ap != null) { placement = new Rectangle(ap.getLocationOnScreen(), ap.getSize()); placement.grow(0, 10); placement.translate(0, -9); } } return placement; } public static Rectangle getRenderPartPlacement() { Rectangle placement = null; Console c = Console.getActive(); if (c != null) { RenderCanvas ap = null; Enumeration e = c.getParts(); while (e.hasMoreElements()) { Object o = e.nextElement(); if (o instanceof RenderCanvas) { ap = (RenderCanvas)o; break; } } if (ap != null) { placement = new Rectangle(ap.getLocationOnScreen(), ap.getSize()); placement.grow(2, 10); placement.translate(-1, 7); } } return placement; } public static Rectangle getLeftRenderPartPlacement() { Rectangle placement = null; Console c = Console.getActive(); if (c != null) { RenderCanvas ap = null; Enumeration e = c.getParts(); while (e.hasMoreElements()) { Object o = e.nextElement(); if (o instanceof RenderCanvas) { ap = (RenderCanvas)o; break; } } if (ap != null) { placement = new Rectangle(ap.getLocationOnScreen(), ap.getSize()); placement.grow(2, 10); placement.translate(-1, 7); Dimension d = placement.getSize(); placement.setSize(d.width / 2, d.height); } } return placement; } public static Rectangle getOutsidePlacement() { Rectangle placement = null; Console c = Console.getActive(); if (c != null) { RenderCanvas ap = null; Enumeration e = c.getParts(); while (e.hasMoreElements()) { Object o = e.nextElement(); if (o instanceof RenderCanvas) { ap = (RenderCanvas)o; break; } } if (ap != null) { Point ploc = ap.getLocationOnScreen(); Dimension d = new Dimension(250, 500); Point bloc = new Point(0, ploc.y); if (ploc.x > 254) { bloc.x = ploc.x - 254; } else { bloc.x = 0; } placement = new Rectangle(bloc, d); } } return placement; } }