Bck2BrwsrBlobURLs
From APIDesign
(Difference between revisions)
(3 intermediate revisions not shown.) | |||
Line 1: | Line 1: | ||
- | For a long time users of [[Bck2Brwsr]] complained that loading images, or other resources from the browser is complicated. With great delight [[I]] can announce that forthcoming [[Bck2Brwsr 0.12|version 0.12]] contains solution. It is build around [[JavaScript]] '''Blob''' support. In case you have an application class with an image resource next to it, you can: | + | For a long time users of [[Bck2Brwsr]] complained that loading images, or other resources from the browser's [[HTML]] page is complicated. With a great delight [[I]] can announce that forthcoming [[Bck2Brwsr 0.12|version 0.12]] contains a solution. It is build around [[JavaScript]] '''Blob''' support. |
+ | |||
+ | In case you have an application class with an image resource next to it, you can: | ||
<source lang="java"> | <source lang="java"> | ||
public static void onPageLoad() throws Exception { | public static void onPageLoad() throws Exception { | ||
- | URL u = Main.class.getResource(" | + | URL u = Main.class.getResource("yourimg.png"); |
+ | // one can use u.openStream() to do 'lightweight' read from Java code | ||
- | // by opening the connection one requests creation of Blob | + | // by opening the connection one requests creation of browser Blob |
URLConnection conn = u.openConnection(); | URLConnection conn = u.openConnection(); | ||
- | // the conn.getURL() | + | // the conn.getURL() is actually different URL than u |
+ | // the browser page can really see the URL and use it | ||
changeImg(conn.getURL().toExternalForm()); | changeImg(conn.getURL().toExternalForm()); | ||
} | } | ||
Line 16: | Line 20: | ||
</source> | </source> | ||
- | The '''conn''' object in [[Bck2Brwsr]] also implements {{JDK|java/io|Closeable}}, so when the {{JDK|java/net|URL}} is no longer needed, it can be freed from browser by calling '''close()'''. | + | The '''conn''' object in [[Bck2Brwsr]] also implements {{JDK|java/io|Closeable}}, so when the {{JDK|java/net|URL}} is no longer needed, it can be freed from browser by (safely) casting and calling '''close()''' on it. The full change together with tests is available in [http://source.apidesign.org/hg/bck2brwsr/rev/f5200d90b730 Hg history]. |
The above code works in [[Bck2Brwsr]] as well as in [[FXBrwsr]]. | The above code works in [[Bck2Brwsr]] as well as in [[FXBrwsr]]. | ||
- |
Current revision
For a long time users of Bck2Brwsr complained that loading images, or other resources from the browser's HTML page is complicated. With a great delight I can announce that forthcoming version 0.12 contains a solution. It is build around JavaScript Blob support.
In case you have an application class with an image resource next to it, you can:
public static void onPageLoad() throws Exception { URL u = Main.class.getResource("yourimg.png"); // one can use u.openStream() to do 'lightweight' read from Java code // by opening the connection one requests creation of browser Blob URLConnection conn = u.openConnection(); // the conn.getURL() is actually different URL than u // the browser page can really see the URL and use it changeImg(conn.getURL().toExternalForm()); } @JavaScriptBody(args = "url", body = "document.getElementById('img').src = url") private static native void changeImg(String url);
The conn object in Bck2Brwsr also implements Closeable, so when the URL is no longer needed, it can be freed from browser by (safely) casting and calling close() on it. The full change together with tests is available in Hg history.