ix.iface.ui
Class IFormPanel

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 ix.iface.ui.IFormPanel
All Implemented Interfaces:
FormModelListener, java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible
Direct Known Subclasses:
ActionFormPanel, AROEditorPanel.AROFormPanel, GlobalFormPanel

public class IFormPanel
extends javax.swing.JPanel
implements java.awt.event.ActionListener, FormModelListener

A form-style panel for viewing/editing an object Each object field has a sub-panel associated with it that has a label, a panel item, and may have buttons (IXEditorPanel).

See Also:
Serialized Form

Nested Class Summary
 class IFormPanel.FieldChooser
           
 
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
protected  java.util.HashMap displayBits
           
(package private)  IFormPanel.FieldChooser fieldEditor
           
protected  java.util.HashMap fieldRenderers
           
protected  java.util.HashMap hideBits
           
protected  java.util.HashSet listeners
           
protected  IFormModel model
           
protected  java.util.HashMap nameBits
           
protected  java.awt.Container parent
           
protected  java.util.HashSet simpleFields
           
 
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
IFormPanel()
          Creates a panel with a GridBagLayout and sets renderers (if any).
IFormPanel(IFormModel m)
          Creates a panel with the given model and sets renderers (if any).
IFormPanel(IFormModel m, FormDataListener l)
          Creates a panel with the given model and sets renderers (if any).
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent ae)
           
 void addFormActionListener(java.awt.event.ActionListener ml)
           
 void clear()
          Clears the data in the panel.
protected static void clearBits(java.util.HashMap bits)
           
 void clearField(java.lang.String field)
          Clears the panel bit of the given field.
 void clearFields()
          Clears the panel bits of all fields.
protected  java.lang.Object deRenderValue(java.lang.String field, java.lang.Object data)
          Default de-rendering of the given value for the given field - transforms arrays to collections.
 void displayFieldData(java.lang.String field)
          XXXX Loads the data of the given field into the panel.
 void displayModelData()
          Loads the data of the current model into the panel.
 void editFields(java.awt.Frame frame)
           
 void ensurePanelBits(IFormModel m)
          Ensures that the panel bits for the given model are made.
 void formModelChanged(java.lang.String change, ObjectChangeEvent oce)
          The model changed, so update the display.
 IXEditorPanel getFieldBit(java.lang.String field)
           
 java.lang.Object getFieldData(java.lang.String field)
          Gets the field's value from its display component.
 IFormModel getModel()
          Gets the panel's model.
 void gotConstraint(JConstraintEditor ce, java.lang.Object o, java.lang.Object constraint)
           
protected  void hideBits()
           
 boolean isListField(java.lang.String field)
           
 boolean isSimpleField(java.lang.String field)
           
protected  IXEditorPanel makeDisplayBit(java.lang.String field)
          Makes a display panel with the name as its label and a suitable item.
protected  java.lang.Object renderValue(java.lang.String field, java.lang.Object value)
          Default rendering of the given value for the given field - transforms collections to arrays.
 void saveFieldData(java.lang.String field)
          Saves the field's value from its display component into the model's object.
 void saveToObject()
          Saves the data from the display panels into the model's object.
 void saveToObject(EditableObject targetObject)
          Saves the display information from the display panels into the given object.
 void setFieldData(java.lang.String field, java.lang.Object value)
          Sets the given data of the given field in the panel.
protected  void setHideBits(java.util.Collection fields)
           
 void setModel(IFormModel m)
          Sets the panel's model and loads the data into the panel.
 void setModel(IFormModel m, FormDataListener l)
          Sets the panel's model and loads the data into the panel.
 void setRenderer(java.lang.String field, IXRenderer r)
          Sets the given renderer for the given field.
protected  void setRenderers()
          Sets the renderers to be added to the panel items (lists) of fiels.
 void setSimpleField(java.lang.String field)
           
 void unsetSimpleField(java.lang.String field)
           
protected  void updateHideBits()
           
 void updateNames(java.util.List fields, java.util.HashMap bits)
          Change the labels in the given panels using the given fields.
 
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, processContainerEvent, 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
 

Field Detail

model

protected IFormModel model

nameBits

protected java.util.HashMap nameBits

displayBits

protected java.util.HashMap displayBits

fieldRenderers

protected java.util.HashMap fieldRenderers

simpleFields

