schmitzm.swing.menu
Class ConnectedPopupMenu

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPopupMenu
                  extended by schmitzm.swing.menu.ConnectedPopupMenu
All Implemented Interfaces:
ActionListener, MouseListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, MenuElement

public class ConnectedPopupMenu
extends JPopupMenu
implements MouseListener, ActionListener


Diese Klasse wurde urspruenglich 2002/2003 von Martin Schmitz fuer die ADAGIOS-Java-Library (Universitaet Bonn) erstellt, 2009 in das SCHMITZM-Projekt uebernommen und teilweise erweitert.
Diese Klasse erweitert das JPopupMenu. Menueeintraege (Instanzen von JMenuItem) werden automatisch in der add(String)-Methode erzeugt und dem Menue hinzugefuegt. Es muss nicht jedem Menueeintragen einzeln ein eigener ActionListener hinzugefuegt werden, um auf eine Aktion zu reagieren. Das ConnectedPopupMenu selbst "achtet" auf eine Aktion und informiert ueber einen ActionListener die verbundenen Anwendungen. In deren actionPerformed(..)-Methode kann die Anwendung ueber getProcessedItem() ermittelt werden, welcher Menueeintrag gewaehlt wurde.

Author:
Martin Schmitz (University of Bonn/Germany)
See Also:
JPopupMenu, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPopupMenu
JPopupMenu.AccessibleJPopupMenu, JPopupMenu.Separator
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
 
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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
ConnectedPopupMenu()
           
 
Method Summary
 void actionPerformed(ActionEvent e)
          Checkt, auf welchen Menueeintrag geklickt wurde und informiert die angeschlossenen ActionListener ueber das Ereignis.
 JMenuItem add(String desc)
          Erzeugt einen Menueeintrag und fuegt ihn dem Menue hinzu.
 void addActionListener(ActionListener listener)
          Fuegt dem Menue einen ActionListener hinzu.
 void connectTo(Component comp)
          Verbindet das Popup-Menue mit einer Komponente.
 int getProcessedItem()
          Liefert den Index des Menueeintrags, der ausgewaehlt wurde.
 void mouseClicked(MouseEvent e)
          Implementiert nichts.
 void mouseEntered(MouseEvent e)
          Implementiert nichts.
 void mouseExited(MouseEvent e)
          Implementiert nichts.
 void mousePressed(MouseEvent e)
          Wird aufgerufen, sobald eine Maustaste auf einer mit dem Menue verbundene Komponente gedrueckt wurde.
 void mouseReleased(MouseEvent e)
          Wird aufgerufen, sobald eine Maustaste auf einer mit dem Menue verbundene Komponente losgelassen wurde.
 void removeActionListener(ActionListener listener)
          Entfernt einen ActionListener.
 
Methods inherited from class javax.swing.JPopupMenu
add, add, addMenuKeyListener, addPopupMenuListener, addSeparator, createActionChangeListener, createActionComponent, firePopupMenuCanceled, firePopupMenuWillBecomeInvisible, firePopupMenuWillBecomeVisible, getAccessibleContext, getComponent, getComponentAtIndex, getComponentIndex, getDefaultLightWeightPopupEnabled, getInvoker, getLabel, getMargin, getMenuKeyListeners, getPopupMenuListeners, getSelectionModel, getSubElements, getUI, getUIClassID, insert, insert, isBorderPainted, isLightWeightPopupEnabled, isPopupTrigger, isVisible, menuSelectionChanged, pack, paintBorder, paramString, processFocusEvent, processKeyEvent, processKeyEvent, processMouseEvent, remove, removeMenuKeyListener, removePopupMenuListener, setBorderPainted, setDefaultLightWeightPopupEnabled, setInvoker, setLabel, setLightWeightPopupEnabled, setLocation, setPopupSize, setPopupSize, setSelected, setSelectionModel, setUI, setVisible, show, updateUI
 
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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, 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, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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, 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, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, 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
 

Constructor Detail

ConnectedPopupMenu

public ConnectedPopupMenu()
Method Detail

addActionListener

public void addActionListener(ActionListener listener)
Fuegt dem Menue einen ActionListener hinzu. Dieser wird informiert, sobald ein Menueeintrag des PopupMenue ausgewaehlt wurde.


removeActionListener

public void removeActionListener(ActionListener listener)
Entfernt einen ActionListener.


mousePressed

public void mousePressed(MouseEvent e)
Wird aufgerufen, sobald eine Maustaste auf einer mit dem Menue verbundene Komponente gedrueckt wurde. Die Methode checkt, ob es sich bei dem Klick um einen PopupTrigger (i.A. Rechtsklick) handelt. Ist dies der Fall, wird das PopupMenue geoeffnet.

Specified by:
mousePressed in interface MouseListener

mouseReleased

public void mouseReleased(MouseEvent e)
Wird aufgerufen, sobald eine Maustaste auf einer mit dem Menue verbundene Komponente losgelassen wurde. Die Methode checkt, ob es sich bei dem Loslassen um einen PopupTrigger (i.A. Rechtsklick) handelt. Ist dies der Fall, wird das PopupMenue geoeffnet.

Specified by:
mouseReleased in interface MouseListener

getProcessedItem

public int getProcessedItem()
Liefert den Index des Menueeintrags, der ausgewaehlt wurde. Ist nur zugaenglich, waehrend ein ActionListerner ueber die Auswahl eines Menueeintrags informiert wird!! Zu allen anderen Zeitpunkten liefert diese Methode -1.


actionPerformed

public void actionPerformed(ActionEvent e)
Checkt, auf welchen Menueeintrag geklickt wurde und informiert die angeschlossenen ActionListener ueber das Ereignis.
Diese koennen (in ihrer actionPerformed-Methode ueber die Methode getProcessedItem() ermitteln, auf welchen Menueeintrag geklickt wurde.
Das an die ActionListener weiter gereichte ActionEvent erhaelt als Quelle (getSource()) dasjenige Objekt, auf dem das PopupMenue (mittels Linksklick) geoeffnet wurde (nicht das ConnectedPopupMenu!!)

Specified by:
actionPerformed in interface ActionListener
See Also:
Component.addMouseListener(MouseListener)

connectTo

public void connectTo(Component comp)
Verbindet das Popup-Menue mit einer Komponente. Beim (Rechts-)Klick auf diese Komponente wird das Popup-Menue geoeffnet.


add

public JMenuItem add(String desc)
Erzeugt einen Menueeintrag und fuegt ihn dem Menue hinzu. Als ActionListener fuer den Menueeintrag wird die ConnectedPopupMenue-Instanz selbst verwendet, welcher wiederum die angeschlossenen ActionListener informiert.

Overrides:
add in class JPopupMenu
Parameters:
desc - Beschreibung fuer den Menueeintrag
See Also:
actionPerformed(ActionEvent)

mouseClicked

public void mouseClicked(MouseEvent e)
Implementiert nichts.

Specified by:
mouseClicked in interface MouseListener

mouseEntered

public void mouseEntered(MouseEvent e)
Implementiert nichts.

Specified by:
mouseEntered in interface MouseListener

mouseExited

public void mouseExited(MouseEvent e)
Implementiert nichts.

Specified by:
mouseExited in interface MouseListener