util.ui

## Class ScrollableMenu

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.AbstractButton
        - - javax.swing.JMenuItem
          - - javax.swing.JMenu
            - - util.ui.ScrollableMenu

- All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.ItemSelectable, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.MenuElement, javax.swing.SwingConstants
  Direct Known Subclasses:
    SelectFilterPopup

      public class ScrollableMenu
      extends javax.swing.JMenu

  An implementation of a scrollable menu -- a popup window containing `JMenuItem`s that is displayed when the user selects an item on the `JMenuBar`. In addition to `JMenuItem`s, a `JMenu` can also contain `JSeparator`s.

  In essence, a menu is a button with an associated `JPopupMenu`. When the "button" is pressed, the `JPopupMenu` appears. If the "button" is on the `JMenuBar`, the menu is a top-level window. If the "button" is another menu item, then the `JPopupMenu` is "pull-right" menu. If the menu contains more items than displayable on the screen the menu becomes scrollable by hiding some of the items and adding an add and a down arrow at both ends of the menu to scroll the menu with this arrows. description: A popup window containing menu items displayed in a menu bar.

  See Also:
    `JPopupMenu`, Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class javax.swing.JMenu

      `javax.swing.JMenu.AccessibleJMenu, javax.swing.JMenu.WinListener`

    - ### Nested classes/interfaces inherited from class javax.swing.JMenuItem

      `javax.swing.JMenuItem.AccessibleJMenuItem`

    - ### Nested classes/interfaces inherited from class javax.swing.AbstractButton

      `javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener`

    - ### Nested classes/interfaces inherited from class javax.swing.JComponent

      `javax.swing.JComponent.AccessibleJComponent`

    - ### Nested classes/interfaces inherited from class java.awt.Container

      `java.awt.Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

  - ### Field Summary

    - ### Fields inherited from class javax.swing.JMenu

      `popupListener`

    - ### Fields inherited from class javax.swing.AbstractButton

      `actionListener, BORDER_PAINTED_CHANGED_PROPERTY, changeEvent, changeListener, CONTENT_AREA_FILLED_CHANGED_PROPERTY, DISABLED_ICON_CHANGED_PROPERTY, DISABLED_SELECTED_ICON_CHANGED_PROPERTY, FOCUS_PAINTED_CHANGED_PROPERTY, HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, ICON_CHANGED_PROPERTY, itemListener, MARGIN_CHANGED_PROPERTY, MNEMONIC_CHANGED_PROPERTY, model, MODEL_CHANGED_PROPERTY, PRESSED_ICON_CHANGED_PROPERTY, ROLLOVER_ENABLED_CHANGED_PROPERTY, ROLLOVER_ICON_CHANGED_PROPERTY, ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, SELECTED_ICON_CHANGED_PROPERTY, TEXT_CHANGED_PROPERTY, VERTICAL_ALIGNMENT_CHANGED_PROPERTY, VERTICAL_TEXT_POSITION_CHANGED_PROPERTY`

    - ### 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 javax.swing.SwingConstants

      `BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ScrollableMenu()` Constructs a new `JMenu` with no text.
    `ScrollableMenu(javax.swing.Action a)` Constructs a new `JMenu` whose properties are taken from the `Action` supplied.
    `ScrollableMenu(java.lang.String menuTitle)` Constructs a new `JMenu` with the supplied string as its text.
    `ScrollableMenu(java.lang.String s, boolean b)` Constructs a new `JMenu` with the supplied string as its text and specified as a tear-off menu or not.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.awt.Component` | `add(java.awt.Component component)` Appends a component to the end of this menu.
    `java.awt.Component` | `add(java.awt.Component component, int index)` Adds the specified component to this container at the given position.
    `javax.swing.JMenuItem` | `add(javax.swing.JMenuItem menuItem)` Appends a menu item to the end of this menu.
    `protected void` | `addScrollableComponent(java.awt.Component component)` Add the specified component at the end of this scrollable menu
    `protected void` | `addScrollableComponent(java.awt.Component component, int pos)` Add the specified component to this scrollable menu
    `void` | `addSeparator()` Appends a new separator to the end of the menu.
    `javax.swing.JMenuItem` | `getItem(int pos)` Returns the `JMenuItem` at the specified position.
    `int` | `getItemCount()` Returns the number of items on the menu, including separators.
    `java.awt.Component` | `getMenuComponent(int n)` Returns the component at position `n`.
    `int` | `getMenuComponentCount()` Returns the number of components on the menu.
    `java.awt.Component[]` | `getMenuComponents()` Returns an array of `Component`s of the menu's subcomponents.
    `javax.swing.MenuElement[]` | `getSubElements()`
    `javax.swing.JMenuItem` | `insert(javax.swing.Action a, int pos)` Inserts a new menu item attached to the specified `Action` object at a given position.
    `javax.swing.JMenuItem` | `insert(javax.swing.JMenuItem menuItem, int pos)` Inserts the specified `JMenuitem` at a given position.
    `void` | `insert(java.lang.String s, int pos)`
    `boolean` | `isMenuComponent(java.awt.Component component)` Returns true if the specified component exists in the submenu hierarchy.
    `void` | `remove(java.awt.Component component)` Removes the component `c` from this menu.
    `void` | `remove(int pos)` Removes the menu item at the specified index from this menu.
    `void` | `remove(javax.swing.JMenuItem menuItem)` Removes the specified menu item from this menu.
    `void` | `removeAll()` Removes all menu items from this menu.
    `protected void` | `removeScrollableComponent(java.awt.Component component)` Remove the specified component from this scrollable menu

    - ### Methods inherited from class javax.swing.JMenu

      `add, add, addMenuListener, applyComponentOrientation, createActionChangeListener, createActionComponent, createWinListener, doClick, fireMenuCanceled, fireMenuDeselected, fireMenuSelected, getAccessibleContext, getComponent, getDelay, getMenuListeners, getPopupMenu, getPopupMenuOrigin, getUIClassID, insertSeparator, isPopupMenuVisible, isSelected, isTearOff, isTopLevelMenu, menuSelectionChanged, paramString, processKeyEvent, removeMenuListener, setAccelerator, setComponentOrientation, setDelay, setMenuLocation, setModel, setPopupMenuVisible, setSelected, updateUI`

    - ### Methods inherited from class javax.swing.JMenuItem

      `actionPropertyChanged, addMenuDragMouseListener, addMenuKeyListener, configurePropertiesFromAction, fireMenuDragMouseDragged, fireMenuDragMouseEntered, fireMenuDragMouseExited, fireMenuDragMouseReleased, fireMenuKeyPressed, fireMenuKeyReleased, fireMenuKeyTyped, getAccelerator, getMenuDragMouseListeners, getMenuKeyListeners, init, isArmed, processKeyEvent, processMenuDragMouseEvent, processMenuKeyEvent, processMouseEvent, removeMenuDragMouseListener, removeMenuKeyListener, setArmed, setEnabled, setUI`

    - ### Methods inherited from class javax.swing.AbstractButton

      `addActionListener, addChangeListener, addImpl, addItemListener, checkHorizontalKey, checkVerticalKey, createActionListener, createActionPropertyChangeListener, createChangeListener, createItemListener, doClick, fireActionPerformed, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, getHideActionText, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getItemListeners, getLabel, getMargin, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, paintBorder, removeActionListener, removeChangeListener, removeItemListener, removeNotify, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setFocusPainted, setHideActionText, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setLayout, setMargin, setMnemonic, setMnemonic, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition`

    - ### 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, 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, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, 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, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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, 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, 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`

    - ### Methods inherited from interface javax.swing.MenuElement

      `processKeyEvent, processMouseEvent`

