ix.iface.ui
Class IFormPanel

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--ix.iface.ui.IFormPanel
All Implemented Interfaces:
javax.accessibility.Accessible, java.util.EventListener, FormModelListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.awt.event.MouseListener, java.io.Serializable
Direct Known Subclasses:
ActionFormPanel, GlobalFormPanel

public class IFormPanel
extends javax.swing.JPanel
implements java.awt.event.MouseListener, 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

Inner classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent, javax.swing.JComponent.ActionStandin, javax.swing.JComponent.IntVector, javax.swing.JComponent.KeyboardState
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.AWTTreeLock
 
Field Summary
protected  java.util.HashMap displayBits
           
protected  java.util.HashMap fieldRenderers
           
protected  java.util.List 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
_bounds, accessibleContext, listenerList, paintingChild, 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
component, containerListener, layoutMgr, listeningBoundsChildren, listeningChildren, ncomponents
 
Fields inherited from class java.awt.Component
actionListenerK, adjustmentListenerK, appContext, background, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, componentListener, componentListenerK, componentOrientation, containerListenerK, cursor, dropTarget, enabled, eventMask, focusListener, focusListenerK, font, foreground, graphicsConfig, hasFocus, height, hierarchyBoundsListener, hierarchyBoundsListenerK, hierarchyListener, hierarchyListenerK, incRate, inputMethodListener, inputMethodListenerK, isInc, isPacked, itemListenerK, keyListener, keyListenerK, LEFT_ALIGNMENT, locale, LOCK, metrics, minSize, mouseListener, mouseListenerK, mouseMotionListener, mouseMotionListenerK, newEventsOnly, ownedWindowK, peer, peerFont, popups, prefSize, RIGHT_ALIGNMENT, textListenerK, TOP_ALIGNMENT, valid, visible, width, windowClosingException, windowListenerK, x, y
 
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).
 
Method Summary
 void addFormMouseListener(java.awt.event.MouseListener 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 the given list of 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 ensurePanelBits(IFormModel m)
          Ensures that the panel bits for the given model are made.
 void formModelChanged(java.lang.String change)
          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.
 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.
 void mouseClicked(java.awt.event.MouseEvent me)
           
 void mouseEntered(java.awt.event.MouseEvent me)
           
 void mouseExited(java.awt.event.MouseEvent me)
           
 void mousePressed(java.awt.event.MouseEvent me)
           
 void mouseReleased(java.awt.event.MouseEvent me)
           
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(java.lang.Object 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.
 void setModel(IFormModel m)
          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)
           
 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, getUIClassID, paramString, updateUI
 
Methods inherited from class javax.swing.JComponent
_paintImmediately, addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, alwaysOnTop, checkIfChildObscuredBySibling, componentInputMapChanged, computeVisibleRect, computeVisibleRect, compWriteObjectNotify, contains, createToolTip, disable, enable, enableSerialization, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getCreatedDoubleBuffer, getDebugGraphicsOptions, getGraphics, getHeight, getInputMap, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyBindings, processKeyBindingsForAllComponents, processKeyEvent, processMouseMotionEvent, putClientProperty, rectangleIsObscured, rectangleIsObscuredBySibling, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setCreatedDoubleBuffer, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPaintingChild, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, setVisible, shouldDebugGraphics, superProcessMouseMotionEvent, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, adjustListeningChildren, applyOrientation, checkGD, countComponents, createChildHierarchyEvents, createHierarchyEvents, deliverEvent, dispatchEventImpl, dispatchEventToSelf, doLayout, eventEnabled, findComponentAt, findComponentAt, findComponentAt, getAccessibleAt, getAccessibleChild, getAccessibleChildrenCount, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents_NoClientCode, getComponents, getLayout, getMouseEventTarget, getWindow, insets, invalidate, invalidateTree, isAncestorOf, layout, lightweightPaint, lightweightPrint, list, list, locate, minimumSize, nextFocus, numListening, paintComponents, paintHeavyweightComponents, postProcessKeyEvent, postsOldMouseEvents, preferredSize, preProcessKeyEvent, printComponents, printHeavyweightComponents, processContainerEvent, processEvent, proxyEnableEvents, proxyRequestFocus, remove, remove, removeAll, removeContainerListener, setFocusOwner, setLayout, transferFocus, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, areInputMethodsEnabled, bounds, checkImage, checkImage, checkWindowClosingException, coalesceEvents, constructComponentName, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getAccessibleIndexInParent, getAccessibleStateSet, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont_NoClientCode, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen_NoTreeLock, getLocationOnScreen, getName, getNativeContainer, getParent_NoClientCode, getParent, getPeer, getSize, getToolkit, getToolkitImpl, getTreeLock, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabled, isEnabledImpl, isLightweight, isRecursivelyVisible, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resetGC, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
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.List listeners

parent

protected java.awt.Container parent
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).
Method Detail

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.

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.

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 the given list of 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(java.lang.Object 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)
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.

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent me)
Specified by:
mouseClicked in interface java.awt.event.MouseListener

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent me)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent me)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent me)
Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent me)
Specified by:
mouseReleased in interface java.awt.event.MouseListener

addFormMouseListener

public void addFormMouseListener(java.awt.event.MouseListener ml)