protected java.util.HashSet simpleFields

listeners

protected java.util.HashSet listeners

hideBits

protected java.util.HashMap hideBits

parent

protected java.awt.Container parent

fieldEditor

IFormPanel.FieldChooser fieldEditor
Constructor Detail

IFormPanel

public IFormPanel()
Creates a panel with a GridBagLayout and sets renderers (if any).


IFormPanel

public IFormPanel(IFormModel m)
Creates a panel with the given model and sets renderers (if any).


IFormPanel

public IFormPanel(IFormModel m,
                  FormDataListener l)
Creates a panel with the given model and sets renderers (if any).

Method Detail

setModel

public void setModel(IFormModel m,
                     FormDataListener l)
Sets the panel's model and loads the data into the panel. Ensures that the panel items are available for the object information, and sets the renderers. Ensures this is notified of model changes.


setModel

public void setModel(IFormModel m)
Sets the panel's model and loads the data into the panel. Ensures that the panel items are available for the object information, and sets the renderers. Ensures this is notified of model changes.


getModel

public IFormModel getModel()
Gets the panel's model.


setRenderer

public void setRenderer(java.lang.String field,
                        IXRenderer r)
Sets the given renderer for the given field. If the field has an IXEditorPanel bit, sets the renderer for the panel.


isListField

public boolean isListField(java.lang.String field)

setSimpleField

public void setSimpleField(java.lang.String field)

unsetSimpleField

public void unsetSimpleField(java.lang.String field)

isSimpleField

public boolean isSimpleField(java.lang.String field)

ensurePanelBits

public void ensurePanelBits(IFormModel m)
Ensures that the panel bits for the given model are made. If the model has lazy fields, these are filled now, so ignore model updates during this method.


editFields

public void editFields(java.awt.Frame frame)

gotConstraint

public void gotConstraint(JConstraintEditor ce,
                          java.lang.Object o,
                          java.lang.Object constraint)

hideBits

protected void hideBits()

setHideBits

protected void setHideBits(java.util.Collection fields)

updateHideBits

protected void updateHideBits()

clearBits

protected static void clearBits(java.util.HashMap bits)

makeDisplayBit

protected IXEditorPanel makeDisplayBit(java.lang.String field)
Makes a display panel with the name as its label and a suitable item. The item to display the fields will be:


displayModelData

public void displayModelData()
Loads the data of the current model into the panel. Looks up the fields in the model.


displayFieldData

public void displayFieldData(java.lang.String field)
XXXX Loads the data of the given field into the panel. Gets the value from the model, renders it, and sets the panel bit.


setFieldData

public void setFieldData(java.lang.String field,
                         java.lang.Object value)
Sets the given data of the given field in the panel. Renders the data first.


clearFields

public void clearFields()
Clears the panel bits of all fields.


clearField

public void clearField(java.lang.String field)
Clears the panel bit of the given field.


renderValue

protected java.lang.Object renderValue(java.lang.String field,
                                       java.lang.Object value)
Default rendering of the given value for the given field - transforms collections to arrays. Used to provide data to the panel.


deRenderValue

protected java.lang.Object deRenderValue(java.lang.String field,
                                         java.lang.Object data)
Default de-rendering of the given value for the given field - transforms arrays to collections. Used to store data from the panel.


setRenderers

protected void setRenderers()
Sets the renderers to be added to the panel items (lists) of fiels. To be overridden by sub-classes.


getFieldBit

public IXEditorPanel getFieldBit(java.lang.String field)

getFieldData

public java.lang.Object getFieldData(java.lang.String field)
Gets the field's value from its display component.


saveFieldData

public void saveFieldData(java.lang.String field)
Saves the field's value from its display component into the model's object.


saveToObject

public void saveToObject()
Saves the data from the display panels into the model's object.


saveToObject

public void saveToObject(EditableObject targetObject)
Saves the display information from the display panels into the given object.


clear

public void clear()
Clears the data in the panel.


formModelChanged

public void formModelChanged(java.lang.String change,
                             ObjectChangeEvent oce)
The model changed, so update the display.

Specified by:
formModelChanged in interface FormModelListener

updateNames

public void updateNames(java.util.List fields,
                        java.util.HashMap bits)
Change the labels in the given panels using the given fields.


actionPerformed

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

addFormActionListener

public void addFormActionListener(java.awt.event.ActionListener ml)