- - ### Constructor Detail

    - #### ScrollableMenu

          public ScrollableMenu()

      Constructs a new `JMenu` with no text.

    - #### ScrollableMenu

          public ScrollableMenu(javax.swing.Action a)

      Constructs a new `JMenu` whose properties are taken from the `Action` supplied.
      Parameters:
        `a` - an `Action`
      Since:
        1.3

    - #### ScrollableMenu

          public ScrollableMenu(java.lang.String s,
                        boolean b)

      Constructs a new `JMenu` with the supplied string as its text and specified as a tear-off menu or not.
      Parameters:
        `s` - the text for the menu label
        `b` - can the menu be torn off (not yet implemented)

    - #### ScrollableMenu

          public ScrollableMenu(java.lang.String menuTitle)

      Constructs a new `JMenu` with the supplied string as its text.
      Parameters:
        `menuTitle` - the text for the menu label

  - ### Method Detail

    - #### add

          public javax.swing.JMenuItem add(javax.swing.JMenuItem menuItem)

      Appends a menu item to the end of this menu. Returns the menu item added.
      Overrides:
        `add` in class `javax.swing.JMenu`
      Parameters:
        `menuItem` - the `JMenuitem` to be added
      Returns:
        the `JMenuItem` added

    - #### add

          public java.awt.Component add(java.awt.Component component)

      Appends a component to the end of this menu. Returns the component added.
      Overrides:
        `add` in class `javax.swing.JMenu`
      Parameters:
        `component` - the `Component` to add
      Returns:
        the `Component` added

    - #### add

          public java.awt.Component add(java.awt.Component component,
                               int index)

      Adds the specified component to this container at the given position. If `index` equals -1, the component will be appended to the end.
      Overrides:
        `add` in class `javax.swing.JMenu`
      Parameters:
        `component` - the `Component` to add
        `index` - the position at which to insert the component
      Returns:
        the `Component` added
      See Also:
        `remove(Component)`, `Container.add(Component, int)`

    - #### insert

          public void insert(java.lang.String s,
                    int pos)

      Overrides:
        `insert` in class `javax.swing.JMenu`

    - #### insert

          public javax.swing.JMenuItem insert(javax.swing.JMenuItem menuItem,
                                     int pos)

      Inserts the specified `JMenuitem` at a given position.
      Overrides:
        `insert` in class `javax.swing.JMenu`
      Parameters:
        `menuItem` - the `JMenuitem` to add
        `pos` - an integer specifying the position at which to add the new `JMenuitem`
      Returns:
        the new menu item
      Throws:
        `java.lang.IllegalArgumentException` - if the value of `pos` < 0

    - #### insert

          public javax.swing.JMenuItem insert(javax.swing.Action a,
                                     int pos)

      Inserts a new menu item attached to the specified `Action` object at a given position.
      Overrides:
        `insert` in class `javax.swing.JMenu`
      Parameters:
        `a` - the `Action` object for the menu item to add
        `pos` - an integer specifying the position at which to add the new menu item
      Throws:
        `java.lang.IllegalArgumentException` - if the value of `pos` < 0

    - #### getItem

          public javax.swing.JMenuItem getItem(int pos)

      Returns the `JMenuItem` at the specified position. If the component at `pos` is not a menu item, `null` is returned. This method is included for AWT compatibility.
      Overrides:
        `getItem` in class `javax.swing.JMenu`
      Parameters:
        `pos` - an integer specifying the position
      Returns:
        the menu item at the specified position; or `null` if the item as the specified position is not a menu item
      Throws:
        `java.lang.IllegalArgumentException` - if the value of `pos` < 0

    - #### getItemCount

          public int getItemCount()

      Returns the number of items on the menu, including separators. This method is included for AWT compatibility.
      Overrides:
        `getItemCount` in class `javax.swing.JMenu`
      Returns:
        an integer equal to the number of items on the menu
      See Also:
        `getMenuComponentCount()`

    - #### remove

          public void remove(javax.swing.JMenuItem menuItem)

      Removes the specified menu item from this menu. If there is no popup menu, this method will have no effect.
      Overrides:
        `remove` in class `javax.swing.JMenu`
      Parameters:
        `menuItem` - the `JMenuItem` to be removed from the menu

    - #### remove

          public void remove(int pos)

      Removes the menu item at the specified index from this menu.
      Overrides:
        `remove` in class `javax.swing.JMenu`
      Parameters:
        `pos` - the position of the item to be removed
      Throws:
        `java.lang.IllegalArgumentException` - if the value of `pos` < 0, or if `pos` is greater than the number of menu items

    - #### remove

          public void remove(java.awt.Component component)

      Removes the component `c` from this menu.
      Overrides:
        `remove` in class `javax.swing.JMenu`
      Parameters:
        `component` - the component to be removed

    - #### removeAll

          public void removeAll()

      Removes all menu items from this menu.
      Overrides:
        `removeAll` in class `javax.swing.JMenu`

    - #### getMenuComponentCount

          public int getMenuComponentCount()

      Returns the number of components on the menu.
      Overrides:
        `getMenuComponentCount` in class `javax.swing.JMenu`
      Returns:
        an integer containing the number of components on the menu

    - #### getMenuComponent

          public java.awt.Component getMenuComponent(int n)

      Returns the component at position `n`.
      Overrides:
        `getMenuComponent` in class `javax.swing.JMenu`
      Parameters:
        `n` - the position of the component to be returned
      Returns:
        the component requested, or `null` if there is no popup menu

    - #### getMenuComponents

          public java.awt.Component[] getMenuComponents()

      Returns an array of `Component`s of the menu's subcomponents. Note that this returns all `Component`s in the popup menu, including separators.
      Overrides:
        `getMenuComponents` in class `javax.swing.JMenu`
      Returns:
        an array of `Component`s or an empty array if there is no popup menu

    - #### isMenuComponent

          public boolean isMenuComponent(java.awt.Component component)

      Returns true if the specified component exists in the submenu hierarchy.
      Overrides:
        `isMenuComponent` in class `javax.swing.JMenu`
      Parameters:
        `component` - the `Component` to be tested
      Returns:
        true if the `Component` exists, false otherwise

    - #### addSeparator

          public void addSeparator()

      Appends a new separator to the end of the menu.
      Overrides:
        `addSeparator` in class `javax.swing.JMenu`

    - #### addScrollableComponent

          protected void addScrollableComponent(java.awt.Component component,
                                    int pos)

      Add the specified component to this scrollable menu
      Parameters:
        `component` - the `Component` to add
        `pos` - an integer specifying the position at which to add the new component

    - #### addScrollableComponent

          protected void addScrollableComponent(java.awt.Component component)

      Add the specified component at the end of this scrollable menu
      Parameters:
        `component` - the `Component` to add

    - #### removeScrollableComponent

          protected void removeScrollableComponent(java.awt.Component component)

      Remove the specified component from this scrollable menu
      Parameters:
        `component` - the `Component` to remove

    - #### getSubElements

          public javax.swing.MenuElement[] getSubElements()

      Specified by:
        `getSubElements` in interface `javax.swing.MenuElement`
      Overrides:
        `getSubElements` in class `javax.swing.JMenu`

TV-Browser 3.4.3, Copyright (C) 2004-2008 TV-Browser Team (dev@tvbrowser.org)