de.jsystems.framework.menu
Class BusinessMenu

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JMenuBar
                  extended byde.jsystems.framework.controls.FMenuBar
                      extended byde.jsystems.framework.menu.BusinessMenu
All Implemented Interfaces:
Accessible, IActionInterface, IAncestor, IComponent, IContainer, IFocus, IHierarchy, IHierarchyBounds, IInputMethod, IKey, ImageObserver, IMouse, IMouseInput, IMouseMotion, IPropertyChange, IVetoableChange, MenuContainer, MenuElement, Serializable

public class BusinessMenu
extends FMenuBar

Diese Klasse erzeugt ein Menue aufgrund des Inhaltes einer Properties-Datei. Reagiert wird auf die Menuepunkte in entsprechenden Actionklassen, wobei diese Klassen in der Propertiesdatei mit angegeben sind. Als Beispiel fuer den Aufbau der Datei kann die Datei defaultmenu.properties benutzt werden. Um sich das erzeugen eines Menues einfacher zu machen, kann mit Microsoft VisualC++ mit dem Resourceneditor ein Menue erzeugt werden. In der Datei *.rc befindet sich im Abschnitt
///////////////////////////////////////////////////////////////////////////// // // Menu // IDR_MENU1 MENU DISCARDABLE BEGIN POPUP "Datei" ...
der Aufbau des Menues. Hier sind allerdings noch kleine Anpassungen notwendig, damit dieser Abschnitt zum erzeugen eines Menues benutzt werden kann. Zuerst muß der generierte Text ab der Zeile IDR_MENU1 MENU DISCARDABLE mit TITEL bzw. ENDTITEL eingeklammert werden. Die Zeilen mit den Slashes '/' und die Zeile IDR_MENU1 MENU DISCARDABLE werden entfernt. Der Bezeichner 'POPUP' wird durch 'MENU' ersetzt. Ebenso verschwinden alle Anfuehrungszeichen. Die Eintraege fuer die einzelnen Menuepunkte muessen mit 'ITEM', 'RADIOITEM' oder 'CHECKBOXITEM' beginnen, nicht mit 'MENUITEM'. Was natuerlich auch noch noetig ist, ist das setzen der Actionklassennamen fuer die einzelnen Menuepunkte. Hier wird wieder auf die Datei defaultmenu.properties verwiesen. Als letztes muessen die Zeilen nur noch gepipt('|') werden, damit sie so aussehen wie in der Datei defaultmenu.properties.

Version:
1.0
Copyright by Jens Homm 2001 - 2003
Author:
Jens Homm JSYSTEMS
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JMenuBar
JMenuBar.AccessibleJMenuBar
 
Nested classes inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  ActionManager am
          ActionManager aus dem Controller.
protected  Controller controller
          Controller fuer die Menueaktions
protected  Hashtable menuEntrys
          Hashtable mit allen Menuepunkten.
protected  String propName
          Name der Properties-Datei
protected  MenuParamString zeilen
          ParamString-Objekt
 
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.Container
 
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
BusinessMenu(Controller controller, String propName)
          Konstruktor.
 
Method Summary
 void addMenu(FMenu menu, int index)
          Fuegt dem Menue ein weiteres Menue hinzu.
 void addMenuItem(String name, JMenuItem item, int index)
          Fuegt dem ueber den Namen spezifizierten Menue einen Menuepunkt hinzu.
 void disableMenuEntry(String name)
          Schaltet den durch den uebergebenen Text gekennzeichneten Menuepunkt ab.
 void enableMenuEntry(String name)
          Schaltet den durch den uebergebenen Text gekennzeichneten Menuepunkt wieder aktiv.
 boolean existMenuEntry(String name)
          Prueft, ob es unter dem uebergebenen Namen einen Menueeintrag gibt.
 JMenuItem getMenuEntry(String name)
          Gibt den Menueeintrag zurueck, der dem uebergebenen Namen entspricht.
 void hideMenuEntry(String name)
          Schaltet den durch den uebergebenen Text gekennzeichneten Menuepunkt unsichtbar.
 JMenuItem removeMenuEntry(String name)
          Loescht den mit dem Namen spezifizierten Menueeintrag aus dem Menue.
 void save(String filename)
          Speichert das Menue in einer Properties-Datei.
 void unhideMenuEntry(String name)
          Schaltet den durch den uebergebenen Text gekennzeichneten Menuepunkt wieder sichtbar.
 
Methods inherited from class de.jsystems.framework.controls.FMenuBar
addMouseInputListener, getActionClassForAncestor, getActionClassForComponent, getActionClassForContainer, getActionClassForFocus, getActionClassForHierarchy, getActionClassForHierarchyBounds, getActionClassForInputMethod, getActionClassForKey, getActionClassForMouse, getActionClassForMouseInput, getActionClassForMouseMotion, getActionClassForPropertyChange, getActionClassForVetoableChange, removeMouseInputListener, setActionClassForAncestor, setActionClassForComponent, setActionClassForContainer, setActionClassForFocus, setActionClassForHierarchy, setActionClassForHierarchyBounds, setActionClassForInputMethod, setActionClassForKey, setActionClassForMouse, setActionClassForMouseInput, setActionClassForMouseMotion, setActionClassForPropertyChange, setActionClassForVetoableChange
 
