public class WindowsWebViewJNI
extends java.lang.Object
WebViews created by this library must be managed by a message loop in native code. This class provides methods for creating and running a native message loop using a Java thread. Each WebView must be associated with one message loop. Each message loop can handle any number of WebViews.
To create a WebView message loop:
newMessageLoop()
from the message loop thread.runMessageLoop(long)
from the message loop
thread. This enters a blocking loop in native code. It will not return until releaseMessageLoop(long)
is
called by another thread.Here is an example of creating and running a message loop:
long webViewMessageLoop = 0;
// Create a new thread to run the WebView message loop.
webViewUI = new Thread("WebView UI")
{
public void run()
{
// Create a message loop in native code. This call must return
// before any messages are sent to the WebView.
webViewMessageLoop = WindowsWebViewJNI.newMessageLoop();
// Notify the outer thread that the message loop is ready.
synchronized (webViewUILock)
{
webViewUILock.notify();
}
// Process messages in native code until the message loop
// is terminated.
WindowsWebViewJNI.runMessageLoop(webViewMessageloop);
}
};
webViewUI.start();
// Wait for the newly started thread to create the message loop. We cannot
// safely use the WebView until the message loop has been initialized.
while (webViewMessageLoop == 0)
{
try
{
webViewUILock.wait();
}
catch (InterruptedException ignored)
{
}
}
Constructor and Description |
---|
WindowsWebViewJNI() |
Modifier and Type | Method and Description |
---|---|
static void |
addWindowUpdateObserver(long webViewWindowPtr,
long observerPtr)
Add an observer that will be notified when the rendered contents of the WebView change (due to animation, user
input, etc)
|
static java.awt.Dimension |
getContentSize(long webViewWindowPtr)
Get the size of the scrollable WebView content.
|
static java.lang.String |
getContentURL(long webViewWindowPtr)
Get the URL of the page currently loaded in the WebView.
|
static AVList[] |
getLinks(long webViewWindowPtr) |
static java.awt.Dimension |
getMinContentSize(long webViewWindowPtr)
Get minimum size of the WebView content.
|
static long |
getUpdateTime(long webViewWindowPtr)
Get the time at which the WebView rendered contents last changed.
|
static void |
goBack(long webViewWindowPtr)
Navigate a WebView window to the previous page in the navigation history.
|
static void |
goForward(long webViewWindowPtr)
Navigate a WebView window to the next page in the navigation history.
|
protected static void |
initialize()
Initialize the native library.
|
static void |
loadDisplayInGLTexture(long webViewWindowPtr,
int target)
Load the captured WebView image into an OpenGL texture.
|
static long |
newMessageLoop()
Create a new native message loop.
|
static long |
newNotificationAdapter(java.beans.PropertyChangeListener listener)
Create a new notification adapter to bridge changes in the native WebView to PropertyChangeEvents.
|
static long |
newWebViewWindow(long messageLoop)
Create a new WebView window.
|
static void |
releaseComObject(long unknownPtr)
Release a COM object.
|
static void |
releaseMessageLoop(long messageLoop)
Release a previously allocated message loop.
|
static void |
releaseWebView(long webViewWindowPtr)
Release a WebView window.
|
static void |
removeWindowUpdateObserver(long webViewWindowPtr,
long observerPtr)
Remove an update observer from a WebView.
|
static void |
runMessageLoop(long messageLoop)
Run a native message loop.
|
static void |
sendEvent(long webViewWindowPtr,
java.awt.event.InputEvent event)
Send an input event to a WebView window.
|
static void |
setActive(long webViewWindowPtr,
boolean active)
Set a WebViewWindow to be active or inactive.
|
static void |
setBackgroundColor(long webViewWindowPtr,
java.lang.String colorString)
Set the background color the WebView.
|
static void |
setFrameSize(long webViewWindowPtr,
int width,
int height)
Set the size of a WebView window.
|
static void |
setHTMLString(long webViewWindowPtr,
java.lang.String htmlString,
java.lang.String baseUrlString)
Set the HTML content of a WebView, with a base URL.
|
static void |
setHTMLStringWithResourceResolver(long webViewWindowPtr,
java.lang.String htmlString,
WebResourceResolver resolver)
Set the HTML content of a WebView, with a
WebResourceResolver to resolve local references. |
static void |
setMinContentSize(long webViewWindowPtr,
int width,
int height)
Specifies the minimum size of the WebView content.
|
public static void addWindowUpdateObserver(long webViewWindowPtr, long observerPtr)
webViewWindowPtr
- pointer to native WebView to observeobserverPtr
- notification adapter allocated by newNotificationAdapter(java.beans.PropertyChangeListener)
public static java.awt.Dimension getContentSize(long webViewWindowPtr)
webViewWindowPtr
- pointer to native WebView.public static java.lang.String getContentURL(long webViewWindowPtr)
webViewWindowPtr
- pointer to native WebView.public static AVList[] getLinks(long webViewWindowPtr)
public static java.awt.Dimension getMinContentSize(long webViewWindowPtr)
webViewWindowPtr
- pointer to native WebView.public static long getUpdateTime(long webViewWindowPtr)
webViewWindowPtr
- pointer to native WebViewpublic static void goBack(long webViewWindowPtr)
webViewWindowPtr
- pointer to native WebView.public static void goForward(long webViewWindowPtr)
webViewWindowPtr
- WebView window to navigate.protected static void initialize()
public static void loadDisplayInGLTexture(long webViewWindowPtr, int target)
webViewWindowPtr
- pointer to native WebView to load into texturetarget
- GL texture identifierpublic static long newMessageLoop()
public static long newNotificationAdapter(java.beans.PropertyChangeListener listener)
listener
- listener that will receive PropertyChangeEvents caused by changes in the native WebViewreleaseComObject
.releaseComObject(long)
public static long newWebViewWindow(long messageLoop)
messageLoop
- message loop that will handle events for the window.public static void releaseComObject(long unknownPtr)
unknownPtr
- pointer to object to releasepublic static void releaseMessageLoop(long messageLoop)
messageLoop
- identifier of the message loop to release.newMessageLoop()
public static void releaseWebView(long webViewWindowPtr)
webViewWindowPtr
- pointer to the window to release.public static void removeWindowUpdateObserver(long webViewWindowPtr, long observerPtr)
webViewWindowPtr
- pointer to native WebView from which to remove observerobserverPtr
- observer to removepublic static void runMessageLoop(long messageLoop)
messageLoop
- Identifier for the message loop. This value is returned by newMessageLoop()
.public static void sendEvent(long webViewWindowPtr, java.awt.event.InputEvent event)
webViewWindowPtr
- window to send input to.event
- input event to send.public static void setActive(long webViewWindowPtr, boolean active)
webViewWindowPtr
- window to set active or inactive.active
- true
if the window is being activated. false
if the window is being
deactivated.public static void setBackgroundColor(long webViewWindowPtr, java.lang.String colorString)
webViewWindowPtr
- WebView window to set color ofcolorString
- Color expressed as a string. Color strings must follow the format defined by the HTML
specification.public static void setFrameSize(long webViewWindowPtr, int width, int height)
webViewWindowPtr
- window to set size ofwidth
- new widthheight
- new heightpublic static void setHTMLString(long webViewWindowPtr, java.lang.String htmlString, java.lang.String baseUrlString)
webViewWindowPtr
- WebView window to set content ofhtmlString
- new HTML contentbaseUrlString
- base URL against which to resolve relative linkspublic static void setHTMLStringWithResourceResolver(long webViewWindowPtr, java.lang.String htmlString, WebResourceResolver resolver)
WebResourceResolver
to resolve local references.webViewWindowPtr
- WebView window to set content ofhtmlString
- new HTML contentresolver
- WebResourceResolver that will resolve local references in the HTML content.public static void setMinContentSize(long webViewWindowPtr, int width, int height)
webViewWindowPtr
- pointer to native WebView.width
- minimum width, in pixels.height
- minimum height, in pixels.