Class HtmlPanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- org.lobobrowser.html.gui.HtmlPanel
-
- All Implemented Interfaces:
java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable,FrameContext
- Direct Known Subclasses:
SimpleBrowserFrame
public class HtmlPanel extends javax.swing.JComponent implements FrameContext
TheHtmlPanelclass is a Swing component that can render a HTML DOM. It uses eitherHtmlBlockPanelorFrameSetPanelinternally, depending on whether the document is determined to be a FRAMESET or not.Invoke method
setDocument(Document, HtmlRendererContext)in order to schedule a document for rendering.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected FrameSetPanelframeSetPanelprotected HtmlBlockPanelhtmlBlockPanel-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description HtmlPanel()Constructs anHtmlPanel.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddSelectionChangeListener(SelectionChangeListener listener)Adds listener of selection changes.voidclearDocument()Clears the current document if any.booleancopy()Copies the current selection, if any, into the clipboard.protected FrameSetPanelcreateFrameSetPanel()Method invoked internally to create aFrameSetPanel.protected HtmlBlockPanelcreateHtmlBlockPanel(UserAgentContext ucontext, HtmlRendererContext rcontext)Method invoked internally to create aHtmlBlockPanel.voiddelayedRelayout(NodeImpl node)Invalidates the layout of the given node and schedules it to be layed out later.voidexpandSelection(RenderableSpot rpoint)Internal method used to expand the selection to the given point.BoundableRenderablegetBlockRenderable()Gets the rootRenderableof the HTML block.FrameSetPanelgetFrameSetPanel()Gets an instance ofFrameSetPanelin case the currently rendered page is a FRAMESET.NodeImplgetRootNode()Gets the HTML DOM node currently rendered if any.org.w3c.dom.NodegetSelectionNode()Gets a DOM node enclosing the selection.java.lang.StringgetSelectionText()Gets the selection text.booleanhasSelection()Returns true only if the current block has a selection.voidremoveSelectionChangeListener(SelectionChangeListener listener)Removes a listener of selection changes that was previously added.voidresetSelection(RenderableSpot rpoint)Internal method used to reset the selection so that it is empty at the given point.voidscroll(int x, int y)Scrolls the document such that x and y coordinates are placed in the upper-left corner of the panel.voidscrollBy(int x, int y)voidscrollTo(java.awt.Rectangle bounds, boolean xIfNeeded, boolean yIfNeeded)If the current document is not a FRAMESET, this method scrolls the body area to the given location.voidscrollTo(org.w3c.dom.Node node)Scrolls the body area to the node given, if it is part of the current document.voidscrollToElement(java.lang.String nameOrId)Scrolls to the element identified by the given ID in the current document.voidsetDefaultMarginInsets(java.awt.Insets insets)Sets the default margin insets.voidsetDefaultOverflowX(int overflow)Sets the default horizontal overflow.voidsetDefaultOverflowY(int overflow)Sets the default vertical overflow.voidsetDocument(org.w3c.dom.Document node, HtmlRendererContext rcontext)Sets an HTML DOM node and invalidates the component so it is rendered as soon as possible in the GUI thread.voidsetHtml(java.lang.String htmlSource, java.lang.String uri, HtmlRendererContext rcontext)Renders HTML given as a string.voidsetPreferredWidth(int width)Sets a preferred width that serves as a hint in calculating the preferred size of theHtmlPanel.-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
htmlBlockPanel
protected volatile HtmlBlockPanel htmlBlockPanel
-
frameSetPanel
protected volatile FrameSetPanel frameSetPanel
-
-
Method Detail
-
setPreferredWidth
public void setPreferredWidth(int width)
Sets a preferred width that serves as a hint in calculating the preferred size of theHtmlPanel. Note that the preferred size can only be calculated when a document is available, and it will vary during incremental rendering.This method currently does not have any effect when the document is a FRAMESET.
Note also that setting the preferred width (to a value other than
-1) will negatively impact performance.- Parameters:
width- The preferred width, or-1to unset.
-
scrollTo
public void scrollTo(java.awt.Rectangle bounds, boolean xIfNeeded, boolean yIfNeeded)If the current document is not a FRAMESET, this method scrolls the body area to the given location.This method should be called from the GUI thread.
- Parameters:
bounds- The bounds in the scrollable block area that should become visible.xIfNeeded- If this parameter is true, scrolling will only occur if the requested bounds are not currently visible horizontally.yIfNeeded- If this parameter is true, scrolling will only occur if the requested bounds are not currently visible vertically.
-
scrollTo
public void scrollTo(org.w3c.dom.Node node)
Scrolls the body area to the node given, if it is part of the current document.This method should be called from the GUI thread.
- Parameters:
node- A DOM node.
-
getBlockRenderable
public BoundableRenderable getBlockRenderable()
Gets the rootRenderableof the HTML block. It returnsnullfor FRAMESETs.
-
getFrameSetPanel
public FrameSetPanel getFrameSetPanel()
Gets an instance ofFrameSetPanelin case the currently rendered page is a FRAMESET.Note: This method should be invoked in the GUI thread.
- Returns:
- A
FrameSetPanelinstance ornullif the document currently rendered is not a FRAMESET.
-
createHtmlBlockPanel
protected HtmlBlockPanel createHtmlBlockPanel(UserAgentContext ucontext, HtmlRendererContext rcontext)
Method invoked internally to create aHtmlBlockPanel. It is made available so it can be overridden.
-
createFrameSetPanel
protected FrameSetPanel createFrameSetPanel()
Method invoked internally to create aFrameSetPanel. It is made available so it can be overridden.
-
scroll
public void scroll(int x, int y)Scrolls the document such that x and y coordinates are placed in the upper-left corner of the panel.This method may be called outside of the GUI Thread.
- Parameters:
x- The x coordinate.y- The y coordinate.
-
scrollBy
public void scrollBy(int x, int y)
-
clearDocument
public void clearDocument()
Clears the current document if any. If called outside the GUI thread, the operation will be scheduled to be performed in the GUI thread.
-
setDocument
public void setDocument(org.w3c.dom.Document node, HtmlRendererContext rcontext)Sets an HTML DOM node and invalidates the component so it is rendered as soon as possible in the GUI thread.If this method is called from a thread that is not the GUI dispatch thread, the document is scheduled to be set later. Note that
preferred sizecalculations should be done in the GUI dispatch thread for this reason.- Parameters:
node- This should normally be a Document instance obtained withDocumentBuilderImpl.rcontext- A renderer context.- See Also:
DocumentBuilderImpl.parse(org.xml.sax.InputSource),SimpleHtmlRendererContext
-
scrollToElement
public void scrollToElement(java.lang.String nameOrId)
Scrolls to the element identified by the given ID in the current document.If this method is invoked outside the GUI thread, the operation is scheduled to be performed as soon as possible in the GUI thread.
- Parameters:
nameOrId- The name or ID of the element in the document.
-
setHtml
public void setHtml(java.lang.String htmlSource, java.lang.String uri, HtmlRendererContext rcontext)Renders HTML given as a string.- Parameters:
htmlSource- The HTML source code.uri- A base URI used to resolve item URIs.rcontext- TheHtmlRendererContextinstance.- See Also:
SimpleHtmlRendererContext,setDocument(Document, HtmlRendererContext)
-
getRootNode
public NodeImpl getRootNode()
Gets the HTML DOM node currently rendered if any.
-
expandSelection
public void expandSelection(RenderableSpot rpoint)
Internal method used to expand the selection to the given point.Note: This method should be invoked in the GUI thread.
- Specified by:
expandSelectionin interfaceFrameContext
-
resetSelection
public void resetSelection(RenderableSpot rpoint)
Internal method used to reset the selection so that it is empty at the given point. This is what is called when the user clicks on a point in the document.Note: This method should be invoked in the GUI thread.
- Specified by:
resetSelectionin interfaceFrameContext
-
getSelectionText
public java.lang.String getSelectionText()
Gets the selection text.Note: This method should be invoked in the GUI thread.
-
getSelectionNode
public org.w3c.dom.Node getSelectionNode()
Gets a DOM node enclosing the selection. The node returned should be the inner-most node that encloses both selection start and end points. Note that the selection end point may be just outside of the selection.Note: This method should be invoked in the GUI thread.
- Returns:
- A node enclosing the current selection, or
nullif there is no such node. It also returnsnullfor FRAMESETs.
-
hasSelection
public boolean hasSelection()
Returns true only if the current block has a selection. This method has no effect in FRAMESETs at the moment.
-
copy
public boolean copy()
Copies the current selection, if any, into the clipboard. This method has no effect in FRAMESETs at the moment.
-
addSelectionChangeListener
public void addSelectionChangeListener(SelectionChangeListener listener)
Adds listener of selection changes. Note that it does not have any effect on FRAMESETs.- Parameters:
listener- An instance ofSelectionChangeListener.
-
removeSelectionChangeListener
public void removeSelectionChangeListener(SelectionChangeListener listener)
Removes a listener of selection changes that was previously added.
-
setDefaultMarginInsets
public void setDefaultMarginInsets(java.awt.Insets insets)
Sets the default margin insets. Note that in the root block, the margin behaves like padding.This method has no effect on FRAMESETs.
- Parameters:
insets- The default margin insets.
-
setDefaultOverflowX
public void setDefaultOverflowX(int overflow)
Sets the default horizontal overflow.This method has no effect on FRAMESETs.
- Parameters:
overflow- SeeRenderState.
-
setDefaultOverflowY
public void setDefaultOverflowY(int overflow)
Sets the default vertical overflow.This method has no effect on FRAMESETs.
- Parameters:
overflow- SeeRenderState.
-
delayedRelayout
public void delayedRelayout(NodeImpl node)
Invalidates the layout of the given node and schedules it to be layed out later. Multiple invalidations may be processed in a single document layout.- Specified by:
delayedRelayoutin interfaceFrameContext
-
-