Methods inherited from class javax.swing.JMenuBar
add, addNotify, getAccessibleContext, getComponent, getComponentAtIndex, getComponentIndex, getHelpMenu, getMargin, getMenu, getMenuCount, getSelectionModel, getSubElements, getUI, getUIClassID, isBorderPainted, isSelected, menuSelectionChanged, paintBorder, paramString, processKeyBinding, processKeyEvent, processMouseEvent, removeNotify, setBorderPainted, setHelpMenu, setMargin, setSelected, setSelectionModel, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, 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, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, 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, add, add, addContainerListener, addImpl, applyComponentOrientation, 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, remove, remove, removeAll, 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, imageUpdate, 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, setComponentOrientation, 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 de.jsystems.framework.common.action.IActionInterface
isEnabled, setEnabled
 
Methods inherited from interface de.jsystems.framework.common.action.swing.IAncestor
addAncestorListener, removeAncestorListener
 
Methods inherited from interface de.jsystems.framework.common.action.beans.IPropertyChange
addPropertyChangeListener, removePropertyChangeListener
 
Methods inherited from interface de.jsystems.framework.common.action.beans.IVetoableChange
addVetoableChangeListener, removeVetoableChangeListener
 
Methods inherited from interface de.jsystems.framework.common.action.awt.IContainer
addContainerListener, removeContainerListener
 
Methods inherited from interface de.jsystems.framework.common.action.awt.IComponent
addComponentListener, removeComponentListener
 
Methods inherited from interface de.jsystems.framework.common.action.awt.IFocus
addFocusListener, removeFocusListener
 
Methods inherited from interface de.jsystems.framework.common.action.awt.IHierarchy
addHierarchyListener, removeHierarchyListener
 
Methods inherited from interface de.jsystems.framework.common.action.awt.IHierarchyBounds
addHierarchyBoundsListener, removeHierarchyBoundsListener
 
Methods inherited from interface de.jsystems.framework.common.action.awt.IInputMethod
addInputMethodListener, removeInputMethodListener
 
Methods inherited from interface de.jsystems.framework.common.action.awt.IKey
addKeyListener, removeKeyListener
 
Methods inherited from interface de.jsystems.framework.common.action.awt.IMouse
addMouseListener, removeMouseListener
 
Methods inherited from interface de.jsystems.framework.common.action.awt.IMouseMotion
addMouseMotionListener, removeMouseMotionListener
 

Field Detail

menuEntrys

protected Hashtable menuEntrys
Hashtable mit allen Menuepunkten. Wird benoetigt, um Menuepunkte ein- und auszuschalten.


controller

protected Controller controller
Controller fuer die Menueaktions


propName

protected String propName
Name der Properties-Datei


zeilen

protected MenuParamString zeilen
ParamString-Objekt


am

protected ActionManager am
ActionManager aus dem Controller.

Constructor Detail

BusinessMenu

public BusinessMenu(Controller controller,
                    String propName)
             throws CreateMenueException
Konstruktor. Erzeugt das Menue mit den Daten in der angegebenen Datei. Im ActionManager des uebergebenen Controllers werden die einzelnen Menuepunkte registriert.

Parameters:
controller - Der Controller, fuer das Menue.
propName - Name der Propertiy-Datei fuer den Menueaufbau.
Throws:
CreateMenueException - wenn beim erzeugen des Menues ein Fehler aufgetreten ist.
Method Detail

disableMenuEntry

public void disableMenuEntry(String name)
Schaltet den durch den uebergebenen Text gekennzeichneten Menuepunkt ab. Damit wird der Text des Menuepunktes dann grau dargestellt und das Menue kann nicht mehr angeklickt werden. Der Name entspricht dabei dem in der Methode #setMenuNamen(FMenu, String) beschriebenen Aufbau. Der Name entspricht dabei nicht dem angezeigten Text im Menue, sondern der Hirarchy des Menuepunktes im kompletten Menuebaum.

Parameters:
name - Der Name des abzuschaltenden Menuepunktes.
See Also:
enableMenuEntry(String)

enableMenuEntry

public void enableMenuEntry(String name)
Schaltet den durch den uebergebenen Text gekennzeichneten Menuepunkt wieder aktiv. Damit wird der Text des Menuepunktes nicht mehr grau dargestellt und das Menue kann wieder angeklickt werden. Der Name entspricht dabei dem in der Methode #setMenuNamen(FMenu, String) beschriebenen Aufbau. Der Name entspricht dabei nicht dem angezeigten Text im Menue, sondern der Hirarchy des Menuepunktes im kompletten Menuebaum.

Parameters:
name - Der Name des einzuschaltenden Menuepunktes.
See Also:
disableMenuEntry(String)

hideMenuEntry

