com.dlsc.flexgantt.swing.util

## Class InfiniteProgressPanel

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - com.dlsc.flexgantt.swing.util.InfiniteProgressPanel

- All Implemented Interfaces:
    MouseListener, ImageObserver, MenuContainer, Serializable, EventListener
  Direct Known Subclasses:
    GanttChartGlassPane

      public class InfiniteProgressPanel
      extends JComponent
      implements MouseListener

  An infinite progress panel displays a rotating figure and a message to notice the user of a long, duration unknown task. The shape and the text are drawn upon a white veil which alpha level (or shield value) lets the underlying component shine through. This panel is meant to be used as a glass pane in the window performing the long operation.
  On the contrary to regular glass panes, you don't need to set it visible or not by yourself. Once you've started the animation all the mouse events are intercepted by this panel, preventing them from being forwared to the underlying components.
  The panel can be controlled by the `start()`, `stop()` and `interrupt()` methods.
  Example:

       InfiniteProgressPanel pane = new InfiniteProgressPanel();
       frame.setGlassPane(pane);
       pane.start()

  Several properties can be configured at creation time. The message and its font can be changed at runtime. Changing the font can be done using `setFont()` and `setForeground()`.
  Version:
    1.0
  Author:
    Romain Guy
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### 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.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `alphaLevel` Alpha level of the veil, used for fade in/out.
    `protected Thread` | `animation` The animation thread is responsible for fade in/out and rotation.
    `protected int` | `barsCount` Amount of bars composing the circular shape.
    `protected float` | `fps` Amount of frames per seconde.
    `protected RenderingHints` | `hints` Rendering hints to set anti aliasing.
    `protected int` | `rampDelay` Duration of the veil's fade in/out.
    `protected float` | `shield` Alpha level of the veil.
    `protected boolean` | `started` Notifies whether the animation is running or not.
    `protected String` | `text` Message displayed below the circular shape.
    `protected Area[]` | `ticker` Contains the bars composing the circular shape.

    - ### 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`

    - ### Fields inherited from class java.awt.Component

      `accessibleContext, 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

    Constructors
    Constructor and Description
    `InfiniteProgressPanel()` Creates a new progress panel with default values: No message 14 bars Veil's alpha level is 70% 15 frames per second Fade in/out last 300 ms
    `InfiniteProgressPanel(String text)` Creates a new progress panel with default values: 14 bars Veil's alpha level is 70% 15 frames per second Fade in/out last 300 ms
    `InfiniteProgressPanel(String text, int barsCount)` Creates a new progress panel with default values: Veil's alpha level is 70% 15 frames per second Fade in/out last 300 ms
    `InfiniteProgressPanel(String text, int barsCount, float shield)` Creates a new progress panel with default values: 15 frames per second Fade in/out last 300 ms
    `InfiniteProgressPanel(String text, int barsCount, float shield, float fps)` Creates a new progress panel with default values: Fade in/out last 300 ms
    `InfiniteProgressPanel(String text, int barsCount, float shield, float fps, int rampDelay)` Creates a new progress panel.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getText()` Returns the current displayed message.
    `void` | `interrupt()` Interrupts the animation, whatever its state is.
    `void` | `mouseClicked(MouseEvent e)`
    `void` | `mouseEntered(MouseEvent e)`
    `void` | `mouseExited(MouseEvent e)`
    `void` | `mousePressed(MouseEvent e)`
    `void` | `mouseReleased(MouseEvent e)`
    `void` | `paintComponent(Graphics g)`
    `void` | `setText(String text)` Changes the displayed message at runtime.
    `void` | `start()` Starts the waiting animation by fading the veil in, then rotating the shapes.
    `void` | `stop()` Stops the waiting animation by stopping the rotation of the circular shape and then by fading out the veil.

    - ### 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, 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, 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, getAccessibleContext, 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, 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, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ticker

          protected Area[] ticker

      Contains the bars composing the circular shape.

    - #### animation

          protected Thread animation

      The animation thread is responsible for fade in/out and rotation.

    - #### started

          protected boolean started

      Notifies whether the animation is running or not.

    - #### alphaLevel

          protected int alphaLevel

      Alpha level of the veil, used for fade in/out.

    - #### rampDelay

          protected int rampDelay

      Duration of the veil's fade in/out.

    - #### shield

          protected float shield

      Alpha level of the veil.

    - #### text

          protected String text

      Message displayed below the circular shape.

    - #### barsCount

          protected int barsCount

      Amount of bars composing the circular shape.

    - #### fps

          protected float fps

      Amount of frames per seconde. Lowers this to save CPU.

    - #### hints

          protected RenderingHints hints

      Rendering hints to set anti aliasing.

  - ### Constructor Detail

    - #### InfiniteProgressPanel

          public InfiniteProgressPanel()

      Creates a new progress panel with default values:
      - No message
      - 14 bars
      - Veil's alpha level is 70%
      - 15 frames per second
      - Fade in/out last 300 ms

    - #### InfiniteProgressPanel

          public InfiniteProgressPanel(String text)

      Creates a new progress panel with default values:
      - 14 bars
      - Veil's alpha level is 70%
      - 15 frames per second
      - Fade in/out last 300 ms
      Parameters:
        `text` - The message to be displayed. Can be null or empty.

    - #### InfiniteProgressPanel

          public InfiniteProgressPanel(String text,
                                       int barsCount)

      Creates a new progress panel with default values:
      - Veil's alpha level is 70%
      - 15 frames per second
      - Fade in/out last 300 ms
      Parameters:
        `text` - The message to be displayed. Can be null or empty.
        `barsCount` - The amount of bars composing the circular shape

    - #### InfiniteProgressPanel

          public InfiniteProgressPanel(String text,
                                       int barsCount,
                                       float shield)

      Creates a new progress panel with default values:
      - 15 frames per second
      - Fade in/out last 300 ms
      Parameters:
        `text` - The message to be displayed. Can be null or empty.
        `barsCount` - The amount of bars composing the circular shape.
        `shield` - The alpha level between 0.0 and 1.0 of the colored shield (or veil).

    - #### InfiniteProgressPanel

          public InfiniteProgressPanel(String text,
                                       int barsCount,
                                       float shield,
                                       float fps)

      Creates a new progress panel with default values:
      - Fade in/out last 300 ms
      Parameters:
        `text` - The message to be displayed. Can be null or empty.
        `barsCount` - The amount of bars composing the circular shape.
        `shield` - The alpha level between 0.0 and 1.0 of the colored shield (or veil).
        `fps` - The number of frames per second. Lower this value to decrease CPU usage.

    - #### InfiniteProgressPanel

          public InfiniteProgressPanel(String text,
                                       int barsCount,
                                       float shield,
                                       float fps,
                                       int rampDelay)

      Creates a new progress panel.
      Parameters:
        `text` - The message to be displayed. Can be null or empty.
        `barsCount` - The amount of bars composing the circular shape.
        `shield` - The alpha level between 0.0 and 1.0 of the colored shield (or veil).
        `fps` - The number of frames per second. Lower this value to decrease CPU usage.
        `rampDelay` - The duration, in milli seconds, of the fade in and the fade out of the veil.

  - ### Method Detail

    - #### setText

          public void setText(String text)

      Changes the displayed message at runtime.
      Parameters:
        `text` - The message to be displayed. Can be null or empty.

    - #### getText

          public String getText()

      Returns the current displayed message.
      Returns:
        the text shown under the animation

    - #### start

          public void start()

      Starts the waiting animation by fading the veil in, then rotating the shapes. This method handles the visibility of the glass pane.

    - #### stop

          public void stop()

      Stops the waiting animation by stopping the rotation of the circular shape and then by fading out the veil. This methods sets the panel invisible at the end.

    - #### interrupt

          public void interrupt()

      Interrupts the animation, whatever its state is. You can use it when you need to stop the animation without running the fade out phase. This methods sets the panel invisible at the end.

    - #### paintComponent

          public void paintComponent(Graphics g)

      Overrides:
        `paintComponent` in class `JComponent`

    - #### mouseClicked

          public void mouseClicked(MouseEvent e)

      Specified by:
        `mouseClicked` in interface `MouseListener`

    - #### mousePressed

          public void mousePressed(MouseEvent e)

      Specified by:
        `mousePressed` in interface `MouseListener`

    - #### mouseReleased

          public void mouseReleased(MouseEvent e)

      Specified by:
        `mouseReleased` in interface `MouseListener`

    - #### mouseEntered

          public void mouseEntered(MouseEvent e)

      Specified by:
        `mouseEntered` in interface `MouseListener`

    - #### mouseExited

          public void mouseExited(MouseEvent e)

      Specified by:
        `mouseExited` in interface `MouseListener`

Copyright © 2006–2020 Dirk Lemmermann Software & Consulting. All rights reserved.