diff options
Diffstat (limited to 'netx')
-rw-r--r-- | netx/com/jogamp/plugin/ui/NativeWindowDownstream.java | 5 | ||||
-rw-r--r-- | netx/com/jogamp/plugin/ui/NativeWindowUpstream.java | 14 | ||||
-rw-r--r-- | netx/jogamp/applet/Applet3Panel.java | 103 | ||||
-rw-r--r-- | netx/jogamp/plugin/jnlp/NetxApplet3Panel.java | 4 | ||||
-rw-r--r-- | netx/net/sourceforge/jnlp/PluginParameters.java | 31 |
5 files changed, 121 insertions, 36 deletions
diff --git a/netx/com/jogamp/plugin/ui/NativeWindowDownstream.java b/netx/com/jogamp/plugin/ui/NativeWindowDownstream.java index 0846505..bed433b 100644 --- a/netx/com/jogamp/plugin/ui/NativeWindowDownstream.java +++ b/netx/com/jogamp/plugin/ui/NativeWindowDownstream.java @@ -78,4 +78,9 @@ public interface NativeWindowDownstream { * </p> */ public void display(); + + /** + * Notify applet that the plugin's window has changed it's position. + */ + void notifyPositionChanged(NativeWindowUpstream nw); } diff --git a/netx/com/jogamp/plugin/ui/NativeWindowUpstream.java b/netx/com/jogamp/plugin/ui/NativeWindowUpstream.java index ccd42e0..942b509 100644 --- a/netx/com/jogamp/plugin/ui/NativeWindowUpstream.java +++ b/netx/com/jogamp/plugin/ui/NativeWindowUpstream.java @@ -57,6 +57,20 @@ public interface NativeWindowUpstream { public long getWindowHandle(); /** + * @return the current x position of the top-left corner + * of the client area relative to it's parent. + * Since the position reflects the client area, it does not include the insets. + */ + int getX(); + + /** + * @return the current y position of the top-left corner + * of the client area relative to it's parent. + * Since the position reflects the client area, it does not include the insets. + */ + int getY(); + + /** * Returns the width of the client area excluding insets (window decorations). * @return width of the client area */ diff --git a/netx/jogamp/applet/Applet3Panel.java b/netx/jogamp/applet/Applet3Panel.java index 5acad4d..27bb305 100644 --- a/netx/jogamp/applet/Applet3Panel.java +++ b/netx/jogamp/applet/Applet3Panel.java @@ -97,7 +97,7 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { */ private NativeWindowDownstream appletWindow; - private final MyNativeWindow parentWindow; + private final MyNativeWindow browserWindow; /** * Applet will allow initialization. Should be @@ -172,6 +172,11 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { */ int[] currentAppletSize = { 10, 10 }; + /** + * The current applet position. + */ + int[] currentAppletPos = { 0, 0 }; + MessageUtils mu = new MessageUtils(); /** @@ -214,10 +219,12 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { public abstract ClassLoader getAppletClassLoader(); - public Applet3Panel(long nativeWindowHandle, int width, int height, URL documentURL, Hashtable<String, String> parameters) { + public Applet3Panel(long nativeWindowHandle, int xpos, int ypos, int width, int height, URL documentURL, Hashtable<String, String> parameters) { this.documentURL = documentURL; this.parameters = parameters; this.updateSizeInParameters(width, height); + this.currentAppletPos[0] = xpos; + this.currentAppletPos[1] = ypos; this.currentAppletSize[0] = width; this.currentAppletSize[1] = height; { @@ -249,7 +256,7 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { } baseURL = _baseURL; } - this.parentWindow = new MyNativeWindow(nativeWindowHandle); + this.browserWindow = new MyNativeWindow(nativeWindowHandle); } class MyNativeWindow implements NativeWindowUpstream { final long handle; @@ -269,6 +276,16 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { } @Override + public final int getX() { + return Applet3Panel.this.getX(); + } + + @Override + public final int getY() { + return Applet3Panel.this.getY(); + } + + @Override public final long getWindowHandle() { return this.handle; } @@ -287,6 +304,10 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { public final void notifySurfaceUpdated(NativeWindowDownstream swappedWin) { // TODO: May hook for composite extension } + @Override + public final String toString() { + return "PluginWin[0x"+Long.toHexString(handle)+", "+getX()+"/"+getY()+" "+getWidth()+"x"+getHeight()+"]"; + } }; public void destroy(boolean notifyApplet, boolean notifyUser) throws java.security.AccessControlException { @@ -320,7 +341,7 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { return appletWindow; } public MyNativeWindow getBrowserWindow() { - return parentWindow; + return browserWindow; } public int getStatus() { return status; } @@ -355,7 +376,7 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { } @Override - public final URL getDocumentBase() { // TODO + public final URL getDocumentBase() { return documentURL; } @@ -364,29 +385,17 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { return baseURL; } - public void updateSizeInParameters(int width, int height) { + private void updateSizeInParameters(int width, int height) { parameters.put("width", Integer.toString(width)); parameters.put("height", Integer.toString(height)); } + private void updatePosInParameters(int x, int y) { + parameters.put("xpos", Integer.toString(x)); + parameters.put("ypos", Integer.toString(y)); + } @Override public void resize(int width, int height) { - appletResize(width, height); - } - - /** - * Called when the applet wants to be resized. - * - * @param width the new requested width for the applet. - * @param height the new requested height for the applet. - */ - public void appletResize(int width, int height) { - updateSizeInParameters(width, height); - currentAppletSize[0] = width; - currentAppletSize[1] = height; - if( null != appletWindow ) { - appletWindow.setSize(width, height); - } /** FIXME if(loader != null) { App3Context appCtxt = loader.getAppContext(); @@ -406,6 +415,31 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { } })); } */ + browserSizeChanged(width, height); + } + + /** + * Called when the applet needs to be resized. + */ + public void browserSizeChanged(int width, int height) { + updateSizeInParameters(width, height); + currentAppletSize[0] = width; + currentAppletSize[1] = height; + if( null != appletWindow ) { + appletWindow.setSize(width, height); + } + } + + /** + * Called when the applet needs to be informed about about position change. + */ + public void browserPositionChanged(int x, int y) { + updatePosInParameters(x, y); + currentAppletPos[0] = y; + currentAppletPos[1] = y; + if( null != appletWindow ) { + appletWindow.notifyPositionChanged(browserWindow); + } } @Override @@ -451,6 +485,12 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { // // Internal Impl. // + @Override + public String toString() { + return getClass().getSimpleName()+"@"+Integer.toHexString(hashCode())+ + "["+getX()+"/"+getY()+" "+getWidth()+"x"+getHeight()+ + ", "+getCode()+" @ "+getCodeBase()+", doc "+getDocumentBase()+"]"; + } /** * Get the code parameter @@ -492,6 +532,21 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { } /** + * Get the x-pos. + */ + public final int getX() { + return currentAppletPos[0]; + } + + + /** + * Get the y-pos. + */ + public final int getY() { + return currentAppletPos[1]; + } + + /** * Get the width. */ public final int getWidth() { @@ -812,8 +867,8 @@ public abstract class Applet3Panel implements Applet3Context, Runnable { break; } if( null == appletWindow ) { - appletWindow = applet.createNativeWindow(this, parentWindow); - if( parentWindow != appletWindow.getParent() ) { + appletWindow = applet.createNativeWindow(this, browserWindow); + if( browserWindow != appletWindow.getParent() ) { throw new IllegalArgumentException("Applet's parent doesn't match!"); } // FIXME loader.getAppContext().registerAppletWindow(appletWindow); diff --git a/netx/jogamp/plugin/jnlp/NetxApplet3Panel.java b/netx/jogamp/plugin/jnlp/NetxApplet3Panel.java index 0d79911..c9f0dd1 100644 --- a/netx/jogamp/plugin/jnlp/NetxApplet3Panel.java +++ b/netx/jogamp/plugin/jnlp/NetxApplet3Panel.java @@ -73,8 +73,8 @@ public class NetxApplet3Panel extends Applet3Panel implements SplashController { private static final ConcurrentMap<String, Boolean> appContextCreated = new ConcurrentHashMap<String, Boolean>(); - public NetxApplet3Panel(long nativeWindowHandle, int width, int height, URL documentURL, PluginParameters params) { - super(nativeWindowHandle, width, height, documentURL, params.getUnderlyingHashtable()); + public NetxApplet3Panel(long nativeWindowHandle, int xpos, int ypos, int width, int height, URL documentURL, PluginParameters params) { + super(nativeWindowHandle, xpos, ypos, width, height, documentURL, params.getUnderlyingHashtable()); this.pluginParameters = params; this.initialized = false; diff --git a/netx/net/sourceforge/jnlp/PluginParameters.java b/netx/net/sourceforge/jnlp/PluginParameters.java index c3a958c..99e01c4 100644 --- a/netx/net/sourceforge/jnlp/PluginParameters.java +++ b/netx/net/sourceforge/jnlp/PluginParameters.java @@ -37,13 +37,13 @@ exception statement from your version. */ package net.sourceforge.jnlp; +import static net.sourceforge.jnlp.runtime.Translator.R; + import java.net.URL; import java.util.Collections; import java.util.Hashtable; import java.util.Map; -import static net.sourceforge.jnlp.runtime.Translator.R; - /** * Represents plugin applet parameters, backed by a Hashtable. */ @@ -77,7 +77,7 @@ public class PluginParameters { /** * Used for compatibility with Hashtable-expecting classes. - * + * * @return the underlying hashtable. */ public Hashtable<String, String> getUnderlyingHashtable() { @@ -150,13 +150,23 @@ public class PluginParameters { return getDefaulted("archive", ""); } + public int getX() { + final String yposStr = getDefaulted("xpos", "0"); + return Integer.valueOf(yposStr); + } + + public int getY() { + final String xposStr = getDefaulted("ypos", "0"); + return Integer.valueOf(xposStr); + } + public int getWidth() { - String widthStr = getDefaulted("width", "0"); + final String widthStr = getDefaulted("width", "0"); return Integer.valueOf(widthStr); } public int getHeight() { - String heightStr = getDefaulted("height", "0"); + final String heightStr = getDefaulted("height", "0"); return Integer.valueOf(heightStr); } @@ -166,12 +176,12 @@ public class PluginParameters { } public String getUniqueKey(URL codebase) { - /* According to http://download.oracle.com/javase/6/docs/technotes/guides/deployment/deployment-guide/applet-compatibility.html, + /* According to http://download.oracle.com/javase/6/docs/technotes/guides/deployment/deployment-guide/applet-compatibility.html, * classloaders are shared iff these properties match: * codebase, cache_archive, java_archive, archive - * + * * To achieve this, we create the uniquekey based on those 4 values, - * always in the same order. The initial "<NAME>=" parts ensure a + * always in the same order. The initial "<NAME>=" parts ensure a * bad tag cannot trick the loader into getting shared with another. */ return "codebase=" + codebase.toExternalForm() + "cache_archive=" @@ -180,7 +190,7 @@ public class PluginParameters { } /** - * Replace an attribute with its 'java_'-prefixed version. + * Replace an attribute with its 'java_'-prefixed version. * Note that java_* aliases override older names: * http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/using_tags.html#in-nav */ @@ -195,7 +205,7 @@ public class PluginParameters { /** * Creates the underlying hash table with the proper overrides. Ensure all * keys are lowercase consistently. - * + * * @param params * the properties, before parameter aliasing rules. * @return the resulting parameter table @@ -236,6 +246,7 @@ public class PluginParameters { return params; } + @Override public String toString() { return parameters.toString(); } |