org.merlotxml.merlot
Class JMoreMenu

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.AbstractButton
                  extended byjavax.swing.JMenuItem
                      extended byjavax.swing.JMenu
                          extended byorg.merlotxml.merlot.JMoreMenu
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.ItemSelectable, java.awt.MenuContainer, javax.swing.MenuElement, java.io.Serializable, javax.swing.SwingConstants

public class JMoreMenu
extends javax.swing.JMenu

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JMenu
javax.swing.JMenu.AccessibleJMenu, javax.swing.JMenu.WinListener
 
Nested classes inherited from class javax.swing.JMenuItem
javax.swing.JMenuItem.AccessibleJMenuItem
 
Nested classes inherited from class javax.swing.AbstractButton
javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  double maximumHeight
          The maximum height in screen pixles a menu is allowed to be.
static java.lang.String MORE
          More Menu Text - makes changing text easier later
protected  double myHeight
          Manually keep track of height - getPreferredSize/getSize seems to only work properly after the menu has been dispayed at least once.
static int TASKBAR_HEIGHT
          Take into account most window managers have a task or system bar always on top on the bottom of the screen.
 
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
JMoreMenu()
          Default constructor
JMoreMenu(java.lang.String label)
          Constructor - override JMenu constructor set the default height
JMoreMenu(java.lang.String label, boolean b)
          Constructor - override JMenu constructor, set the default height.
 
Method Summary
 javax.swing.JMenuItem add(javax.swing.Action a)
          Override of JMenu::add(Action);
 javax.swing.JMenuItem add(javax.swing.JMenuItem menuItem)
          Override of JMenu::add(JMenuItem)
 javax.swing.JMenuItem add(java.lang.String string)
          Override of JMenuItem::add(string)
 java.awt.Component addComponent(java.awt.Component c)
          Convenience add on - allows for easy integration to SizeableJPopupMenu.
 java.util.Vector getAllSubComponents()
          Get all Components **MINUS THE MORE BUTTONS** Use vectors, they are easier to work with when dynamically appending
 java.awt.Component getComponentAtIndex(int index)
          Override of JMenu::getComponentAtIndex(int).
 int getComponentIndex(java.awt.Component c)
          Override of JMenu getComponentIndex(Component).
 double getMaximumHeight()
          Accessor
 javax.swing.JMenuItem insert(javax.swing.Action a, int index)
          Override JMenu::insert(Action, int) Automatically restuctures menu by height.
 void insert(java.awt.Component c, int index)
          insert at index (if index > menusize append item) JMenus do not have a insert(Component, index) Hence removeAll, then re-add everything inserting the new one when appropriate.
 void insert(java.lang.String string, int index)
          Override JMenu::insert(String, int) Automatically restuctures menu by height.
 void insertStatic(java.awt.Component c)
          Used to forcibly insert items at the end of the primary menu.
 void remove(int index)
          Override JMoreMenu remove.
 void removeAll()
          Override JMoreMenu removeAll.
 void setMaximumHeight(double aHeight)
          Set the maximum allowable height if default screenheight-taskbar is insufficient.
 void setPopupMenuVisible(boolean b)
          Set the position of the menus - try guard against the menus going off the screen.
 void setSelected(java.awt.Component c)
          Override of the JMenu::setSelected, includes a "do something intelligent" check to help ease integration with SizeableJPopupMenu
 int SizeableGetItemCount()
          Convenience add on
 
Methods inherited from class javax.swing.JMenu
add, add, addMenuListener, addSeparator, applyComponentOrientation, configurePropertiesFromAction, createActionChangeListener, createActionComponent, createWinListener, doClick, fireMenuCanceled, fireMenuDeselected, fireMenuSelected, getAccessibleContext, getComponent, getDelay, getItem, getItemCount, getMenuComponent, getMenuComponentCount, getMenuComponents, getMenuListeners, getPopupMenu, getPopupMenuOrigin, getSubElements, getUIClassID, insert, insertSeparator, isMenuComponent, isPopupMenuVisible, isSelected, isTearOff, isTopLevelMenu, menuSelectionChanged, paramString, processKeyEvent, remove, remove, removeMenuListener, setAccelerator, setComponentOrientation, setDelay, setMenuLocation, setModel, setSelected, updateUI
 
