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:
ActionListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, StatusLogger

public class ProgressPanel
extends JPanel
implements 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 threadand all GUI access is done synchronously in the event dispatching thread.

Version:
$Revision: 1.7 $
Author:
Allan Brighton
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  JLabel iconLabel
          Displays the active GIF icon
protected  boolean interrupted
          Set to true if the stop button was pressed
protected  ProgressBarFilterInputStream loggedInputStream
          If set, this is the current input stream being monitored
protected static ProgressPanel newPanel
          Used to create a new progress panel in the event dispatching thread
protected  Component parent
          Parent of this window (frame or internal frame), used to close the window
protected  StatusPanel statusPanel
          Displays the progress bar and status text
protected  JButton stopButton
          Button to interrupt the task
protected  String title
          The title string
protected  JLabel titleLabel
          Displays the title
 
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(Component parent, String title)
          Initialize a progress panel with the given title string.
 
Method Summary
 void actionPerformed(ActionEvent e)
          Called when the Stop button is pressed.
 void addActionListener(ActionListener l)
          Add a listener to be called when the user presses the stop button.
 ProgressBarFilterInputStream getLoggedInputStream(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(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).
protected  void init()
          Initialize the progreass panel.
protected static void invokeAndWait(Runnable r)
          Run the given Runnable synchronously in the event dispatching thread.
 boolean isInterrupted()
          Return true if the stop button was pressed
 void logMessage(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(String title)
          Make a ProgressPanel and frame (or internal frame) and return the panel.
static ProgressPanel makeProgressPanel(String title, Component window)
          Make a ProgressPanel and frame (or internal frame) and return the panel.
 URLConnection openConnection(URL url)
          Return a connection to the given URL and log messages before and after opening the connection.
 void setParent(Component parent)
          Set the parent frame or internal frame, used to close the window
 void setProgress(int percent)
          Set the percent done.
 void setText(String s)
          Set the status text to display.
 void setTitle(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
 

Field Detail

parent

protected Component parent
Parent of this window (frame or internal frame), used to close the window


title

protected String title
The title string


titleLabel

protected JLabel titleLabel
Displays the title


iconLabel

protected JLabel iconLabel
Displays the active GIF icon


stopButton

protected JButton stopButton
Button to interrupt the task


statusPanel

protected StatusPanel statusPanel
Displays the progress bar and status text


loggedInputStream

protected ProgressBarFilterInputStream loggedInputStream
If set, this is the current input stream being monitored


interrupted

protected boolean interrupted
Set to true if the stop button was pressed


newPanel

protected static ProgressPanel newPanel
Used to create a new progress panel in the event dispatching thread

Constructor Detail

ProgressPanel

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

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

ProgressPanel

public ProgressPanel()
Default constructor

Method Detail

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(Runnable r)
Run the given Runnable synchronously in the event dispatching thread.


setParent

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


setTitle

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


logMessage

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

Specified by:
logMessage in interface StatusLogger

setText

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


addActionListener

public void addActionListener(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(ActionEvent e)
Called when the Stop button is pressed.

Specified by:
actionPerformed in interface ActionListener

isInterrupted

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


openConnection

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

Specified by:
openConnection in interface StatusLogger
Throws:
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(String title,
                                              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(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.

Parameters:
the - title string

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(InputStream in,
                                                         int size)
                                                  throws 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:
IOException

getLoggedInputStream

public ProgressBarFilterInputStream getLoggedInputStream(URL url)
                                                  throws 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:
IOException

stopLoggingInputStream

public void stopLoggingInputStream(ProgressBarFilterInputStream in)
                            throws 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:
IOException


Copyright © 2015 Central Laboratory of the Research Councils. All Rights Reserved.