Class MenuScroller

java.lang.Object
edu.wisc.ssec.mcidasv.ui.MenuScroller

public class MenuScroller extends Object
A class that provides scrolling capabilities to a long menu dropdown or popup menu. A number of items can optionally be frozen at the top of the menu.

Implementation note: The default scrolling interval is 150 milliseconds.

Since:
4593 MenuScroller.java 1.5.0 04/02/12 License: use / modify without restrictions (see https://tips4java.wordpress.com/about/) Heavily modified for JOSM needs => drop unused features and replace static scrollcount approach by dynamic behaviour
Author:
Darryl, https://tips4java.wordpress.com/2009/02/01/menu-scroller/
  • Field Details

  • Constructor Details

    • MenuScroller

      public MenuScroller(JMenu menu)
      Constructs a MenuScroller that scrolls a menu with the default scrolling interval.
      Parameters:
      menu - the menu
      Throws:
      IllegalArgumentException - if scrollCount is 0 or negative
    • MenuScroller

      public MenuScroller(JComponent parentComp, JMenu menu)
    • MenuScroller

      public MenuScroller(JPopupMenu menu)
      Constructs a MenuScroller that scrolls a popup menu with the default scrolling interval.
      Parameters:
      menu - the popup menu
      Throws:
      IllegalArgumentException - if scrollCount is 0 or negative
    • MenuScroller

      public MenuScroller(JMenu menu, int interval)
      Constructs a MenuScroller that scrolls a menu with the specified scrolling interval.
      Parameters:
      menu - the menu
      interval - the scroll interval, in milliseconds
      Throws:
      IllegalArgumentException - if scrollCount or interval is 0 or negative
    • MenuScroller

      public MenuScroller(JPopupMenu menu, int interval)
      Constructs a MenuScroller that scrolls a popup menu with the specified scrolling interval.
      Parameters:
      menu - the popup menu
      interval - the scroll interval, in milliseconds
      Throws:
      IllegalArgumentException - if scrollCount or interval is 0 or negative
    • MenuScroller

      public MenuScroller(JComponent parentComp, JMenu menu, int interval)
    • MenuScroller

      public MenuScroller(JMenu menu, int interval, int topFixedCount)
      Constructs a MenuScroller that scrolls a menu with the specified scrolling interval, and the specified numbers of items fixed at the top of the menu.
      Parameters:
      menu - the menu
      interval - the scroll interval, in milliseconds
      topFixedCount - the number of items to fix at the top. May be 0
      Throws:
      IllegalArgumentException - if scrollCount or interval is 0 or negative or if topFixedCount is negative
    • MenuScroller

      public MenuScroller(JComponent parentComp, JMenu menu, int interval, int topFixedCount)
    • MenuScroller

      public MenuScroller(JPopupMenu menu, int interval, int topFixedCount)
      Constructs a MenuScroller that scrolls a popup menu with the specified scrolling interval, and the specified numbers of items fixed at the top of the popup menu.
      Parameters:
      menu - the popup menu
      interval - the scroll interval, in milliseconds
      topFixedCount - the number of items to fix at the top. May be 0
      Throws:
      IllegalArgumentException - if scrollCount or interval is 0 or negative or if topFixedCount is negative
  • Method Details

    • getMaxDimensionOnScreen

      public static Dimension getMaxDimensionOnScreen(JComponent parent, JComponent component)
      Computes the maximum dimension for a component to fit in screen displaying component.
      Parameters:
      component - The component to get current screen info from. Must not be null
      Returns:
      Maximum dimension for a component to fit in current screen.
      Throws:
      NullPointerException - if component is null.
    • computeScrollCount

      private int computeScrollCount(int startIndex)
    • setScrollerFor

      public static MenuScroller setScrollerFor(JMenu menu)
      Registers a menu to be scrolled with the default scrolling interval.
      Parameters:
      menu - Menu to
      Returns:
      the MenuScroller
    • setScrollerFor

      public static MenuScroller setScrollerFor(JPopupMenu menu)
      Registers a popup menu to be scrolled with the default scrolling interval.
      Parameters:
      menu - the popup menu
      Returns:
      the MenuScroller
    • setScrollerFor

      public static MenuScroller setScrollerFor(JMenu menu, int interval)
      Registers a menu to be scrolled, with the specified scrolling interval.
      Parameters:
      menu - the menu
      interval - the scroll interval, in milliseconds
      Returns:
      the MenuScroller
      Throws:
      IllegalArgumentException - if scrollCount or interval is 0 or negative
    • setScrollerFor

      public static MenuScroller setScrollerFor(JPopupMenu menu, int interval)
      Registers a popup menu to be scrolled, with the specified scrolling interval.
      Parameters:
      menu - the popup menu
      interval - the scroll interval, in milliseconds
      Returns:
      the MenuScroller
      Throws:
      IllegalArgumentException - if scrollCount or interval is 0 or negative
    • setScrollerFor

      public static MenuScroller setScrollerFor(JMenu menu, int interval, int topFixedCount)
      Registers a menu to be scrolled, with the specified scrolling interval, and the specified numbers of items fixed at the top of the menu.
      Parameters:
      menu - the menu
      interval - the scroll interval, in milliseconds
      topFixedCount - the number of items to fix at the top. May be 0.
      Returns:
      the MenuScroller
      Throws:
      IllegalArgumentException - if scrollCount or interval is 0 or negative or if topFixedCount is negative
    • setScrollerFor

      public static MenuScroller setScrollerFor(JPopupMenu menu, int interval, int topFixedCount)
      Registers a popup menu to be scrolled, with the specified scrolling interval, and the specified numbers of items fixed at the top of the popup menu.
      Parameters:
      menu - the popup menu
      interval - the scroll interval, in milliseconds
      topFixedCount - the number of items to fix at the top. May be 0
      Returns:
      the MenuScroller
      Throws:
      IllegalArgumentException - if scrollCount or interval is 0 or negative or if topFixedCount is negative
    • getInterval

      public int getInterval()
      Returns the scroll interval in milliseconds
      Returns:
      the scroll interval in milliseconds
    • setInterval

      public void setInterval(int interval)
      Sets the scroll interval in milliseconds
      Parameters:
      interval - the scroll interval in milliseconds
      Throws:
      IllegalArgumentException - if interval is 0 or negative
    • getTopFixedCount

      public int getTopFixedCount()
      Returns the number of items fixed at the top of the menu or popup menu.
      Returns:
      the number of items
    • setTopFixedCount

      public void setTopFixedCount(int topFixedCount)
      Sets the number of items to fix at the top of the menu or popup menu.
      Parameters:
      topFixedCount - the number of items
    • dispose

      public void dispose()
      Removes this MenuScroller from the associated menu and restores the default behavior of the menu.
    • resetMenu

      public void resetMenu()
    • setParent

      public void setParent(JComponent parent)
    • refreshMenu

      private void refreshMenu()