net.sourceforge.webcompmath.awt
Class WcmPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by net.sourceforge.webcompmath.awt.WcmPanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class WcmPanel
extends javax.swing.JPanel

A WcmPanel is a JPanel with an associated Controller. When an InputObject or Computable is added to the WcmPanel, it is automatically added to the controller. When a sub-WcmPanel is added, the Controller of the sub-panel is "attatched" to the controller of the main panel so that objects in the sub-panel will also be controlled by the Controller of the main panel. So, if you build an interface entirely from WcmPanels, a lot of the control setup is done automatically. Note that to make this work, you will need a "mainPanel" that fills the entire window or applet (or at least the part that holds JCM components). You should also call the gatherInputs() method of the main WcmPanel after it is completely set up, so that changes in input objects will cause the panel's controller to be notified, or, alternatively, you can register the Controller by hand with InputObjects so that the Controller will be notified when they change.

The disadvantage of this is that all the data used in the interface is recomputed, even if the input objects that they depend on have not changed. For example. if the user changes the value in a VarialbleInput, all the points on a graph will be recomputed even if the function has not changed. The alternative is to use regular JPanels for all or part of the interface and configure some Controllers by hand.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.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
WcmPanel()
          Create a WcmPanel that uses a BorderLayout with horizontal and veritcal gaps of 3 pixels.
WcmPanel(int gap)
          Create a WcmPanel that uses a BorderLayout with horizontal and vertical gaps of "gap" pixels.
WcmPanel(int rows, int columns)
          Create a WcmPanel that uses a GridLayout with the specified number of rows and columns and with horizontal and veritcal gaps of 3 pixels between components.
WcmPanel(int rows, int columns, int gap)
          Create a WcmPanel that uses a GridLayout with the specified number of rows and columns and with horizontal and vertical gaps of "gap" pixels.
WcmPanel(java.awt.LayoutManager layout)
          Create a WcmPanel that uses a given layout manager.
 
Method Summary
 void gatherInputs()
          This method will set all the input objects in this WcmPanel and in sub-WcmPanels, as well as any other input objects that have been added to the panels' Controllers, to notify the Controller of this WcmPanel when they change.
 Controller getController()
          Return the controller associated with this WcmPanel.
 void processContainerEvent(java.awt.event.ContainerEvent evt)
          Called by the system when a component is added to or removed from this panel.
 void setController(Controller c)
          Set the controller for the panel.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, 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, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, 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, setVisible, 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, processEvent, remove, 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, 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, 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, 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

WcmPanel

public WcmPanel(java.awt.LayoutManager layout)
Create a WcmPanel that uses a given layout manager.

Parameters:
layout - layout manager to use. (This could be null.)

WcmPanel

public WcmPanel()
Create a WcmPanel that uses a BorderLayout with horizontal and veritcal gaps of 3 pixels.


WcmPanel

public WcmPanel(int gap)
Create a WcmPanel that uses a BorderLayout with horizontal and vertical gaps of "gap" pixels.

Parameters:
gap - inset gap to use.

WcmPanel

public WcmPanel(int rows,
                int columns)
Create a WcmPanel that uses a GridLayout with the specified number of rows and columns and with horizontal and veritcal gaps of 3 pixels between components.

Parameters:
rows - number of rows in the GridLayout.
columns - number of columns in the GridLayout.

WcmPanel

public WcmPanel(int rows,
                int columns,
                int gap)
Create a WcmPanel that uses a GridLayout with the specified number of rows and columns and with horizontal and vertical gaps of "gap" pixels.

Parameters:
rows - number of rows in the GridLayout.
columns - number of columns in the GridLayout.
gap - number of pixels between rows and columns
Method Detail

getController

public Controller getController()
Return the controller associated with this WcmPanel.

Returns:
the controller

setController

public void setController(Controller c)
Set the controller for the panel. Intended for use by WCMPanelBean to help it manage controllers when using Eclipse VE

Parameters:
c - the controller to use for this panel

gatherInputs

public void gatherInputs()
This method will set all the input objects in this WcmPanel and in sub-WcmPanels, as well as any other input objects that have been added to the panels' Controllers, to notify the Controller of this WcmPanel when they change. It does this by calling setOnUserAction(c) -- or a corresponding method -- for each input object c. This is meant to be used, ordinarily, at the end of an applet's init() method, as an alternative to adding each of the input objects to the controller by hand.


processContainerEvent

public void processContainerEvent(java.awt.event.ContainerEvent evt)
Called by the system when a component is added to or removed from this panel. This takes care of automatically adding and removing things from this Panel's Controller. This is not meant to be called directly

Overrides:
processContainerEvent in class java.awt.Container
Parameters:
evt - the event created when a component is added