Package org.lobobrowser.html.test
Class SimpleHtmlRendererContext
- java.lang.Object
-
- org.lobobrowser.html.test.SimpleHtmlRendererContext
-
- All Implemented Interfaces:
HtmlRendererContext
public class SimpleHtmlRendererContext extends java.lang.Object implements HtmlRendererContext
TheSimpleHtmlRendererContext
class implements theHtmlRendererContext
interface. Note that this class provides rudimentary implementations of most callback methods. Overridding some of the methods in this class will usually be necessary in a professional application.A simple way to load a URL into the
HtmlPanel
of the renderer context is to invokenavigate(String)
.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.net.URLConnection
currentConnection
The connection currently opened by openSync() if any.
-
Constructor Summary
Constructors Constructor Description SimpleHtmlRendererContext(HtmlPanel contextComponent)
Deprecated.Use constructor that takesHtmlPanel
andUserAgentContext
SimpleHtmlRendererContext(HtmlPanel contextComponent, HtmlRendererContext parentRcontext)
Constructs a SimpleHtmlRendererContext that is a child of another
.HtmlRendererContext
SimpleHtmlRendererContext(HtmlPanel contextComponent, UserAgentContext ucontext)
Constructs a SimpleHtmlRendererContext.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
alert(java.lang.String message)
Opens a simple message dialog.void
back()
It should navigate back one page.void
blur()
It should give up focus on the current browser window.void
close()
It should close the current browser window.boolean
confirm(java.lang.String message)
Opens a simple confirmation window.BrowserFrame
createBrowserFrame()
Creates aBrowserFrame
instance.protected HTMLDocumentImpl
createDocument(org.xml.sax.InputSource inputSource)
Creates a blank document instance.void
error(java.lang.String message)
void
error(java.lang.String message, java.lang.Throwable throwable)
void
focus()
It should request focus for the current browser window.void
forward()
Goes forward one page.java.lang.String
getCurrentURL()
Gets the current URL in history.java.lang.String
getDefaultStatus()
Should return true if and only if the current browser window is closed.protected java.lang.String
getDocumentCharset(java.net.URLConnection connection)
This method is invoked bysubmitForm(String, URL, String, String, FormInput[])
to determine the charset of a document.HTMLCollection
getFrames()
Gets a collection of current document frames, by querying the document currently held by the localHtmlPanel
instance.int
getHistoryLength()
Gets the number of pages in the history list.HtmlObject
getHtmlObject(HTMLElement element)
Returnsnull
.HtmlPanel
getHtmlPanel()
java.lang.String
getName()
It should return the name of the browser window, if this renderer context is for the top frame in the window.java.lang.String
getNextURL()
Gets the next URL in the history.HtmlRendererContext
getOpener()
Gets the opener of the frame/window in the current context.HtmlRendererContext
getParent()
Gets the parent of the frame/window in the current context.java.lang.String
getPreviousURL()
Gets the previous URL in the history.protected java.net.Proxy
getProxy()
Gets the connection proxy used innavigate(URL, String)
.java.lang.String
getSourceCode()
Gets the source code of the current HTML document.java.lang.String
getStatus()
Gets the window status text.HtmlRendererContext
getTop()
Gets the top-most browser frame/window.UserAgentContext
getUserAgentContext()
If aUserAgentContext
instance was provided in the constructor, then that instance is returned.void
goToHistoryURL(java.lang.String url)
Navigates to a URL in the history list.boolean
isClosed()
Should return true if and only if the current browser window is closed.boolean
isImageLoadingEnabled()
This method should return true if and only if image loading needs to be enabled.protected boolean
isNavigationAsynchronous()
Indicates whether navigation (viasubmitForm(String, URL, String, String, FormInput[])
) should be asynchronous.boolean
isVisitedLink(HTMLLinkElement link)
Should be overridden to return true if the link has been visited.void
linkClicked(HTMLElement linkNode, java.net.URL url, java.lang.String target)
Implements the link click handler by invokingnavigate(URL, String)
.void
moveInHistory(int offset)
Navigates the history according to the given offset.void
navigate(java.lang.String fullURL)
Convenience method provided to allow loading a document into the renderer.void
navigate(java.net.URL href, java.lang.String target)
Implements simple navigation with incremental rendering by invokingsubmitForm(String, URL, String, String, FormInput[])
with aGET
request method.boolean
onContextMenu(HTMLElement element, java.awt.event.MouseEvent event)
This method must be overridden to implement a context menu.boolean
onDoubleClick(HTMLElement element, java.awt.event.MouseEvent event)
This method is called when there's a mouse double-click on an element.boolean
onMouseClick(HTMLElement element, java.awt.event.MouseEvent event)
This method is called when there's a mouse click on an element.void
onMouseOut(HTMLElement element, java.awt.event.MouseEvent event)
This method can be overridden to receive notifications when the mouse leaves an element.void
onMouseOver(HTMLElement element, java.awt.event.MouseEvent event)
This method can be overridden to receive notifications when the mouse first enters an element.HtmlRendererContext
open(java.lang.String url, java.lang.String windowName, java.lang.String windowFeatures, boolean replace)
Deprecated.HtmlRendererContext
open(java.net.URL url, java.lang.String windowName, java.lang.String windowFeatures, boolean replace)
It should open a new browser window.java.lang.String
prompt(java.lang.String message, java.lang.String inputDefault)
Shows a simple prompt dialog.void
reload()
Implements reload as navigation to current URL.void
resizeBy(int byWidth, int byHeight)
Resizes the window.void
resizeTo(int width, int height)
Resizes the window.void
scroll(int x, int y)
Changes the origin of the HTML block's scrollable area according to the position given.void
scrollBy(int x, int y)
Scrolls the client area.void
setDefaultStatus(java.lang.String message)
void
setOpener(HtmlRendererContext opener)
Sets the context that opened the current frame/window.void
setStatus(java.lang.String message)
Sets the window status text.void
submitForm(java.lang.String method, java.net.URL action, java.lang.String target, java.lang.String enctype, FormInput[] formInputs)
Implements simple navigation and form submission with incremental rendering and target processing, including frame lookup.protected void
submitFormSync(java.lang.String method, java.net.URL action, java.lang.String target, java.lang.String enctype, FormInput[] formInputs)
Submits a form and/or navigates by making a synchronous request.void
warn(java.lang.String message)
void
warn(java.lang.String message, java.lang.Throwable throwable)
-
-
-
Constructor Detail
-
SimpleHtmlRendererContext
public SimpleHtmlRendererContext(HtmlPanel contextComponent)
Deprecated.Use constructor that takesHtmlPanel
andUserAgentContext
Constructs a SimpleHtmlRendererContext.- Parameters:
contextComponent
- The component that will render HTML.
-
SimpleHtmlRendererContext
public SimpleHtmlRendererContext(HtmlPanel contextComponent, UserAgentContext ucontext)
Constructs a SimpleHtmlRendererContext.- Parameters:
contextComponent
- The component that will render HTML.- See Also:
SimpleUserAgentContext
-
SimpleHtmlRendererContext
public SimpleHtmlRendererContext(HtmlPanel contextComponent, HtmlRendererContext parentRcontext)
Constructs a SimpleHtmlRendererContext that is a child of another
.HtmlRendererContext
- Parameters:
contextComponent
- The component that will render HTML.parentRcontext
- The parent's renderer context.
-
-
Method Detail
-
getHtmlPanel
public HtmlPanel getHtmlPanel()
-
getSourceCode
public java.lang.String getSourceCode()
Gets the source code of the current HTML document.
-
getFrames
public HTMLCollection getFrames()
Gets a collection of current document frames, by querying the document currently held by the localHtmlPanel
instance.- Specified by:
getFrames
in interfaceHtmlRendererContext
-
reload
public void reload()
Implements reload as navigation to current URL. Override to implement a more robust reloading mechanism.- Specified by:
reload
in interfaceHtmlRendererContext
-
linkClicked
public void linkClicked(HTMLElement linkNode, java.net.URL url, java.lang.String target)
Implements the link click handler by invokingnavigate(URL, String)
.- Specified by:
linkClicked
in interfaceHtmlRendererContext
- Parameters:
linkNode
- The HTML node that was clicked.url
- The destination URL.target
- Same as the target attribute in the HTML anchor tag, i.e. _top, _blank, etc.
-
getProxy
protected java.net.Proxy getProxy()
Gets the connection proxy used innavigate(URL, String)
. This implementation callsSimpleUserAgentContext.getProxy()
ifgetUserAgentContext()
returns an instance assignable toSimpleUserAgentContext
. The method may be overridden to provide a different proxy setting.
-
navigate
public void navigate(java.net.URL href, java.lang.String target)
Implements simple navigation with incremental rendering by invokingsubmitForm(String, URL, String, String, FormInput[])
with aGET
request method.- Specified by:
navigate
in interfaceHtmlRendererContext
- Parameters:
href
- The destination URL.target
- Same as the target attribute in the HTML anchor tag, i.e. _top, _blank, etc.
-
navigate
public void navigate(java.lang.String fullURL) throws java.net.MalformedURLException
Convenience method provided to allow loading a document into the renderer.- Parameters:
fullURL
- The absolute URL of the document.- Throws:
java.net.MalformedURLException
- See Also:
navigate(URL, String)
-
submitForm
public void submitForm(java.lang.String method, java.net.URL action, java.lang.String target, java.lang.String enctype, FormInput[] formInputs)
Implements simple navigation and form submission with incremental rendering and target processing, including frame lookup. Should be overridden to allow for more robust browser navigation and form submission.Notes:
- Document encoding is defined by
getDocumentCharset(URLConnection)
. - Caching is not implemented.
- Cookies are not implemented.
- Incremental rendering is not optimized for ignorable document change notifications.
- Other HTTP features are not implemented.
- The only form encoding type supported is
application/x-www-form-urlencoded
. - Navigation is normally asynchronous. See
isNavigationAsynchronous()
.
- Specified by:
submitForm
in interfaceHtmlRendererContext
- Parameters:
method
- The request method, GET or POST.action
- The destination URL.target
- Same as the target attribute in the FORM tag, i.e. _blank, _top, etc.enctype
- The encoding type.formInputs
- An array ofFormInput
instances.- See Also:
navigate(URL, String)
- Document encoding is defined by
-
isNavigationAsynchronous
protected boolean isNavigationAsynchronous()
Indicates whether navigation (viasubmitForm(String, URL, String, String, FormInput[])
) should be asynchronous. This overridable implementation returnstrue
.
-
submitFormSync
protected void submitFormSync(java.lang.String method, java.net.URL action, java.lang.String target, java.lang.String enctype, FormInput[] formInputs) throws java.io.IOException, org.xml.sax.SAXException
Submits a form and/or navigates by making a synchronous request. This method is invoked bysubmitForm(String, URL, String, String, FormInput[])
.- Parameters:
method
- The request method.action
- The action URL.target
- The target identifier.enctype
- The encoding type.formInputs
- The form inputs.- Throws:
java.io.IOException
org.xml.sax.SAXException
- See Also:
submitForm(String, URL, String, String, FormInput[])
-
createDocument
protected HTMLDocumentImpl createDocument(org.xml.sax.InputSource inputSource) throws java.io.IOException, org.xml.sax.SAXException
Creates a blank document instance. This method is invoked whenever navigation or form submission occur. It is provided so it can be overridden to create specialized document implmentations.- Parameters:
inputSource
- The document input source.- Throws:
java.io.IOException
org.xml.sax.SAXException
-
getDocumentCharset
protected java.lang.String getDocumentCharset(java.net.URLConnection connection)
This method is invoked bysubmitForm(String, URL, String, String, FormInput[])
to determine the charset of a document. The charset is determined by looking at theContent-Type
header.- Parameters:
connection
- A URL connection.
-
alert
public void alert(java.lang.String message)
Opens a simple message dialog.- Specified by:
alert
in interfaceHtmlRendererContext
- Parameters:
message
- Message shown by the dialog.
-
blur
public void blur()
It should give up focus on the current browser window. This implementation does nothing and should be overridden.- Specified by:
blur
in interfaceHtmlRendererContext
-
close
public void close()
It should close the current browser window. This implementation does nothing and should be overridden.- Specified by:
close
in interfaceHtmlRendererContext
-
confirm
public boolean confirm(java.lang.String message)
Opens a simple confirmation window.- Specified by:
confirm
in interfaceHtmlRendererContext
- Parameters:
message
- The message shown by the confirmation dialog.- Returns:
- True if the user selects YES.
-
focus
public void focus()
It should request focus for the current browser window. This implementation does nothing and should be overridden.- Specified by:
focus
in interfaceHtmlRendererContext
-
open
public final HtmlRendererContext open(java.lang.String url, java.lang.String windowName, java.lang.String windowFeatures, boolean replace)
Deprecated.Description copied from interface:HtmlRendererContext
Opens a separate browser window and renders a URL.- Specified by:
open
in interfaceHtmlRendererContext
- Parameters:
url
- The URL to be rendered.windowName
- The name of the new window.windowFeatures
- The features of the new window (same as in Javascript open method).- Returns:
- A new
HtmlRendererContext
instance.
-
open
public HtmlRendererContext open(java.net.URL url, java.lang.String windowName, java.lang.String windowFeatures, boolean replace)
It should open a new browser window. This implementation does nothing and should be overridden.- Specified by:
open
in interfaceHtmlRendererContext
- Parameters:
url
- The requested URL.windowName
- A window identifier.windowFeatures
- Window features specified in a format equivalent to that of window.open() in Javascript.replace
- Whether an existing window with the same name should be replaced.- Returns:
- A new
HtmlRendererContext
instance.
-
prompt
public java.lang.String prompt(java.lang.String message, java.lang.String inputDefault)
Shows a simple prompt dialog.- Specified by:
prompt
in interfaceHtmlRendererContext
- Parameters:
message
- The message shown by the dialog.inputDefault
- The default input value.- Returns:
- The user's input value.
-
scroll
public void scroll(int x, int y)
Changes the origin of the HTML block's scrollable area according to the position given.This method may be called outside of the GUI thread. The operation is scheduled immediately in that thread as needed.
- Specified by:
scroll
in interfaceHtmlRendererContext
- Parameters:
x
- The new x coordinate for the origin.y
- The new y coordinate for the origin.
-
scrollBy
public void scrollBy(int x, int y)
Description copied from interface:HtmlRendererContext
Scrolls the client area.- Specified by:
scrollBy
in interfaceHtmlRendererContext
- Parameters:
x
- Horizontal pixels to scroll.y
- Vertical pixels to scroll.
-
isClosed
public boolean isClosed()
Should return true if and only if the current browser window is closed. This implementation returns false and should be overridden.- Specified by:
isClosed
in interfaceHtmlRendererContext
-
getDefaultStatus
public java.lang.String getDefaultStatus()
Should return true if and only if the current browser window is closed. This implementation returns false and should be overridden.- Specified by:
getDefaultStatus
in interfaceHtmlRendererContext
-
getName
public java.lang.String getName()
It should return the name of the browser window, if this renderer context is for the top frame in the window. This implementation returns a blank string, so it should be overridden.- Specified by:
getName
in interfaceHtmlRendererContext
-
getParent
public HtmlRendererContext getParent()
Description copied from interface:HtmlRendererContext
Gets the parent of the frame/window in the current context.- Specified by:
getParent
in interfaceHtmlRendererContext
-
getOpener
public HtmlRendererContext getOpener()
Description copied from interface:HtmlRendererContext
Gets the opener of the frame/window in the current context.- Specified by:
getOpener
in interfaceHtmlRendererContext
-
setOpener
public void setOpener(HtmlRendererContext opener)
Description copied from interface:HtmlRendererContext
Sets the context that opened the current frame/window.- Specified by:
setOpener
in interfaceHtmlRendererContext
- Parameters:
opener
- AHtmlRendererContext
.
-
getStatus
public java.lang.String getStatus()
Description copied from interface:HtmlRendererContext
Gets the window status text.- Specified by:
getStatus
in interfaceHtmlRendererContext
-
setStatus
public void setStatus(java.lang.String message)
Description copied from interface:HtmlRendererContext
Sets the window status text.- Specified by:
setStatus
in interfaceHtmlRendererContext
- Parameters:
message
- A string.
-
getTop
public HtmlRendererContext getTop()
Description copied from interface:HtmlRendererContext
Gets the top-most browser frame/window.- Specified by:
getTop
in interfaceHtmlRendererContext
-
createBrowserFrame
public BrowserFrame createBrowserFrame()
Description copied from interface:HtmlRendererContext
Creates aBrowserFrame
instance.- Specified by:
createBrowserFrame
in interfaceHtmlRendererContext
-
warn
public void warn(java.lang.String message, java.lang.Throwable throwable)
-
error
public void error(java.lang.String message, java.lang.Throwable throwable)
-
warn
public void warn(java.lang.String message)
-
error
public void error(java.lang.String message)
-
getHtmlObject
public HtmlObject getHtmlObject(HTMLElement element)
Returnsnull
. This method should be overridden to provide OBJECT, EMBED or APPLET functionality.- Specified by:
getHtmlObject
in interfaceHtmlRendererContext
- Parameters:
element
- The DOM element for the object, which may either represent an OBJECT, EMBED or an APPLET tag.- Returns:
- Implementations of this method must return
null
if they have any problems producing aHtmlObject
instance. This is particularly true of OBJECT tags, where inner HTML of the tag must be rendered if the OBJECT content cannot be handled.
-
setDefaultStatus
public void setDefaultStatus(java.lang.String message)
- Specified by:
setDefaultStatus
in interfaceHtmlRendererContext
-
getUserAgentContext
public UserAgentContext getUserAgentContext()
If aUserAgentContext
instance was provided in the constructor, then that instance is returned. Otherwise, an instance ofSimpleUserAgentContext
is created and returned.The context returned by this method is used by local request facilities and other parts of the renderer.
- Specified by:
getUserAgentContext
in interfaceHtmlRendererContext
-
isVisitedLink
public boolean isVisitedLink(HTMLLinkElement link)
Should be overridden to return true if the link has been visited.- Specified by:
isVisitedLink
in interfaceHtmlRendererContext
-
onContextMenu
public boolean onContextMenu(HTMLElement element, java.awt.event.MouseEvent event)
This method must be overridden to implement a context menu.- Specified by:
onContextMenu
in interfaceHtmlRendererContext
- Parameters:
element
- The narrowest element enclosing the mouse location.event
- The mouse event.- Returns:
- The method should return true to continue propagating the event, or false to stop propagating it.
-
onMouseOut
public void onMouseOut(HTMLElement element, java.awt.event.MouseEvent event)
This method can be overridden to receive notifications when the mouse leaves an element.- Specified by:
onMouseOut
in interfaceHtmlRendererContext
- Parameters:
element
- The element that the mouse has just exited.event
- The mouse event.
-
onMouseOver
public void onMouseOver(HTMLElement element, java.awt.event.MouseEvent event)
This method can be overridden to receive notifications when the mouse first enters an element.- Specified by:
onMouseOver
in interfaceHtmlRendererContext
- Parameters:
element
- The element that the mouse has just entered.event
- The mouse event.
-
isImageLoadingEnabled
public boolean isImageLoadingEnabled()
Description copied from interface:HtmlRendererContext
This method should return true if and only if image loading needs to be enabled.- Specified by:
isImageLoadingEnabled
in interfaceHtmlRendererContext
-
onDoubleClick
public boolean onDoubleClick(HTMLElement element, java.awt.event.MouseEvent event)
Description copied from interface:HtmlRendererContext
This method is called when there's a mouse double-click on an element.- Specified by:
onDoubleClick
in interfaceHtmlRendererContext
- Parameters:
element
- The narrowest element enclosing the mouse location.event
- The mouse event.- Returns:
- The method should return true to continue propagating the event, or false to stop propagating it.
-
onMouseClick
public boolean onMouseClick(HTMLElement element, java.awt.event.MouseEvent event)
Description copied from interface:HtmlRendererContext
This method is called when there's a mouse click on an element.- Specified by:
onMouseClick
in interfaceHtmlRendererContext
- Parameters:
element
- The narrowest element enclosing the mouse location.event
- The mouse event.- Returns:
- The method should return true to continue propagating the event, or false to stop propagating it.
-
resizeBy
public void resizeBy(int byWidth, int byHeight)
Description copied from interface:HtmlRendererContext
Resizes the window.- Specified by:
resizeBy
in interfaceHtmlRendererContext
- Parameters:
byWidth
- The number of pixels to resize the width by.byHeight
- The number of pixels to resize the height by.
-
resizeTo
public void resizeTo(int width, int height)
Description copied from interface:HtmlRendererContext
Resizes the window.- Specified by:
resizeTo
in interfaceHtmlRendererContext
- Parameters:
width
- The new width.height
- The new height.
-
back
public void back()
It should navigate back one page. This implementation does nothing and should be overridden.- Specified by:
back
in interfaceHtmlRendererContext
-
forward
public void forward()
Description copied from interface:HtmlRendererContext
Goes forward one page.- Specified by:
forward
in interfaceHtmlRendererContext
-
getCurrentURL
public java.lang.String getCurrentURL()
Description copied from interface:HtmlRendererContext
Gets the current URL in history.- Specified by:
getCurrentURL
in interfaceHtmlRendererContext
-
getHistoryLength
public int getHistoryLength()
Description copied from interface:HtmlRendererContext
Gets the number of pages in the history list.- Specified by:
getHistoryLength
in interfaceHtmlRendererContext
-
getNextURL
public java.lang.String getNextURL()
Description copied from interface:HtmlRendererContext
Gets the next URL in the history.- Specified by:
getNextURL
in interfaceHtmlRendererContext
-
getPreviousURL
public java.lang.String getPreviousURL()
Description copied from interface:HtmlRendererContext
Gets the previous URL in the history.- Specified by:
getPreviousURL
in interfaceHtmlRendererContext
-
goToHistoryURL
public void goToHistoryURL(java.lang.String url)
Description copied from interface:HtmlRendererContext
Navigates to a URL in the history list.- Specified by:
goToHistoryURL
in interfaceHtmlRendererContext
-
moveInHistory
public void moveInHistory(int offset)
Description copied from interface:HtmlRendererContext
Navigates the history according to the given offset.- Specified by:
moveInHistory
in interfaceHtmlRendererContext
- Parameters:
offset
- A positive or negative number. -1 is equivalent toHtmlRendererContext.back()
. +1 is equivalent toHtmlRendererContext.forward()
.
-
-