2004/01/14 06:12:02
[org.ibex.core.git] / src / org / xwt / Platform.java
index d3b0c19..0d02cd0 100644 (file)
@@ -1,10 +1,11 @@
-// Copyright 2003 Adam Megacz, see the COPYING file for licensing [GPL]
+// Copyright 2004 Adam Megacz, see the COPYING file for licensing [GPL]
 package org.xwt;
 
 import java.lang.reflect.*;
 import java.net.*;
 import java.io.*;
 import java.util.*;
+import org.xwt.js.*;
 import org.xwt.util.*;
 
 /** 
@@ -61,31 +62,34 @@ public abstract class Platform {
             if (platform_class != null)
                 Class.forName("org.xwt.plat." + platform_class).newInstance();
 
+            String term = Platform.getEnv("TERM");
+            Log.color = term != null && term.length() != 0 && !term.equals("cygwin");
+            
             try {
                 build = (String)Class.forName("org.xwt.Build").getField("build").get(null);
             } catch (ClassNotFoundException cnfe) {
             } catch (Exception e) {
-                if (Log.on) Log.log(Platform.class, "exception while detecting build:");
-                if (Log.on) Log.log(Platform.class, e);
+                if (Log.on) Log.info(Platform.class, "exception while detecting build:");
+                if (Log.on) Log.info(Platform.class, e);
             }
-            if (Log.on) Log.log(Platform.class, "XWT build: " + build);
+            if (Log.on) Log.diag(Platform.class, "XWT build: " + build);
 
-            if (Log.on) Log.log(Platform.class, "XWT VM detection:   vendor = " + vendor);
-            if (Log.on) Log.log(Platform.class, "                   version = " + version);
-            if (Log.on) Log.log(Platform.class, "                        os = " + os_name + " [version " + os_version + "]");
+            if (Log.on) Log.diag(Platform.class, "XWT VM detection:   vendor = " + vendor);
+            if (Log.on) Log.diag(Platform.class, "                   version = " + version);
+            if (Log.on) Log.diag(Platform.class, "                        os = " + os_name + " [version " + os_version + "]");
 
             if (platform_class == null) {
-                if (Log.on) Log.log(Platform.class, "Unable to detect JVM");
+                if (Log.on) Log.info(Platform.class, "Unable to detect JVM");
                 criticalAbort("Unable to detect JVM");
             }
 
-            if (Log.on) Log.log(Platform.class, "                  platform = " + platform.getDescriptiveName());
-            if (Log.on) Log.log(Platform.class, "                     class = " + platform.getClass().getName());
+            if (Log.on) Log.diag(Platform.class, "                  platform = " + platform.getDescriptiveName());
+            if (Log.on) Log.diag(Platform.class, "                     class = " + platform.getClass().getName());
             platform.postInit();
 
         } catch (Exception e) {
-            if (Log.on) Log.log(Platform.class, "Exception while trying to detect JVM");
-            if (Log.on) Log.log(Platform.class, e);
+            if (Log.on) Log.info(Platform.class, "Exception while trying to detect JVM");
+            if (Log.on) Log.info(Platform.class, e);
             criticalAbort("Unable to detect JVM");
         }
 
@@ -101,17 +105,16 @@ public abstract class Platform {
     protected void postInit() { }
 
     protected Surface _createSurface(Box b, boolean framed) { return null; }
-    protected Picture _createPicture(Res r) { return null; }
+    protected Picture _createPicture(JS r) { return null; }
     protected PixelBuffer _createPixelBuffer(int w, int h, Surface owner) { return null; }
     protected Font.Glyph _createGlyph(org.xwt.Font f, char c) { return new DefaultGlyph(f, c); }
 
     public static PixelBuffer createPixelBuffer(int w, int h, Surface s) { return platform._createPixelBuffer(w, h, s); }
-    public static Picture createPicture(Res r) { return platform._createPicture(r); }
+    public static Picture createPicture(JS r) { return platform._createPicture(r); }
     public static Font.Glyph createGlyph(org.xwt.Font f, char c) { return platform._createGlyph(f, c); }
     public static Surface createSurface(Box b, boolean framed, boolean refreshable) {
         Surface ret = platform._createSurface(b, framed);
         ret.setInvisible(false);
-        ret.setLimits(b.minwidth, b.minheight, b.maxwidth, b.maxheight);
         if (refreshable) {
             Surface.allSurfaces.addElement(ret);
             ret.dirty(0, 0, b.width, b.height);
@@ -184,8 +187,8 @@ public abstract class Platform {
                 if (s.startsWith(key + "="))
                     return s.substring(key.length() + 1);
         } catch (Exception e) {
-            if (Log.on) Log.log(this, "Exception while reading from environment:");
-            if (Log.on) Log.log(this, e);
+            if (Log.on) Log.info(this, "Exception while reading from environment:");
+            if (Log.on) Log.info(this, e);
         }
         return null;
     }
@@ -207,14 +210,14 @@ public abstract class Platform {
             Method m = c.getMethod("openURL", new Class[] { String.class });
             m.invoke(null, new String[] { url });
         } catch (Exception e) {
-            Log.log(this, e);
+            Log.info(this, e);
         }
     }
 
     /** opens a new browser window */
     public static void newBrowserWindow(String url) {
         if (!(url.startsWith("https://") || url.startsWith("http://") || url.startsWith("ftp://") || url.startsWith("mailto:"))) {
-            if (Log.on) Log.log(Platform.class, "xwt.newBrowserWindow() only supports http and https urls");
+            if (Log.on) Log.info(Platform.class, "xwt.newBrowserWindow() only supports http and https urls");
             return;
         }
 
@@ -224,18 +227,18 @@ public abstract class Platform {
             if (u.startsWith("https")) u = "http" + u.substring(5);
             new URL(u);
         } catch (MalformedURLException e) {
-            if (Log.on) Log.log(Platform.class, "URL " + url + " is not well-formed");
-            if (Log.on) Log.log(Platform.class, e);
+            if (Log.on) Log.info(Platform.class, "URL " + url + " is not well-formed");
+            if (Log.on) Log.info(Platform.class, e);
         }
 
-        if (Log.on) Log.log(Platform.class, "newBrowserWindow, url = " + url);
+        if (Log.on) Log.info(Platform.class, "newBrowserWindow, url = " + url);
         platform._newBrowserWindow(url);
     }
 
     /** used to notify the user of very serious failures; usually used when logging is not working or unavailable */
     public static void criticalAbort(String message) {
-        if (Log.on) Log.log(Platform.class, "Critical Abort:");
-        if (Log.on) Log.log(Platform.class, message);
+        if (Log.on) Log.info(Platform.class, "Critical Abort:");
+        if (Log.on) Log.info(Platform.class, message);
         platform._criticalAbort(message);
     }
 
