org.lobobrowser.html.gui
Class HtmlPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by 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

The HtmlPanel class is a Swing component that can render a HTML DOM. It uses either HtmlBlockPanel or FrameSetPanel internally, 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

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  FrameSetPanel frameSetPanel
           
protected  HtmlBlockPanel htmlBlockPanel
           
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
HtmlPanel()
          Constructs an HtmlPanel.
 
Method Summary
 void addSelectionChangeListener(SelectionChangeListener listener)
          Adds listener of selection changes.
 void clearDocument()
          Clears the current document if any.
 boolean copy()
          Copies the current selection, if any, into the clipboard.
protected  FrameSetPanel createFrameSetPanel()
          Method invoked internally to create a FrameSetPanel.
protected  HtmlBlockPanel createHtmlBlockPanel(UserAgentContext ucontext, HtmlRendererContext rcontext)
          Method invoked internally to create a HtmlBlockPanel.
 void delayedRelayout(NodeImpl node)
          Invalidates the layout of the given node and schedules it to be layed out later.
 void expandSelection(RenderableSpot rpoint)
          Internal method used to expand the selection to the given point.
 BoundableRenderable getBlockRenderable()
          Gets the root Renderable of the HTML block.
 FrameSetPanel getFrameSetPanel()
          Gets an instance of FrameSetPanel in case the currently rendered page is a FRAMESET.
 NodeImpl getRootNode()
          Gets the HTML DOM node currently rendered if any.
 org.w3c.dom.Node getSelectionNode()
          Gets a DOM node enclosing the selection.
 java.lang.String getSelectionText()
          Gets the selection text.
 boolean hasSelection()
          Returns true only if the current block has a selection.
 void removeSelectionChangeListener(SelectionChangeListener listener)
          Removes a listener of selection changes that was previously added.
 void resetSelection(RenderableSpot rpoint)
          Internal method used to reset the selection so that it is empty at the given point.
 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.
 void scrollBy(int x, int y)
           
 void scrollTo(org.w3c.dom.Node node)
          Scrolls the body area to the node given, if it is part of the current document.
 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.
 void scrollToElement(java.lang.String nameOrId)
          Scrolls to the element identified by the given ID in the current document.
 void setDefaultMarginInsets(java.awt.Insets insets)
          Sets the default margin insets.
 void setDefaultOverflowX(int overflow)
          Sets the default horizontal overflow.
 void setDefaultOverflowY(int overflow)
          Sets the default vertical overflow.
 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.
 void setHtml(java.lang.String htmlSource, java.lang.String uri, HtmlRendererContext rcontext)
          Renders HTML given as a string.
 void setPreferredWidth(int width)
          Sets a preferred width that serves as a hint in calculating the preferred size of the HtmlPanel.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, 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, transferFocusBackward, 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, 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

htmlBlockPanel

protected volatile HtmlBlockPanel htmlBlockPanel

frameSetPanel

protected volatile FrameSetPanel frameSetPanel
Constructor Detail

HtmlPanel

public HtmlPanel()
Constructs an HtmlPanel.

Method Detail

setPreferredWidth

public void setPreferredWidth(int width)
Sets a preferred width that serves as a hint in calculating the preferred size of the HtmlPanel. 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 -1 to 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 root Renderable of the HTML block. It returns null for FRAMESETs.


getFrameSetPanel

public FrameSetPanel getFrameSetPanel()
Gets an instance of FrameSetPanel in case the currently rendered page is a FRAMESET.

Note: This method should be invoked in the GUI thread.

Returns:
A FrameSetPanel instance or null if the document currently rendered is not a FRAMESET.

createHtmlBlockPanel

protected HtmlBlockPanel createHtmlBlockPanel(UserAgentContext ucontext,
                                              HtmlRendererContext rcontext)
Method invoked internally to create a HtmlBlockPanel. It is made available so it can be overridden.


createFrameSetPanel

protected FrameSetPanel createFrameSetPanel()
Method invoked internally to create a FrameSetPanel. 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 size calculations should be done in the GUI dispatch thread for this reason.

Parameters:
node - This should normally be a Document instance obtained with DocumentBuilderImpl.

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 - The HtmlRendererContext instance.
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:
expandSelection in interface FrameContext

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:
resetSelection in interface FrameContext

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 null if there is no such node. It also returns null for 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 of SelectionChangeListener.

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 - See RenderState.

setDefaultOverflowY

public void setDefaultOverflowY(int overflow)
Sets the default vertical overflow.

This method has no effect on FRAMESETs.

Parameters:
overflow - See RenderState.

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:
delayedRelayout in interface FrameContext


SourceForge.net LogoCopyright © 2005, 2006, 2007 The Lobo Project. All Rights Reserved.
[Cobra Project Home]