All Implemented Interfaces:
ItemListener, ImageObserver, MenuContainer, Serializable, Runnable, EventListener, Accessible, ChangeListener, ListSelectionListener

public class Thumbelina extends JPanel implements Runnable, ItemListener, ChangeListener, ListSelectionListener
View images behind thumbnails.
See Also:
  • Field Details

    • PROP_CURRENT_URL_PROPERTY

      public static final String PROP_CURRENT_URL_PROPERTY
      Property name for current URL binding.
      See Also:
    • PROP_URL_QUEUE_PROPERTY

      public static final String PROP_URL_QUEUE_PROPERTY
      Property name for queue size binding.
      See Also:
    • PROP_URL_VISITED_PROPERTY

      public static final String PROP_URL_VISITED_PROPERTY
      Property name for visited URL size binding.
      See Also:
    • mVisited

      protected HashMap mVisited
      URL's visited.
    • mRequested

      protected HashMap mRequested
      Images requested.
    • mTracked

      protected HashMap mTracked
      Images being tracked currently.
    • mThread

      protected 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 URL[][] NONE
      Value returned when no links are discovered.
    • mPropertySupport

      protected PropertyChangeSupport mPropertySupport
      Bound property support.
    • mCurrentURL

      protected String mCurrentURL
      The URL being currently being examined.
    • mDiscardCGI

      protected boolean mDiscardCGI
      If true, does not follow links containing cgi calls.
    • mDiscardQueries

      protected boolean mDiscardQueries
      If true, does not follow links containing queries (?).
    • mBackgroundToggle

      protected JCheckBox mBackgroundToggle
      Background thread checkbox in status bar.
    • mHistory

      protected JList mHistory
      History list.
    • mPicturePanelScroller

      protected JScrollPane mPicturePanelScroller
      Scroller for the picture panel.
    • mHistoryScroller

      protected JScrollPane mHistoryScroller
      Scroller for the history list.
    • mMainArea

      protected JSplitPane mMainArea
      Main panel in central area.
    • mPowerBar

      protected JPanel mPowerBar
      Status bar.
    • mQueueProgress

      protected JProgressBar mQueueProgress
      Image request queue monitor in status bar.
    • mReadyProgress

      protected JProgressBar mReadyProgress
      Image ready queue monitor in status bar.
    • mRunToggle

      protected JCheckBox mRunToggle
      Sequencer thread toggle in status bar.
    • mSpeedSlider

      protected JSlider mSpeedSlider
      Sequencer speed slider in status bar.
    • mUrlText

      protected JTextField mUrlText
      URL report in status bar.
    • mQueueSize

      protected JLabel mQueueSize
      URL queue size display in status bar.
    • mVisitedSize

      protected JLabel mVisitedSize
      URL visited count display in status bar.
  • Constructor Details

    • Thumbelina

      public Thumbelina()
      Creates a new instance of Thumbelina.
    • Thumbelina

      public Thumbelina(String url) throws MalformedURLException
      Creates a new instance of Thumbelina.
      Parameters:
      url - Single URL to enter into the 'to follow' list.
      Throws:
      MalformedURLException - If the url is malformed.
    • Thumbelina

      public Thumbelina(URL url)
      Creates a new instance of Thumbelina.
      Parameters:
      url - URL to enter into the 'to follow' list.
  • Method Details

    • 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(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(ArrayList list)
      Append the given URLs to the queue.
      Parameters:
      list - The list of URL objects to add.
    • filter

      protected ArrayList filter(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. If true, 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. If true, 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. If true, 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 - If true, 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(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 URL[][] extractImageLinks(Lexer lexer, URL docbase) throws 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:
      IOException - If the underlying infrastructure throws it.
      ParserException - If there is a problem parsing the url.
    • getImageLinks

      protected URL[][] getImageLinks(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(PropertyChangeListener listener)
      Add a PropertyChangeListener to the listener list. The listener is registered for all properties.
      Overrides:
      addPropertyChangeListener in class Container
      Parameters:
      listener - The PropertyChangeListener to be added.
    • removePropertyChangeListener

      public void removePropertyChangeListener(PropertyChangeListener listener)
      Remove a PropertyChangeListener from the listener list. This removes a PropertyChangeListener that was registered for all properties.
      Overrides:
      removePropertyChangeListener in class Component
      Parameters:
      listener - The PropertyChangeListener to be removed.
    • getCurrentURL

      public 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(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 the PROP_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 the PROP_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(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 interface Runnable
    • itemStateChanged

      public void itemStateChanged(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 interface ItemListener
      Parameters:
      event - The event describing the checkbox event.
    • stateChanged

      public void stateChanged(ChangeEvent event)
      Handles the speed slider events.
      Specified by:
      stateChanged in interface ChangeListener
      Parameters:
      event - The event describing the slider activity.
    • valueChanged

      public void valueChanged(ListSelectionEvent event)
      Handles the history list events.
      Specified by:
      valueChanged in interface ListSelectionListener
      Parameters:
      event - The event describing the list activity.
    • addHistory

      public void addHistory(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(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(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 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 the PROP_URL_QUEUE_PROPERTY property.
      Returns:
      The size of the list of URLs that are to be visited.