Methods inherited from class javax.swing.JMenuItem
addMenuDragMouseListener, addMenuKeyListener, createActionPropertyChangeListener, 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, addItemListener, checkHorizontalKey, checkVerticalKey, createActionListener, createChangeListener, createItemListener, doClick, fireActionPerformed, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, 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, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setFocusPainted, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setMargin, setMnemonic, setMnemonic, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFont, setForeground, 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, addImpl, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, 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
 

Field Detail

MORE

public static final java.lang.String MORE
More Menu Text - makes changing text easier later

See Also:
Constant Field Values

TASKBAR_HEIGHT

public static final int TASKBAR_HEIGHT
Take into account most window managers have a task or system bar always on top on the bottom of the screen. Empirically determined value.

See Also:
Constant Field Values

maximumHeight

protected double maximumHeight
The maximum height in screen pixles a menu is allowed to be.


myHeight

protected double myHeight
Manually keep track of height - getPreferredSize/getSize seems to only work properly after the menu has been dispayed at least once.

Constructor Detail

JMoreMenu

public JMoreMenu()
Default constructor


JMoreMenu

public JMoreMenu(java.lang.String label)
Constructor - override JMenu constructor set the default height


JMoreMenu

public JMoreMenu(java.lang.String label,
                 boolean b)
Constructor - override JMenu constructor, set the default height.

Method Detail

add

public javax.swing.JMenuItem add(javax.swing.Action a)
Override of JMenu::add(Action);


add

public javax.swing.JMenuItem add(javax.swing.JMenuItem menuItem)
Override of JMenu::add(JMenuItem)


addComponent

public java.awt.Component addComponent(java.awt.Component c)
Convenience add on - allows for easy integration to SizeableJPopupMenu. There are a differences between JPopupMenu and JMenu that make them not completely straightforward to integrate.


add

public javax.swing.JMenuItem add(java.lang.String string)
Override of JMenuItem::add(string)


getComponentIndex

public int getComponentIndex(java.awt.Component c)
Override of JMenu getComponentIndex(Component). Automatically skips over menu genereated "more>" item.


getComponentAtIndex

public java.awt.Component getComponentAtIndex(int index)
Override of JMenu::getComponentAtIndex(int). Automatically skip over the menu generated "more>" item.


setSelected

public void setSelected(java.awt.Component c)
Override of the JMenu::setSelected, includes a "do something intelligent" check to help ease integration with SizeableJPopupMenu


insert

public void insert(java.awt.Component c,
                   int index)
insert at index (if index > menusize append item) JMenus do not have a insert(Component, index) Hence removeAll, then re-add everything inserting the new one when appropriate.


insert

public javax.swing.JMenuItem insert(javax.swing.Action a,
                                    int index)
Override JMenu::insert(Action, int) Automatically restuctures menu by height.


insert

public void insert(java.lang.String string,
                   int index)
Override JMenu::insert(String, int) Automatically restuctures menu by height.


remove

public void remove(int index)
Override JMoreMenu remove. Automatically take "more>" structure into account.


removeAll

public void removeAll()
Override JMoreMenu removeAll. Automatically take "more>" structure into account.


SizeableGetItemCount

public int SizeableGetItemCount()
Convenience add on


setMaximumHeight

public void setMaximumHeight(double aHeight)
Set the maximum allowable height if default screenheight-taskbar is insufficient.


getMaximumHeight

public double getMaximumHeight()
Accessor


getAllSubComponents

public java.util.Vector getAllSubComponents()
Get all Components **MINUS THE MORE BUTTONS** Use vectors, they are easier to work with when dynamically appending


insertStatic

public void insertStatic(java.awt.Component c)
Used to forcibly insert items at the end of the primary menu. Useful if you have items that you don't want who knows how many levels deep in the more structure.


setPopupMenuVisible

public void setPopupMenuVisible(boolean b)
Set the position of the menus - try guard against the menus going off the screen. WARNING - The code here is not very complex, but a bit deceiving Getting this code **CORRECT** is a lot tricker than it looks, primarily due to the fact you don't have easy access to the internal co-ordinate system and associated maniuplation routines. Most of this code is work-around of known problems in Swing with a couple of sequence dependent items. (must be called at the appropriate time). When making mods, proceed with MUCH CAUTION!.