Class Thumbelina
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- org.htmlparser.lexerapplications.thumbelina.Thumbelina
-
- All Implemented Interfaces:
java.awt.event.ItemListener
,java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,java.lang.Runnable
,java.util.EventListener
,javax.accessibility.Accessible
,javax.swing.event.ChangeListener
,javax.swing.event.ListSelectionListener
public class Thumbelina extends javax.swing.JPanel implements java.lang.Runnable, java.awt.event.ItemListener, javax.swing.event.ChangeListener, javax.swing.event.ListSelectionListener
View images behind thumbnails.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
mActive
Activity state.protected javax.swing.JCheckBox
mBackgroundToggle
Background thread checkbox in status bar.protected java.lang.String
mCurrentURL
The URL being currently being examined.protected boolean
mDiscardCGI
Iftrue
, does not follow links containing cgi calls.protected boolean
mDiscardQueries
Iftrue
, does not follow links containing queries (?).protected javax.swing.JList
mHistory
History list.protected javax.swing.JScrollPane
mHistoryScroller
Scroller for the history list.protected javax.swing.JSplitPane
mMainArea
Main panel in central area.protected PicturePanel
mPicturePanel
The central area for pictures.protected javax.swing.JScrollPane
mPicturePanelScroller
Scroller for the picture panel.protected javax.swing.JPanel
mPowerBar
Status bar.protected java.beans.PropertyChangeSupport
mPropertySupport
Bound property support.protected javax.swing.JProgressBar
mQueueProgress
Image request queue monitor in status bar.protected javax.swing.JLabel
mQueueSize
URL queue size display in status bar.protected javax.swing.JProgressBar
mReadyProgress
Image ready queue monitor in status bar.protected java.util.HashMap
mRequested
Images requested.protected javax.swing.JCheckBox
mRunToggle
Sequencer thread toggle in status bar.protected Sequencer
mSequencer
The picture sequencer.protected javax.swing.JSlider
mSpeedSlider
Sequencer speed slider in status bar.protected java.lang.Thread
mThread
Background thread.protected java.util.HashMap
mTracked
Images being tracked currently.protected javax.swing.JTextField
mUrlText
URL report in status bar.protected java.util.HashMap
mVisited
URL's visited.protected javax.swing.JLabel
mVisitedSize
URL visited count display in status bar.protected static java.net.URL[][]
NONE
Value returned when no links are discovered.static java.lang.String
PROP_CURRENT_URL_PROPERTY
Property name for current URL binding.static java.lang.String
PROP_URL_QUEUE_PROPERTY
Property name for queue size binding.static java.lang.String
PROP_URL_VISITED_PROPERTY
Property name for visited URL size binding.-
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 Thumbelina()
Creates a new instance of Thumbelina.Thumbelina(java.lang.String url)
Creates a new instance of Thumbelina.Thumbelina(java.net.URL url)
Creates a new instance of Thumbelina.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addHistory(java.lang.String url)
Adds the given url to the history list.void
addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Add a PropertyChangeListener to the listener list.void
append(java.net.URL url)
Append the given URL to the queue.void
append(java.util.ArrayList list)
Append the given URLs to the queue.protected java.net.URL[][]
extractImageLinks(Lexer lexer, java.net.URL docbase)
Get the links of an element of a document.protected void
fetch(java.net.URL[] images)
Fetch images.protected java.util.ArrayList
filter(java.net.URL[] urls)
Filter URLs and add to queue.boolean
getBackgroundThreadActive()
Gets the state of the background thread.java.lang.String
getCurrentURL()
Return the URL currently being examined.boolean
getHistoryListVisible()
Gets the state of history list visibility.protected java.net.URL[][]
getImageLinks(java.net.URL url)
Get the image links from the current URL.PicturePanel
getPicturePanel()
Get the picture panel object encapsulated by this Thumbelina.java.util.ArrayList
getQueue()
Getter for property queue.int
getQueueSize()
Getter for property queue.boolean
getSequencerActive()
Gets the state of the sequencer thread.int
getSpeed()
Get the sequencer delay time.boolean
getStatusBarVisible()
Gets the state of status bar visibility.protected static void
help()
Provide command line help.boolean
isDiscardCGI()
Getter for property discardCGI.boolean
isDiscardQueries()
Getter for property discardQueries.protected boolean
isImage(java.lang.String url)
Check if the url looks like an image.void
itemStateChanged(java.awt.event.ItemEvent event)
Handle checkbox events from the status bar.static void
main(java.lang.String[] args)
Mainline.protected void
memCheck()
Check for low memory situation.void
open(java.lang.String ref)
Open a URL.void
removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Remove a PropertyChangeListener from the listener list.void
reset()
Reset this Thumbelina.void
run()
The main processing loop.void
setBackgroundThreadActive(boolean active)
Sets the state of the background thread activity.protected void
setCurrentURL(java.lang.String url)
Set the current URL being examined.void
setDiscardCGI(boolean discard)
Setter for property discardCGI.void
setDiscardQueries(boolean discard)
Setter for property discardQueries.void
setHistoryListVisible(boolean visible)
Sets the history list visibility.void
setSequencerActive(boolean active)
Sets the sequencer activity state.void
setSpeed(int speed)
Set the sequencer delay time.void
setStatusBarVisible(boolean visible)
Sets the status bar visibility.void
stateChanged(javax.swing.event.ChangeEvent event)
Handles the speed slider events.protected void
updateQueueSize(int original, int current)
Apply a change in 'to be examined' URL list size.protected void
updateVisitedSize(int original, int current)
Apply a change in 'visited' URL list size.void
valueChanged(javax.swing.event.ListSelectionEvent event)
Handles the history list events.-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, 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
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, 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, 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, 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
-
PROP_CURRENT_URL_PROPERTY
public static final java.lang.String PROP_CURRENT_URL_PROPERTY
Property name for current URL binding.- See Also:
- Constant Field Values
-
PROP_URL_QUEUE_PROPERTY
public static final java.lang.String PROP_URL_QUEUE_PROPERTY
Property name for queue size binding.- See Also:
- Constant Field Values
-
PROP_URL_VISITED_PROPERTY
public static final java.lang.String PROP_URL_VISITED_PROPERTY
Property name for visited URL size binding.- See Also:
- Constant Field Values
-
mVisited
protected java.util.HashMap mVisited
URL's visited.
-
mRequested
protected java.util.HashMap mRequested
Images requested.
-
mTracked
protected java.util.HashMap mTracked
Images being tracked currently.
-
mThread
protected java.lang.Thread mThread
Background thread.
-
mActive
protected boolean mActive
Activity state.true
means processing URLS,false
not.
-
mSequencer
protected Sequencer mSequencer
The picture sequencer.
-
mPicturePanel
protected PicturePanel mPicturePanel
The central area for pictures.
-
NONE
protected static final java.net.URL[][] NONE
Value returned when no links are discovered.
-
mPropertySupport
protected java.beans.PropertyChangeSupport mPropertySupport
Bound property support.
-
mCurrentURL
protected java.lang.String mCurrentURL
The URL being currently being examined.
-
mDiscardCGI
protected boolean mDiscardCGI
Iftrue
, does not follow links containing cgi calls.
-
mDiscardQueries
protected boolean mDiscardQueries
Iftrue
, does not follow links containing queries (?).
-
mBackgroundToggle
protected javax.swing.JCheckBox mBackgroundToggle
Background thread checkbox in status bar.
-
mHistory
protected javax.swing.JList mHistory
History list.
-
mPicturePanelScroller
protected javax.swing.JScrollPane mPicturePanelScroller
Scroller for the picture panel.
-
mHistoryScroller
protected javax.swing.JScrollPane mHistoryScroller
Scroller for the history list.
-
mMainArea
protected javax.swing.JSplitPane mMainArea
Main panel in central area.
-
mPowerBar
protected javax.swing.JPanel mPowerBar
Status bar.
-
mQueueProgress
protected javax.swing.JProgressBar mQueueProgress
Image request queue monitor in status bar.
-
mReadyProgress
protected javax.swing.JProgressBar mReadyProgress
Image ready queue monitor in status bar.
-
mRunToggle
protected javax.swing.JCheckBox mRunToggle
Sequencer thread toggle in status bar.
-
mSpeedSlider
protected javax.swing.JSlider mSpeedSlider
Sequencer speed slider in status bar.
-
mUrlText
protected javax.swing.JTextField mUrlText
URL report in status bar.
-
mQueueSize
protected javax.swing.JLabel mQueueSize
URL queue size display in status bar.
-
mVisitedSize
protected javax.swing.JLabel mVisitedSize
URL visited count display in status bar.
-
-
Constructor Detail
-
Thumbelina
public Thumbelina()
Creates a new instance of Thumbelina.
-
Thumbelina
public Thumbelina(java.lang.String url) throws java.net.MalformedURLException
Creates a new instance of Thumbelina.- Parameters:
url
- Single URL to enter into the 'to follow' list.- Throws:
java.net.MalformedURLException
- If the url is malformed.
-
Thumbelina
public Thumbelina(java.net.URL url)
Creates a new instance of Thumbelina.- Parameters:
url
- URL to enter into the 'to follow' list.
-
-
Method Detail
-
memCheck
protected void memCheck()
Check for low memory situation. Report to the user a bad situation.
-
reset
public void reset()
Reset this Thumbelina. Clears the sequencer of pending images, resets the picture panel, emptiies the 'to be examined' list of URLs.
-
append
public void append(java.net.URL url)
Append the given URL to the queue. Adds the url only if it isn't already in the queue, and notifys listeners about the addition.- Parameters:
url
- The url to add.
-
append
public void append(java.util.ArrayList list)
Append the given URLs to the queue.- Parameters:
list
- The list of URL objects to add.
-
filter
protected java.util.ArrayList filter(java.net.URL[] urls)
Filter URLs and add to queue. Removes already visited links and appends the rest (if any) to the visit pending list.- Parameters:
urls
- The list of URL's to add to the 'to visit' list.- Returns:
- Returns the filered list.
-
getStatusBarVisible
public boolean getStatusBarVisible()
Gets the state of status bar visibility.- Returns:
true
if the status bar is visible.
-
setStatusBarVisible
public void setStatusBarVisible(boolean visible)
Sets the status bar visibility.- Parameters:
visible
- The new visibility state. Iftrue
, the status bar will be unhidden.
-
getHistoryListVisible
public boolean getHistoryListVisible()
Gets the state of history list visibility.- Returns:
true
if the history list is visible.
-
setHistoryListVisible
public void setHistoryListVisible(boolean visible)
Sets the history list visibility.- Parameters:
visible
- The new visibility state. Iftrue
, the history list will be unhidden.
-
getSequencerActive
public boolean getSequencerActive()
Gets the state of the sequencer thread.- Returns:
true
if the thread is pumping images.
-
setSequencerActive
public void setSequencerActive(boolean active)
Sets the sequencer activity state. The sequencer is the thread that moves images from the pending list to the picture panel on a timed basis.- Parameters:
active
- The new activity state. Iftrue
, the sequencer will be turned on. This may alter the speed setting if it is set to zero.
-
getBackgroundThreadActive
public boolean getBackgroundThreadActive()
Gets the state of the background thread.- Returns:
true
if the thread is examining web pages.
-
setBackgroundThreadActive
public void setBackgroundThreadActive(boolean active)
Sets the state of the background thread activity. The background thread is responsible for examining URLs that are on the queue for thumbnails, and starting the image fetch operation.- Parameters:
active
- Iftrue
, the background thread will be turned on.
-
getSpeed
public int getSpeed()
Get the sequencer delay time.- Returns:
- The number of milliseconds between image additions to the panel.
-
setSpeed
public void setSpeed(int speed)
Set the sequencer delay time. The sequencer is the thread that moves images from the pending list to the picture panel on a timed basis. This value sets the number of milliseconds it waits between pictures. Setting it to zero toggles the running state off.- Parameters:
speed
- The sequencer delay in milliseconds.
-
isDiscardCGI
public boolean isDiscardCGI()
Getter for property discardCGI.- Returns:
- Value of property discardCGI.
-
setDiscardCGI
public void setDiscardCGI(boolean discard)
Setter for property discardCGI.- Parameters:
discard
- New value of property discardCGI.
-
isDiscardQueries
public boolean isDiscardQueries()
Getter for property discardQueries.- Returns:
- Value of property discardQueries.
-
setDiscardQueries
public void setDiscardQueries(boolean discard)
Setter for property discardQueries.- Parameters:
discard
- New value of property discardQueries.
-
isImage
protected boolean isImage(java.lang.String url)
Check if the url looks like an image.- Parameters:
url
- The usrl to check for image characteristics.- Returns:
true
if the url ends in a recognized image extension.
-
extractImageLinks
protected java.net.URL[][] extractImageLinks(Lexer lexer, java.net.URL docbase) throws java.io.IOException, ParserException
Get the links of an element of a document. Only gets the links on IMG elements that reference another image. The latter is based on suffix (.jpg, .gif and .png).- Parameters:
lexer
- The fully conditioned lexer, ready to rock.docbase
- The url to read.- Returns:
- The URLs, targets of the IMG links;
- Throws:
java.io.IOException
- If the underlying infrastructure throws it.ParserException
- If there is a problem parsing the url.
-
getImageLinks
protected java.net.URL[][] getImageLinks(java.net.URL url)
Get the image links from the current URL.- Parameters:
url
- The URL to get the links from- Returns:
- An array of two URL arrays, index 0 is a list of images, index 1 is a list of links to possibly follow.
-
getPicturePanel
public PicturePanel getPicturePanel()
Get the picture panel object encapsulated by this Thumbelina.- Returns:
- The picture panel.
-
addPropertyChangeListener
public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Add a PropertyChangeListener to the listener list. The listener is registered for all properties.- Overrides:
addPropertyChangeListener
in classjava.awt.Container
- Parameters:
listener
- The PropertyChangeListener to be added.
-
removePropertyChangeListener
public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Remove a PropertyChangeListener from the listener list. This removes a PropertyChangeListener that was registered for all properties.- Overrides:
removePropertyChangeListener
in classjava.awt.Component
- Parameters:
listener
- The PropertyChangeListener to be removed.
-
getCurrentURL
public java.lang.String getCurrentURL()
Return the URL currently being examined. This is a bound property. Notifications are available via the PROP_CURRENT_URL_PROPERTY property.- Returns:
- The size of the 'to be examined' list.
-
setCurrentURL
protected void setCurrentURL(java.lang.String url)
Set the current URL being examined.- Parameters:
url
- The url that is being examined.
-
updateQueueSize
protected void updateQueueSize(int original, int current)
Apply a change in 'to be examined' URL list size. Sends notification via thePROP_URL_QUEUE_PROPERTY
property and updates the status bar.- Parameters:
original
- The original size of the list.current
- The new size of the list.
-
updateVisitedSize
protected void updateVisitedSize(int original, int current)
Apply a change in 'visited' URL list size. Sends notification via thePROP_URL_VISITED_PROPERTY
property and updates the status bar.- Parameters:
original
- The original size of the list.current
- The new size of the list.
-
fetch
protected void fetch(java.net.URL[] images)
Fetch images. Ask the toolkit to make the image from a URL, and add a tracker to handle it when it's received. Add details to the rquested and tracked lists and update the status bar.- Parameters:
images
- The list of images to fetch.
-
run
public void run()
The main processing loop. Pull suspect URLs off the queue one at a time, fetch and parse it, request images and enqueue further links.- Specified by:
run
in interfacejava.lang.Runnable
-
itemStateChanged
public void itemStateChanged(java.awt.event.ItemEvent event)
Handle checkbox events from the status bar. Based on the thread toggles, activates or deactivates the background thread processes.- Specified by:
itemStateChanged
in interfacejava.awt.event.ItemListener
- Parameters:
event
- The event describing the checkbox event.
-
stateChanged
public void stateChanged(javax.swing.event.ChangeEvent event)
Handles the speed slider events.- Specified by:
stateChanged
in interfacejavax.swing.event.ChangeListener
- Parameters:
event
- The event describing the slider activity.
-
valueChanged
public void valueChanged(javax.swing.event.ListSelectionEvent event)
Handles the history list events.- Specified by:
valueChanged
in interfacejavax.swing.event.ListSelectionListener
- Parameters:
event
- The event describing the list activity.
-
addHistory
public void addHistory(java.lang.String url)
Adds the given url to the history list. Also puts the URL in the url text of the status bar.- Parameters:
url
- The URL to add to the history list.
-
open
public void open(java.lang.String ref)
Open a URL. Resets the urls list and appends the given url as the only item.- Parameters:
ref
- The URL to add.
-
help
protected static void help()
Provide command line help.
-
main
public static void main(java.lang.String[] args)
Mainline.- Parameters:
args
- the command line arguments. Can be one or more forms of -help to get command line help, or a URL to prime the program with. Checks for JDK 1.4 and if not found runs in crippled mode (no ThumbelinaFrame).
-
getQueue
public java.util.ArrayList getQueue()
Getter for property queue.- Returns:
- List of URLs that are to be visited.
-
getQueueSize
public int getQueueSize()
Getter for property queue. This is a bound property. Notifications are available via thePROP_URL_QUEUE_PROPERTY
property.- Returns:
- The size of the list of URLs that are to be visited.
-
-