org.merlotxml.merlot
Class JMoreMenu

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.AbstractButton
                          |
                          +--javax.swing.JMenuItem
                                |
                                +--javax.swing.JMenu
                                      |
                                      +--org.merlotxml.merlot.JMoreMenu

public class JMoreMenu
extends javax.swing.JMenu

See Also:
Serialized Form

Inner classes inherited from class javax.swing.JMenu
javax.swing.JMenu.AccessibleJMenu, javax.swing.JMenu.WinListener
 
Inner classes inherited from class javax.swing.JMenuItem
javax.swing.JMenuItem.AccessibleJMenuItem
 
Inner classes inherited from class javax.swing.AbstractButton
javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener
 
Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
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
 
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, addMenuListener, addSeparator, createActionChangeListener, createWinListener, doClick, fireMenuCanceled, fireMenuDeselected, fireMenuSelected, getAccessibleContext, getComponent, getDelay, getItem, getItemCount, getMenuComponent, getMenuComponentCount, getMenuComponents, getPopupMenu, getSubElements, getUIClassID, insert, insertSeparator, isMenuComponent, isPopupMenuVisible, isSelected, isTearOff, isTopLevelMenu, menuSelectionChanged, paramString, processKeyEvent, remove, remove, removeMenuListener, setAccelerator, setDelay, setMenuLocation, setModel, setSelected, updateUI
 
Methods inherited from class javax.swing.JMenuItem
addMenuDragMouseListener, addMenuKeyListener, fireMenuDragMouseDragged, fireMenuDragMouseEntered, fireMenuDragMouseExited, fireMenuDragMouseReleased, fireMenuKeyPressed, fireMenuKeyReleased, fireMenuKeyTyped, getAccelerator, 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, getActionCommand, getDisabledIcon, getDisabledSelectedIcon, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getLabel, getMargin, getMnemonic, getModel, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, paintBorder, removeActionListener, removeChangeListener, removeItemListener, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setFocusPainted, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setLabel, setMargin, setMnemonic, setMnemonic, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInsets, getInsets, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, processComponentKeyEvent, processFocusEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setFont, setForeground, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getLayout, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, removeContainerListener, setCursor, setLayout, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hide, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MORE

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

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.

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);
Overrides:
add in class javax.swing.JMenu

add

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

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)
Overrides:
add in class javax.swing.JMenu

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.
Overrides:
insert in class javax.swing.JMenu

insert

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

remove

public void remove(int index)
Override JMoreMenu remove. Automatically take "more>" structure into account.
Overrides:
remove in class javax.swing.JMenu

removeAll

public void removeAll()
Override JMoreMenu removeAll. Automatically take "more>" structure into account.
Overrides:
removeAll in class javax.swing.JMenu

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!.
Overrides:
setPopupMenuVisible in class javax.swing.JMenu