public void hideMenuEntry(String name)
Schaltet den durch den uebergebenen Text gekennzeichneten Menuepunkt unsichtbar. Damit verschwindet der Menuepunkt nur fuer die Anzeige aus dem Menue. Er ist aber immer noch im Menue vorhanden. Der Name entspricht dabei dem in der Methode #setMenuNamen(FMenu, String) beschriebenen Aufbau. Der Name entspricht nicht dem angezeigten Text im Menue, sondern der Hirarchy des Menuepunktes im kompletten Menuebaum.

Parameters:
name - Der Name des unsichtbarzuschaltenden Menuepunktes.
See Also:
unhideMenuEntry(String)

unhideMenuEntry

public void unhideMenuEntry(String name)
Schaltet den durch den uebergebenen Text gekennzeichneten Menuepunkt wieder sichtbar. Damit erscheint der Menuepunkt wieder in der Anzeige des Menues. Der Name entspricht dabei dem in der Methode #setMenuNamen(FMenu, String) beschriebenen Aufbau. Der Name entspricht nicht dem angezeigten Text im Menue, sondern der Hirarchy des Menuepunktes im kompletten Menuebaum.

Parameters:
name - Der Name des sichtbarzuschaltenden Menuepunktes.
See Also:
hideMenuEntry(String)

removeMenuEntry

public JMenuItem removeMenuEntry(String name)
Loescht den mit dem Namen spezifizierten Menueeintrag aus dem Menue. Der uebergebene Name entspricht dabei allerdings nicht dem im Menue angezeigten Text, sondern dem durch die Methode #setMenuNamen(FMenu, String) vergebenen Namen. Dieser spiegelt die Hierarchy im Menuebaum wieder.

Parameters:
name - Der Name des aus dem Menue zu entfernenden Menuepunktes.
Returns:
Der geloeschte Menuepunkt.

addMenu

public void addMenu(FMenu menu,
                    int index)
Fuegt dem Menue ein weiteres Menue hinzu. Der Index gibt an, wo das Menue angezeigt werden soll. Wenn der Index 0 oder negativ ist, wird das Menue ganz links eingefuegt, wenn er groeßer als die Anzahl bisher vorhandener Eintraege ist, wird er ganz rechts eingefuegt. Die Namen fuer die einzelnen Menuekomponenten werden wieder automatisch vergeben. Das sind nicht die angeziegten Namen, sondern Namen fuer die Komponenten selbst. Darueber koennen die Komponenten dann auch abgeschaltet ode runsichtbar geschaltet werden. Im Menue und allen enthaltenen Menuepunkten muss die 'ActionClassForAction' gesetzt sein, da sonst nicht auf den Menuepunkt reagiert werden kann. Die Menuepunkte werden hier mit dem ActionManager des Controllers des Menues verbunden.

Parameters:
menu - Das Menue, das dem BusinessMenu hinzugefuegt werden soll.
index - Der Index, an dem das Menue erscheinen soll.

addMenuItem

public void addMenuItem(String name,
                        JMenuItem item,
                        int index)
Fuegt dem ueber den Namen spezifizierten Menue einen Menuepunkt hinzu. Dieser wird am spezifizierten Index eigefuegt. Falls es unter dem Namen kein Menue gibt passiert nichts. Das uebergebene Item muss vom Typ FMenu oder vom Typ FMenuItem sein. Andernfalls wird eine IllegalArgumentException ausgeloest. Im uebergebenen Menu und allen evtl. enthaltenen Menuepunkten muss die 'ActionClassForAction' gesetzt sein, da andernfalls der Menuepunkt nicht mit einer Action verbunden werden.

Parameters:
name - Der Name des Menues, dem ein neuer Eintrag hinzugefuegt werden soll.
item - Das dem Menue hinzuzufuegende Menueitem.
index - Der Index an dem das Menuitem im Menue erscheinen soll.

existMenuEntry

public boolean existMenuEntry(String name)
Prueft, ob es unter dem uebergebenen Namen einen Menueeintrag gibt.

Parameters:
name - Der Name des gesuchten Menuepunktes.
Returns:
true, wenn es unter dem uebergebenen Namen einen Menueeintrag gibt, ansonsten false.

getMenuEntry

public JMenuItem getMenuEntry(String name)
Gibt den Menueeintrag zurueck, der dem uebergebenen Namen entspricht. Wenn unter diesem Namen kein Menueeintrag registriert ist gibt die Methode NULL zurueck. Das MenueItem ist entweder vom Typ FMenu oder vom Typ FMenu. Deshalb wird hier auch der Typ {javax.swing.JMenuItem} zurueckgegeben, da es sich dabei um die Basisklasse beider Controls handelt.

Parameters:
name - Der Name des zurueckzugebenden Menueeintrages.
Returns:
Der zum Namen gehoerende Menueeintrag oder NULL, wenn es unter diesem Namen keinen Menueeintrag gibt.

save

public void save(String filename)
          throws IOException
Speichert das Menue in einer Properties-Datei. Mit dieser Datei kann das Menue auch wieder aufgebaut werden.

Parameters:
filename - Der Name der Datei in der das Menue gespeichert werden soll.
Throws:
IOException - wenn beim speichern ein Fehler auftritt.