configure
Class ConfigureDemo

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--java.awt.Window
                    |
                    +--java.awt.Frame
                          |
                          +--javax.swing.JFrame
                                |
                                +--configure.ConfigureDemo
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.event.ActionListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.swing.RootPaneContainer, java.io.Serializable, javax.swing.WindowConstants

public class ConfigureDemo
extends javax.swing.JFrame
implements java.awt.event.ActionListener

ConfigureDemo brings up a simple button editor which allows the user to configure the appearance of a JPanel which is passed as an argument to its constructor. These changes are for the session only, and will not be saved anywhere. When the static method main() is run, an instance of ConfigureDemo is created, as well as a SquarePuzzle and SquarePuzzleDisplay. The SquarePuzzleDisplay is used in the construction of the ConfigureDemo instance. This code demonstrates several important features: (1) ConfigureDemo doesn't know anything about the internal structure of the JPanel being edited. It simply listens for events generated by AbstractButtons on the JPanel. (2) When a user clicks on a button in the SquarePuzzle, the generated ActionEvent is heard both by the ConfigureDemo, which sets theComponent appropriately, and also by the Translation component of SquarePuzzle (which, in this case, consists of a single actionPerformed() method in SquarePuzzleDisplay.java). Consequently, the editing can potentially go on at the same time as the use of the JPanel. (3) ConfigureDemo doesn't notice when something else undoes its configurations. For instance, the SquarePuzzle resets the Text fields of the TileButtons of the SquarePuzzleDisplay after each attempt to slide a tile. This would be a drawback for many applications, and a feature for many others. (4) actionPerformed() is not careful about verifying the source of the ActionEvents it receives. For example, any component which has an attached ActionCommand "Quit" will cause the program to exit, not just the Quit menu. This would cause problems if the given JPanel contains a Quit button, to which we wanted to attach an icon. Also, if an ActionEvent is generated which does not come from an AbstractButton, our program will generate errors. This is because our actionPerformed() function does not check to make sure every ActionEvent comes from an AbstractButton, but assumes so anyway. Do not use this code as a model for good program design. It is intended to illustrate only the following:

See Also:
Serialized Form

Inner classes inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Inner classes inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Inner classes inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent
 
Field Summary
protected  javax.swing.AbstractButton theComponent
           
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
ConfigureDemo(ActionPanel targetPanel)
          Creates a new Frame with a configuration menu, and a contentPane with contains targetPanel.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
           
static void main(java.lang.String[] args)
          Creates a new ConfigureDemo with a SquarePuzzleDisplay as its targetPanel.
protected  void menuSetUp()
          Creates and configures the MenuBar.
protected  javax.swing.JMenuItem newMI(javax.swing.JMenu m, java.lang.String newMenuItemText)
          newMI creates a new MenuItem with given Text string, adds it to the given Menu, registers the ConfigureDemo as ActionListener for the MenuItem, and returns the new MenuItem (in case further customization is desired).
protected  javax.swing.JMenuItem newMI(javax.swing.JMenu m, java.lang.String newMenuItemText, java.lang.String iconFileName)
          A slight enhancement to the previous newMI.
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isRootPaneCheckingEnabled, paramString, processKeyEvent, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getCursorType, getFrames, getIconImage, getMenuBar, getState, getTitle, isResizable, remove, removeNotify, setCursor, setIconImage, setMenuBar, setResizable, setState, setTitle
 
Methods inherited from class java.awt.Window
addWindowListener, applyResourceBundle, applyResourceBundle, dispose, getFocusOwner, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getOwnedWindows, getOwner, getToolkit, getWarningString, hide, isShowing, pack, postEvent, processEvent, removeWindowListener, setCursor, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setFont, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, addPropertyChangeListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getInputMethodRequests, getLocation, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isDisplayable, isDoubleBuffered, isEnabled, isFocusTraversable, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseMotionEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setForeground, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

theComponent

protected javax.swing.AbstractButton theComponent
Constructor Detail

ConfigureDemo

public ConfigureDemo(ActionPanel targetPanel)
Creates a new Frame with a configuration menu, and a contentPane with contains targetPanel. ConfigureDemo registers as an ActionListener with targetPanel (which in turn should call the addActionListener() method of each of targetPanel's GUI components). ConfigureDemo uses the ActionEvents it receives to decide which component is being edited.
Method Detail

newMI

protected javax.swing.JMenuItem newMI(javax.swing.JMenu m,
                                      java.lang.String newMenuItemText)
newMI creates a new MenuItem with given Text string, adds it to the given Menu, registers the ConfigureDemo as ActionListener for the MenuItem, and returns the new MenuItem (in case further customization is desired).

newMI

protected javax.swing.JMenuItem newMI(javax.swing.JMenu m,
                                      java.lang.String newMenuItemText,
                                      java.lang.String iconFileName)
A slight enhancement to the previous newMI.

menuSetUp

protected void menuSetUp()
Creates and configures the MenuBar. Called by the ConfigureDemo constructor. Note the use of this method and the newMI method to reduce clutter in the source code.

main

public static void main(java.lang.String[] args)
Creates a new ConfigureDemo with a SquarePuzzleDisplay as its targetPanel. The SquarePuzzleDisplay also actively displays a SquarePuzzle backend, so that the user can run the display and edit it at the same time.

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)
Specified by:
actionPerformed in interface java.awt.event.ActionListener