Class SwingUpdateManager


  • public class SwingUpdateManager
    extends AbstractSwingUpdateManager
    A class to allow clients to buffer events. UI components may receive numbers events to make changes to their underlying data model. Further, for many of these clients, it is sufficient to perform one update to capture all of the changes. In this scenario, the client can use this class to keep pushing off internal updates until: 1) the flurry of events has settled down, or 2) some specified amount of time has expired.

    The various methods dictate when the client will get a callback:

    • update() - if this is the first call to update, then do the work immediately; otherwise, buffer the update request until the timeout has expired.
    • updateNow() - perform the callback now.
    • updateLater() - buffer the update request until the timeout has expired.
    • Non-blocking update now - this is a conceptual use-case, where the client wishes to perform an immediate update, but not during the current Swing event. To achieve this, you could call something like:
                                	SwingUtilities.invokeLater(() -> updateManager.updateNow());
                                

    This class is safe to use in a multi-threaded environment. State variables are guarded via synchronization on this object. The Swing thread is used to perform updates, which guarantees that only one update will happen at a time.

    • Constructor Detail

      • SwingUpdateManager

        public SwingUpdateManager​(java.lang.Runnable r)
        Constructs a new SwingUpdateManager with default values for min and max delay. See AbstractSwingUpdateManager.DEFAULT_MIN_DELAY and 30000.
        Parameters:
        r - the runnable that performs the client work.
      • SwingUpdateManager

        public SwingUpdateManager​(int minDelay,
                                  java.lang.Runnable r)
        Constructs a new SwingUpdateManager

        Note: The minDelay will always be at least AbstractSwingUpdateManager.MIN_DELAY_FLOOR, regardless of the given value.

        Parameters:
        minDelay - the minimum number of milliseconds to wait once the event stream stops coming in before actually updating the screen.
        r - the runnable that performs the client work.
      • SwingUpdateManager

        public SwingUpdateManager​(int minDelay,
                                  int maxDelay,
                                  java.lang.Runnable r)
        Constructs a new SwingUpdateManager

        Note: The minDelay will always be at least AbstractSwingUpdateManager.MIN_DELAY_FLOOR, regardless of the given value.

        Parameters:
        minDelay - the minimum number of milliseconds to wait once the event stream stops coming in before actually updating the screen.
        maxDelay - the maximum amount of time to wait between gui updates.
        r - the runnable that performs the client work.
      • SwingUpdateManager

        public SwingUpdateManager​(int minDelay,
                                  int maxDelay,
                                  java.lang.String name,
                                  java.lang.Runnable r)
        Constructs a new SwingUpdateManager

        Note: The minDelay will always be at least AbstractSwingUpdateManager.MIN_DELAY_FLOOR, regardless of the given value.

        Parameters:
        minDelay - the minimum number of milliseconds to wait once the event stream stops coming in before actually updating the screen.
        maxDelay - the maximum amount of time to wait between gui updates.
        name - The name of this update manager; this allows for selective trace logging
        r - the runnable that performs the client work.