jsky.util.gui
Class ProgressPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by jsky.util.gui.ProgressPanel
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, StatusLogger

public class ProgressPanel
extends javax.swing.JPanel
implements java.awt.event.ActionListener, StatusLogger

A panel to display while a download or other background operation is in progress.

This class is designed to be usable from any thread and all GUI access is done synchronously in the event dispatching thread.

Version:
$Revision: 1.1 $
Author:
Allan Brighton
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
 
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
 
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
ProgressPanel()
          Default constructor
ProgressPanel(java.awt.Component parent, java.lang.String title)
          Initialize a progress panel with the given title string.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
          Called when the Stop button is pressed.
 void addActionListener(java.awt.event.ActionListener l)
          Add a listener to be called when the user presses the stop button.
 ProgressBarFilterInputStream getLoggedInputStream(java.io.InputStream in, int size)
          Return a input stream that will generate log messages showing the progress of the read from the given stream.
 ProgressBarFilterInputStream getLoggedInputStream(java.net.URL url)
          Return an input stream to use for reading from the given URL that will generate log messages showing the progress of the read.
 StatusPanel getStatusPanel()
          Return the status panel (displays the progress bar and text field).
 javax.swing.JButton getStopButton()
          Return the dialog stop button
protected  void init()
          Initialize the progreass panel.
protected static void invokeAndWait(java.lang.Runnable r)
          Run the given Runnable synchronously in the event dispatching thread.
 boolean isInterrupted()
          Return true if the stop button was pressed
 void logMessage(java.lang.String msg)
          Log or display the given message
static ProgressPanel makeProgressPanel()
          Make a ProgressPanel and frame (or internal frame) and return the panel.
static ProgressPanel makeProgressPanel(java.lang.String title)
          Make a ProgressPanel and frame (or internal frame) and return the panel.
static ProgressPanel makeProgressPanel(java.lang.String title, java.awt.Component window)
          Make a ProgressPanel and frame (or internal frame) and return the panel.
 java.net.URLConnection openConnection(java.net.URL url)
          Return a connection to the given URL and log messages before and after opening the connection.
 void setParent(java.awt.Component parent)
          Set the parent frame or internal frame, used to close the window
 void setProgress(int percent)
          Set the percent done.
 void setText(java.lang.String s)
          Set the status text to display.
 void setTitle(java.lang.String title)
          Set the title string.
 void start()
          Display the progress panel.
 void stop()
          Stop displaying the progress panel.
 void stopLoggingInputStream(ProgressBarFilterInputStream in)
          Stop logging reads from the input stream returned from an earlier call to getLoggedInputStream().
 
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, 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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, 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, 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
 

Constructor Detail

ProgressPanel

public ProgressPanel(java.awt.Component parent,
                     java.lang.String title)
Initialize a progress panel with the given title string.

Parameters:
parent - the parent frame or internal frame, used to close the window
title - the title string

ProgressPanel

public ProgressPanel()
Default constructor

Method Detail

getStopButton

public javax.swing.JButton getStopButton()
Return the dialog stop button


init

protected void init()
Initialize the progreass panel. This method may be called from any thread, but will always run in the event dispatching thread.


invokeAndWait

protected static void invokeAndWait(java.lang.Runnable r)
Run the given Runnable synchronously in the event dispatching thread.


setParent

public void setParent(java.awt.Component parent)
Set the parent frame or internal frame, used to close the window


setTitle

public void setTitle(java.lang.String title)
Set the title string.


logMessage

public void logMessage(java.lang.String msg)
Log or display the given message

Specified by:
logMessage in interface StatusLogger

setText

public void setText(java.lang.String s)
Set the status text to display.


addActionListener

public void addActionListener(java.awt.event.ActionListener l)
Add a listener to be called when the user presses the stop button.


getStatusPanel

public StatusPanel getStatusPanel()
Return the status panel (displays the progress bar and text field).


actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)
Called when the Stop button is pressed.

Specified by:
actionPerformed in interface java.awt.event.ActionListener

isInterrupted

public boolean isInterrupted()
Return true if the stop button was pressed


openConnection

public java.net.URLConnection openConnection(java.net.URL url)
                                      throws java.io.IOException
Return a connection to the given URL and log messages before and after opening the connection.

Specified by:
openConnection in interface StatusLogger
Throws:
java.io.IOException

start

public void start()
Display the progress panel. This method may be called from any thread, but will always run in the event dispatching thread.


stop

public void stop()
Stop displaying the progress panel. This method may be called from any thread, but will always run in the event dispatching thread.


makeProgressPanel

public static ProgressPanel makeProgressPanel(java.lang.String title,
                                              java.awt.Component window)
Make a ProgressPanel and frame (or internal frame) and return the panel.

Parameters:
title - the title string
window - window to display the dialog over, may be null

makeProgressPanel

public static ProgressPanel makeProgressPanel(java.lang.String title)
Make a ProgressPanel and frame (or internal frame) and return the panel.

Parameters:
title - the title string

makeProgressPanel

public static ProgressPanel makeProgressPanel()
Make a ProgressPanel and frame (or internal frame) and return the panel.


setProgress

public void setProgress(int percent)
Set the percent done. A 0 value resets the bar and hides the percent value.

Specified by:
setProgress in interface StatusLogger

getLoggedInputStream

public ProgressBarFilterInputStream getLoggedInputStream(java.io.InputStream in,
                                                         int size)
                                                  throws java.io.IOException
Return a input stream that will generate log messages showing the progress of the read from the given stream.

Specified by:
getLoggedInputStream in interface StatusLogger
Parameters:
in - the input stream to be monitored
size - the size in bytes of the date to be read, or 0 if not known
Throws:
java.io.IOException

getLoggedInputStream

public ProgressBarFilterInputStream getLoggedInputStream(java.net.URL url)
                                                  throws java.io.IOException
Return an input stream to use for reading from the given URL that will generate log messages showing the progress of the read.

Specified by:
getLoggedInputStream in interface StatusLogger
Parameters:
url - the URL to read
Throws:
java.io.IOException

stopLoggingInputStream

public void stopLoggingInputStream(ProgressBarFilterInputStream in)
                            throws java.io.IOException
Stop logging reads from the input stream returned from an earlier call to getLoggedInputStream().

Specified by:
stopLoggingInputStream in interface StatusLogger
Parameters:
in - an input stream returned from getLoggedInputStream()
Throws:
java.io.IOException