@@ -247,11 +250,11 @@ public abstract class Platform {
         if (alreadyDetectedProxy) return null;
         alreadyDetectedProxy = true;
 
-        if (Log.on) Log.log(Platform.class, "attempting environment-variable DNS proxy detection");
+        if (Log.on) Log.info(Platform.class, "attempting environment-variable DNS proxy detection");
         cachedProxyInfo = org.xwt.HTTP.Proxy.detectProxyViaManual();
         if (cachedProxyInfo != null) return cachedProxyInfo;
 
-        if (Log.on) Log.log(Platform.class, "attempting " + platform.getClass().getName() + " proxy detection");
+        if (Log.on) Log.info(Platform.class, "attempting " + platform.getClass().getName() + " proxy detection");
         cachedProxyInfo = platform._detectProxy();
         if (cachedProxyInfo != null) return cachedProxyInfo;
 
@@ -268,12 +271,14 @@ public abstract class Platform {
         public DefaultGlyph(org.xwt.Font f, char c) { super(f, c); }
         public Picture getPicture() {
             if (p == null && isLoaded) {
-                p = createPicture(null);
+                Picture p = createPicture(null);
                 p.data = new int[data.length];
                 for(int i=0; i<data.length; i++) p.data[i] = (data[i] & 0xff) << 24;
-                data = null;
+                this.data = null;
                 p.width = this.width;
                 p.height = this.height;
+                p.isLoaded = true;
+                this.p = p;
             }
             return p;
         }