X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Fplat%2FJava2.java;h=fac1213624919bff97eb714adca4b717b2ad54f5;hb=517e8e64135ecf6dc5a8d9d8e0a32cce978a3aef;hp=629858cbaf096f21b882ad4c8ab85a1d9a607009;hpb=2ae602d63f3b0b168455263b57886ab6223e11d2;p=org.ibex.core.git diff --git a/src/org/xwt/plat/Java2.java b/src/org/xwt/plat/Java2.java index 629858c..fac1213 100644 --- a/src/org/xwt/plat/Java2.java +++ b/src/org/xwt/plat/Java2.java @@ -1,4 +1,4 @@ -// Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL] +// Copyright 2003 Adam Megacz, see the COPYING file for licensing [GPL] package org.xwt.plat; import java.awt.*; @@ -17,25 +17,30 @@ import java.lang.reflect.*; public class Java2 extends AWT { private boolean isJava14 = false; - protected boolean _supressDirtyOnResize() { return isJava14 ? false : true; } + protected boolean _supressDirtyOnResize() { + return false; + //return (isJava14 && !System.getProperty("os.name", "").equals("Mac OS X"))? false : true; + } public Java2() { // disable the focus manager so we can intercept the tab key - String versionString = System.getProperty("java.version", ""); - int secondDecimal = versionString.substring(versionString.indexOf('.') + 1).indexOf('.'); - if (secondDecimal != -1) versionString = versionString.substring(0, secondDecimal); - double version = Double.parseDouble(versionString); - if (version >= 1.4) { - isJava14 = true; - try { - Toolkit t = java.awt.Toolkit.getDefaultToolkit(); - Method m = java.awt.Toolkit.class.getMethod("setDynamicLayout", new Class[] { Boolean.class }); - m.invoke(t, new Object[] { Boolean.TRUE }); - } catch (Exception e) { - Log.log(this, "Exception while trying to enable AWT Dynamic Layout"); - Log.log(this, e); - } - } + String versionString = System.getProperty("java.version", ""); + int secondDecimal = versionString.substring(versionString.indexOf('.') + 1).indexOf('.'); + if (secondDecimal != -1) versionString = versionString.substring(0, secondDecimal); + /* + double version = Double.parseDouble(versionString); + if (version >= 1.4) { + isJava14 = true; + try { + Toolkit t = java.awt.Toolkit.getDefaultToolkit(); + Method m = java.awt.Toolkit.class.getMethod("setDynamicLayout", new Class[] { Boolean.class }); + m.invoke(t, new Object[] { Boolean.TRUE }); + } catch (Exception e) { + Log.log(this, "Exception while trying to enable AWT Dynamic Layout"); + Log.log(this, e); + } + } + */ javax.swing.FocusManager.setCurrentManager(new javax.swing.FocusManager() { public void processKeyEvent(Component focusedComponent, KeyEvent anEvent) { } public void focusPreviousComponent(Component aComponent) { } @@ -44,11 +49,11 @@ public class Java2 extends AWT { } /** this is done with reflection in case a new version of the plugin comes out that doesn't let us pull the sun.plugin.* trick */ - protected synchronized org.xwt.Proxy _detectProxy() { - return (org.xwt.Proxy)java.security.AccessController.doPrivileged(new java.security.PrivilegedAction() { + protected synchronized org.xwt.HTTP.Proxy _detectProxy() { + return (org.xwt.HTTP.Proxy)java.security.AccessController.doPrivileged(new java.security.PrivilegedAction() { public Object run() { try { - org.xwt.Proxy pi = new org.xwt.Proxy(); + org.xwt.HTTP.Proxy pi = new org.xwt.HTTP.Proxy(); Class PluginProxyHandler = Class.forName("sun.plugin.protocol.PluginProxyHandler"); Method getDefaultProxyHandler = PluginProxyHandler.getMethod("getDefaultProxyHandler", new Class[] { }); @@ -101,10 +106,24 @@ public class Java2 extends AWT { }); } - protected DoubleBuffer _createDoubleBuffer(int w, int h, Surface owner) { return new Java2DoubleBuffer(w, h); } + protected PixelBuffer _createPixelBuffer(int w, int h, Surface owner) { return new Java2PixelBuffer(w, h); } protected Surface _createSurface(final Box root, final boolean framed) { return (Surface)java.security.AccessController.doPrivileged(new java.security.PrivilegedAction() { - public Object run() { return isJava14 ? new Java14Surface(root, framed) : new Java2Surface(root, framed); } + public Object run() { + if (isJava14) { + try { + // weaken the binding here to avoid link errors on 1.3.x + Class java14SurfaceClass = Class.forName(Java2.class.getName() + "$Java14Surface"); + Constructor ctor = java14SurfaceClass.getConstructor(new Class[] { Box.class, Boolean.TYPE }); + return (Surface)ctor.newInstance(new Object[] { root, new Boolean(framed) }); + } catch (Exception e) { + Log.log(this, e); + throw new LinkageError("error: " + e); + } + } else { + return new Java2Surface(root, framed); + } + } }); } @@ -118,14 +137,14 @@ public class Java2 extends AWT { public Java2Surface(Box root, boolean framed) { super(root, framed); } - public void blit(DoubleBuffer s, int sx, int sy, int dx, int dy, int dx2, int dy2) { + public void blit(PixelBuffer s, int sx, int sy, int dx, int dy, int dx2, int dy2) { if (ourGraphics == null) { ourGraphics = window.getGraphics(); - + // sometimes jdk1.4 doesn't set the clip properly when we're in the middle of a resize - ourGraphics.setClip(insets.left, insets.top, width + insets.left, height + insets.top); + ourGraphics.setClip(insets.left, insets.top, root.width + insets.left, root.height + insets.top); } - _doDrawImage(ourGraphics, ((AWTDoubleBuffer)s).i, dx + insets.left, dy + insets.top, dx2 + insets.left, dy2 + insets.top, + _doDrawImage(window.getGraphics(), ((AWTPixelBuffer)s).i, dx + insets.left, dy + insets.top, dx2 + insets.left, dy2 + insets.top, sx, sy, sx + (dx2 - dx), sy + (dy2 - dy), null); } @@ -178,7 +197,7 @@ public class Java2 extends AWT { } } - protected static class Java2DoubleBuffer extends AWTDoubleBuffer { + protected static class Java2PixelBuffer extends AWTPixelBuffer { private static ColorModel cm = Toolkit.getDefaultToolkit().getColorModel(); private static Hashtable emptyHashtable = new Hashtable(); private static short[] sbank = null; @@ -190,7 +209,7 @@ public class Java2 extends AWT { _doDrawImage(g, ((AWTPicture)source).i, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, null); } - public Java2DoubleBuffer(int w, int h) { + public Java2PixelBuffer(int w, int h) { SampleModel sm = cm.createCompatibleSampleModel(w, h); int numSamples = w * h * sm.getNumDataElements(); DataBuffer buf = null; @@ -241,11 +260,6 @@ public class Java2 extends AWT { g.drawImage(i, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, o); } - protected org.xwt.Weak _getWeak(Object o) { return new Java2Weak(o); } - private static class Java2Weak extends java.lang.ref.WeakReference implements org.xwt.Weak { - public Java2Weak(Object o) { super(o); } - } - private String __getClipBoard() { return super._getClipBoard(); } protected String _getClipBoard() { return (String)java.security.AccessController.doPrivileged(new java.security.PrivilegedAction() { @@ -263,9 +277,11 @@ public class Java2 extends AWT { }); } - protected String getDescriptiveName() { return "Java 1.2+ JVM"; } + protected String getDescriptiveName() { return isJava14 ? "Java 1.4+ JVM" : "Java 1.2+ JVM"; } protected void _newBrowserWindow(String url) { + /* + FIXME if (Main.applet == null) { if (Log.on) Log.log(this, "Main.applet is null; cannot invoke showDocument()"); return; @@ -276,6 +292,7 @@ public class Java2 extends AWT { } catch (MalformedURLException e) { if (Log.on) Log.log(this, e); } + */ } }