Package jmri.util
Class MenuScroller
- java.lang.Object
-
- jmri.util.MenuScroller
-
- All Implemented Interfaces:
java.awt.event.MouseWheelListener
,java.util.EventListener
public class MenuScroller extends java.lang.Object implements java.awt.event.MouseWheelListener
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 and/or bottom of the menu.Implementation note: The default number of items to display at a time is 15, and the default scrolling interval is 125 milliseconds.
-
-
Constructor Summary
Constructors Constructor Description MenuScroller(javax.swing.JMenu menu)
Construct aMenuScroller
that scrolls a menu with the default number of items to display at a time, and default scrolling interval.MenuScroller(javax.swing.JMenu menu, int scrollCount)
Construct aMenuScroller
that scrolls a menu with the specified number of items to display at a time, and default scrolling interval.MenuScroller(javax.swing.JMenu menu, int scrollCount, int interval)
Construct aMenuScroller
that scrolls a menu with the specified number of items to display at a time, and specified scrolling interval.MenuScroller(javax.swing.JMenu menu, int scrollCount, int interval, int topFixedCount, int bottomFixedCount)
Construct aMenuScroller
that scrolls a menu with the specified number of items to display in the scrolling region, the specified scrolling interval, and the specified numbers of items fixed at the top and bottom of the menu.MenuScroller(javax.swing.JPopupMenu menu)
Construct aMenuScroller
that scrolls a popup menu with the default number of items to display at a time, and default scrolling interval.MenuScroller(javax.swing.JPopupMenu menu, int scrollCount)
Construct aMenuScroller
that scrolls a popup menu with the specified number of items to display at a time, and default scrolling interval.MenuScroller(javax.swing.JPopupMenu menu, int scrollCount, int interval)
Construct aMenuScroller
that scrolls a popup menu with the specified number of items to display at a time, and specified scrolling interval.MenuScroller(javax.swing.JPopupMenu menu, int scrollCount, int interval, int topFixedCount, int bottomFixedCount)
Construct aMenuScroller
that scrolls a popup menu with the specified number of items to display in the scrolling region, the specified scrolling interval, and the specified numbers of items fixed at the top and bottom of the popup menu.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
dispose()
Remove this MenuScroller from the associated menu and restores the default behavior of the menu.protected void
finalize()
Ensure that thedispose
method of this MenuScroller is called when there are no more refrences to it.int
getBottomFixedCount()
Return the number of items fixed at the bottom of the menu or popup menu.int
getInterval()
Return the scroll interval in milliseconds.int
getscrollCount()
Return the number of items in the scrolling portion of the menu.int
getTopFixedCount()
Return the number of items fixed at the top of the menu or popup menu.void
keepVisible(int index)
Scroll the item at the specified index into view each time the menu is opened.void
keepVisible(javax.swing.JMenuItem item)
Scroll the specified item into view each time the menu is opened.void
mouseWheelMoved(java.awt.event.MouseWheelEvent e)
void
setBottomFixedCount(int bottomFixedCount)
Set the number of items to fix at the bottom of the menu or popup menu.void
setInterval(int interval)
Set the scroll interval in milliseconds.void
setScrollCount(int scrollCount)
Set the number of items in the scrolling portion of the menu.static MenuScroller
setScrollerFor(javax.swing.JMenu menu)
Register a menu to be scrolled with the default number of items to display at a time and the default scrolling interval.static MenuScroller
setScrollerFor(javax.swing.JMenu menu, int scrollCount)
Register a menu to be scrolled with the default number of items to display at a time and the specified scrolling interval.static MenuScroller
setScrollerFor(javax.swing.JMenu menu, int scrollCount, int interval)
Register a menu to be scrolled, with the specified number of items to display at a time and the specified scrolling interval.static MenuScroller
setScrollerFor(javax.swing.JMenu menu, int scrollCount, int interval, int topFixedCount, int bottomFixedCount)
Register a menu to be scrolled, with the specified number of items to display in the scrolling region, the specified scrolling interval, and the specified numbers of items fixed at the top and bottom of the menu.static MenuScroller
setScrollerFor(javax.swing.JPopupMenu menu)
Register a popup menu to be scrolled with the default number of items to display at a time and the default scrolling interval.static MenuScroller
setScrollerFor(javax.swing.JPopupMenu menu, int scrollCount)
Register a popup menu to be scrolled with the default number of items to display at a time and the specified scrolling interval.static MenuScroller
setScrollerFor(javax.swing.JPopupMenu menu, int scrollCount, int interval)
Register a popup menu to be scrolled, with the specified number of items to display at a time and the specified scrolling interval.static MenuScroller
setScrollerFor(javax.swing.JPopupMenu menu, int scrollCount, int interval, int topFixedCount, int bottomFixedCount)
Register a popup menu to be scrolled, with the specified number of items to display in the scrolling region, the specified scrolling interval, and the specified numbers of items fixed at the top and bottom of the popup menu.void
setTopFixedCount(int topFixedCount)
Set the number of items to fix at the top of the menu or popup menu.
-
-
-
Constructor Detail
-
MenuScroller
public MenuScroller(javax.swing.JMenu menu)
Construct aMenuScroller
that scrolls a menu with the default number of items to display at a time, and default scrolling interval.- Parameters:
menu
- the menu
-
MenuScroller
public MenuScroller(javax.swing.JPopupMenu menu)
Construct aMenuScroller
that scrolls a popup menu with the default number of items to display at a time, and default scrolling interval.- Parameters:
menu
- the popup menu
-
MenuScroller
public MenuScroller(javax.swing.JMenu menu, int scrollCount)
Construct aMenuScroller
that scrolls a menu with the specified number of items to display at a time, and default scrolling interval.- Parameters:
menu
- the menuscrollCount
- the number of items to display at a time- Throws:
java.lang.IllegalArgumentException
- if scrollCount is 0 or negative
-
MenuScroller
public MenuScroller(javax.swing.JPopupMenu menu, int scrollCount)
Construct aMenuScroller
that scrolls a popup menu with the specified number of items to display at a time, and default scrolling interval.- Parameters:
menu
- the popup menuscrollCount
- the number of items to display at a time- Throws:
java.lang.IllegalArgumentException
- if scrollCount is 0 or negative
-
MenuScroller
public MenuScroller(javax.swing.JMenu menu, int scrollCount, int interval)
Construct aMenuScroller
that scrolls a menu with the specified number of items to display at a time, and specified scrolling interval.- Parameters:
menu
- the menuscrollCount
- the number of items to display at a timeinterval
- the scroll interval, in milliseconds- Throws:
java.lang.IllegalArgumentException
- if scrollCount or interval is 0 or negative
-
MenuScroller
public MenuScroller(javax.swing.JPopupMenu menu, int scrollCount, int interval)
Construct aMenuScroller
that scrolls a popup menu with the specified number of items to display at a time, and specified scrolling interval.- Parameters:
menu
- the popup menuscrollCount
- the number of items to display at a timeinterval
- the scroll interval, in milliseconds- Throws:
java.lang.IllegalArgumentException
- if scrollCount or interval is 0 or negative
-
MenuScroller
public MenuScroller(javax.swing.JMenu menu, int scrollCount, int interval, int topFixedCount, int bottomFixedCount)
Construct aMenuScroller
that scrolls a menu with the specified number of items to display in the scrolling region, the specified scrolling interval, and the specified numbers of items fixed at the top and bottom of the menu.- Parameters:
menu
- the menuscrollCount
- the number of items to display in the scrolling portioninterval
- the scroll interval, in millisecondstopFixedCount
- the number of items to fix at the top. May be 0bottomFixedCount
- the number of items to fix at the bottom. May be 0- Throws:
java.lang.IllegalArgumentException
- if scrollCount or interval is 0 or negative or if topFixedCount or bottomFixedCount is negative
-
MenuScroller
public MenuScroller(javax.swing.JPopupMenu menu, int scrollCount, int interval, int topFixedCount, int bottomFixedCount)
Construct aMenuScroller
that scrolls a popup menu with the specified number of items to display in the scrolling region, the specified scrolling interval, and the specified numbers of items fixed at the top and bottom of the popup menu.- Parameters:
menu
- the popup menuscrollCount
- the number of items to display in the scrolling portioninterval
- the scroll interval, in millisecondstopFixedCount
- the number of items to fix at the top. May be 0bottomFixedCount
- the number of items to fix at the bottom. May be 0- Throws:
java.lang.IllegalArgumentException
- if scrollCount or interval is 0 or negative or if topFixedCount or bottomFixedCount is negative
-
-
Method Detail
-
setScrollerFor
public static MenuScroller setScrollerFor(javax.swing.JMenu menu)
Register a menu to be scrolled with the default number of items to display at a time and the default scrolling interval.- Parameters:
menu
- the menu- Returns:
- the MenuScroller
-
setScrollerFor
public static MenuScroller setScrollerFor(javax.swing.JPopupMenu menu)
Register a popup menu to be scrolled with the default number of items to display at a time and the default scrolling interval.- Parameters:
menu
- the popup menu- Returns:
- the MenuScroller
-
setScrollerFor
public static MenuScroller setScrollerFor(javax.swing.JMenu menu, int scrollCount)
Register a menu to be scrolled with the default number of items to display at a time and the specified scrolling interval.- Parameters:
menu
- the menuscrollCount
- the number of items to display at a time- Returns:
- the MenuScroller
- Throws:
java.lang.IllegalArgumentException
- if scrollCount is 0 or negative
-
setScrollerFor
public static MenuScroller setScrollerFor(javax.swing.JPopupMenu menu, int scrollCount)
Register a popup menu to be scrolled with the default number of items to display at a time and the specified scrolling interval.- Parameters:
menu
- the popup menuscrollCount
- the number of items to display at a time- Returns:
- the MenuScroller
- Throws:
java.lang.IllegalArgumentException
- if scrollCount is 0 or negative
-
setScrollerFor
public static MenuScroller setScrollerFor(javax.swing.JMenu menu, int scrollCount, int interval)
Register a menu to be scrolled, with the specified number of items to display at a time and the specified scrolling interval.- Parameters:
menu
- the menuscrollCount
- the number of items to be displayed at a timeinterval
- the scroll interval, in milliseconds- Returns:
- the MenuScroller
- Throws:
java.lang.IllegalArgumentException
- if scrollCount or interval is 0 or negative
-
setScrollerFor
public static MenuScroller setScrollerFor(javax.swing.JPopupMenu menu, int scrollCount, int interval)
Register a popup menu to be scrolled, with the specified number of items to display at a time and the specified scrolling interval.- Parameters:
menu
- the popup menuscrollCount
- the number of items to be displayed at a timeinterval
- the scroll interval, in milliseconds- Returns:
- the MenuScroller
- Throws:
java.lang.IllegalArgumentException
- if scrollCount or interval is 0 or negative
-
setScrollerFor
public static MenuScroller setScrollerFor(javax.swing.JMenu menu, int scrollCount, int interval, int topFixedCount, int bottomFixedCount)
Register a menu to be scrolled, with the specified number of items to display in the scrolling region, the specified scrolling interval, and the specified numbers of items fixed at the top and bottom of the menu.- Parameters:
menu
- the menuscrollCount
- the number of items to display in the scrolling portioninterval
- the scroll interval, in millisecondstopFixedCount
- the number of items to fix at the top. May be 0.bottomFixedCount
- the number of items to fix at the bottom. May be 0- Returns:
- the MenuScroller
- Throws:
java.lang.IllegalArgumentException
- if scrollCount or interval is 0 or negative or if topFixedCount or bottomFixedCount is negative
-
setScrollerFor
public static MenuScroller setScrollerFor(javax.swing.JPopupMenu menu, int scrollCount, int interval, int topFixedCount, int bottomFixedCount)
Register a popup menu to be scrolled, with the specified number of items to display in the scrolling region, the specified scrolling interval, and the specified numbers of items fixed at the top and bottom of the popup menu.- Parameters:
menu
- the popup menuscrollCount
- the number of items to display in the scrolling portioninterval
- the scroll interval, in millisecondstopFixedCount
- the number of items to fix at the top. May be 0bottomFixedCount
- the number of items to fix at the bottom. May be 0- Returns:
- the MenuScroller
- Throws:
java.lang.IllegalArgumentException
- if scrollCount or interval is 0 or negative or if topFixedCount or bottomFixedCount is negative
-
mouseWheelMoved
public void mouseWheelMoved(java.awt.event.MouseWheelEvent e)
- Specified by:
mouseWheelMoved
in interfacejava.awt.event.MouseWheelListener
-
getInterval
public int getInterval()
Return the scroll interval in milliseconds.- Returns:
- the scroll interval in milliseconds
-
setInterval
public void setInterval(int interval)
Set the scroll interval in milliseconds.- Parameters:
interval
- the scroll interval in milliseconds- Throws:
java.lang.IllegalArgumentException
- if interval is 0 or negative
-
getscrollCount
public int getscrollCount()
Return the number of items in the scrolling portion of the menu.- Returns:
- the number of items to display at a time
-
setScrollCount
public void setScrollCount(int scrollCount)
Set the number of items in the scrolling portion of the menu.- Parameters:
scrollCount
- the number of items to display at a time- Throws:
java.lang.IllegalArgumentException
- if scrollCount is 0 or negative
-
getTopFixedCount
public int getTopFixedCount()
Return 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)
Set the number of items to fix at the top of the menu or popup menu.- Parameters:
topFixedCount
- the number of items
-
getBottomFixedCount
public int getBottomFixedCount()
Return the number of items fixed at the bottom of the menu or popup menu.- Returns:
- the number of items
-
setBottomFixedCount
public void setBottomFixedCount(int bottomFixedCount)
Set the number of items to fix at the bottom of the menu or popup menu.- Parameters:
bottomFixedCount
- the number of items
-
keepVisible
public void keepVisible(javax.swing.JMenuItem item)
Scroll the specified item into view each time the menu is opened. Call this method withnull
to restore the default behavior, which is to show the menu as it last appeared.- Parameters:
item
- the item to keep visible- See Also:
keepVisible(int)
-
keepVisible
public void keepVisible(int index)
Scroll the item at the specified index into view each time the menu is opened. Call this method with-1
to restore the default behavior, which is to show the menu as it last appeared.- Parameters:
index
- the index of the item to keep visible- See Also:
keepVisible(javax.swing.JMenuItem)
-
dispose
public void dispose()
Remove this MenuScroller from the associated menu and restores the default behavior of the menu.
-
-