|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.awt.Component | +--java.awt.Container | +--javax.swing.JComponent | +--javax.swing.JComboBox | +--org.scopemvc.view.swing.SComboBox
A JComboBox that uses a SComboBoxModel
to bind to model properties
for the list of items and to bind the selected item to a property. Uses a
SListCellRenderer
to draw items in the list. Uses a SComboBoxEditor
if editable.
SComboBox can issue Controls on selection changes.
SList doesn't itself bind to a model: it delegates all binding to its SComboBoxModel.
Examples for SComboBox use can be found in samples.swing.combodemo
package, and see SComboBoxModel
and SAbstractListModel
.
Elements (rows) in the data model can be arbitrary class (e.g. Person, Employee etc.). Scope's combobox renderer can have set Selector for desired element attribute (e.g. "name"). If selector is ommited, then toString() value is drawn. If elements are of types for which exist StringConvertor, the combo box can be editable (exactly not the elements, but selected item property, however it has make sense to have elements and selected item of the same type.)
Data model will be typically array (Object[]
) or list
derived from java.util.List
. For this case there is no need to
set size model. For example:
class SelectedPerson { ... public void setSelectedPerson(Person p) {...} public Person getSelectedPerson() {...} } ... List persons = getSomePersons(); combo.setDataModel(persons); combo.setSelectionSelectorString("selectedPerson"); // a property of the bound view model
Some times data elements of combobox changes during combobox life cycle. For this case is better to use single model for both selection and element list. The list is treated as model property and can be changed:
class PersonSelection extends BasicModel { public final static Selector PERSONS = Selector.fromString("persons"); ... public void setSelectedPerson(Person p) {...} public Person getSelectedPerson() {...} public List getPersons() {...} ... // in some method persons = fetchOtherPersons(); super.fireModelChange(ModelChangeEvent.VALUE_CHANGED, PERSONS); // now are data in combobox refreshed ... } ... SComboBox combo = new SComboBox(); combo.setSelector(PERSONS); combo.setSelectionSelectorString("selectedPerson"); ...Note that since persons attribute is of type
java.util.List
, there is again no need to set size selector. In the last variation of the example is shown, where the size model and selector is need. Java Beans specifiaction says, that indexed properties can be exposed as a single array value. However, this is not requirement. Let's see example:
class Persons { ... public Person getPerson(int i) {...} public void setPerson(int i, Person p) {...} public int getPersonsNumber() {...} } ... SComboBox combo = new SComboBox(); combo.setSelectorString("person"); combo.setSizeSelectorString("personsNumber"); ...
SComboBoxModel
,
SAbstractListModel
,
SList
,
Serialized FormNested Class Summary |
Nested classes inherited from class javax.swing.JComboBox |
javax.swing.JComboBox.AccessibleJComboBox, javax.swing.JComboBox.KeySelectionManager |
Nested classes inherited from class javax.swing.JComponent |
javax.swing.JComponent.AccessibleJComponent |
Nested classes inherited from class java.awt.Container |
java.awt.Container.AccessibleAWTContainer |
Nested classes inherited from class java.awt.Component |
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy |
Field Summary |
Fields inherited from class javax.swing.JComboBox |
actionCommand, dataModel, editor, isEditable, keySelectionManager, lightWeightPopupEnabled, maximumRowCount, renderer, selectedItemReminder |
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 | |
SComboBox()
Constructor for the SComboBox object |
Method Summary | |
javax.swing.JToolTip |
createToolTip()
TODO: document the method |
java.lang.Object |
getBoundModel()
Gets the bound model |
java.lang.String |
getChangeSelectionControlID()
Gets the change selection control ID |
Controller |
getController()
Don't assign a direct Controller to ComboBox, instead delegate to the containing SwingView that has a parent Controller. |
Selector |
getRendererIconSelector()
Gets the renderer icon selector |
Selector |
getRendererSelector()
Gets the renderer selector |
Selector |
getSelectionSelector()
Gets the selection selector |
Selector |
getSelector()
Gets the selector |
Selector |
getSizeSelector()
Gets the size selector |
void |
issueChangeSelectionControl()
TODO: document the method |
void |
issueControl(Control inControl)
Don't assign a direct Controller to ComboBox, instead delegate to the containing SwingView that has a parent Controller. |
void |
refresh()
TODO: document the method |
void |
setBoundModel(java.lang.Object inModel)
Sets the bound model |
void |
setChangeSelectionControlID(java.lang.String inControlID)
Set the Control ID for the Control that will be issued when the selection is changed. |
void |
setController(Controller inController)
Don't assign a Controller to this component, instead delegate to the containing SwingView that has a parent Controller. |
void |
setListModel(java.lang.Object inModel)
Can use this to specify a static list model for the contents of the list rather than binding to a dynamic property of some view model. |
void |
setModel(javax.swing.ComboBoxModel m)
This method is overriden to fix JDK 1.2.x,1.3.x bug: after setting model combobox sets element 0 as selected. |
void |
setRendererIconSelector(Selector inSelector)
Set the Selector for the list cell renderer to get an Icon: this is the property that will be shown as an Icon in a list cell. |
void |
setRendererIconSelectorString(java.lang.String inSelectorString)
Set the Selector for the list cell renderer to get an Icon: this is the property that will be shown as an Icon in a list cell. |
void |
setRendererSelector(Selector inSelector)
Set the Selector for the list cell renderer: this is the property that will be shown in a list cell (converted to a String). |
void |
setRendererSelectorString(java.lang.String inSelectorString)
Set the Selector for the list cell renderer: this is the property that will be shown in a list cell (converted to a String). |
void |
setSelectionSelector(Selector inSelector)
Set the Selector for the list selection: this property will be bound to the list's single selection. |
void |
setSelectionSelectorString(java.lang.String inSelectorString)
Set the Selector for the list selection: this property will be bound to the list's single selection. |
void |
setSelector(Selector inSelector)
Set the Selector for the list data. |
void |
setSelectorString(java.lang.String inSelectorString)
Set the Selector for the list data. |
void |
setSizeSelector(Selector inSelector)
Optional: set the Selector for the property that is the size of the items list. |
void |
setSizeSelectorString(java.lang.String inSelectorString)
Optional: set the Selector for the property that is the size of the items list. |
void |
setStringConvertor(StringConvertor inConvertor)
Force use of this StringConvertor instead of automatically finding one to match the datatype being edited. |
void |
validationFailed(java.lang.Exception inException)
TODO: document the method |
void |
validationSuccess()
TODO: document the method |
Methods inherited from class javax.swing.JComboBox |
actionPerformed, addActionListener, addItem, addItemListener, addPopupMenuListener, configureEditor, configurePropertiesFromAction, contentsChanged, createActionPropertyChangeListener, createDefaultKeySelectionManager, fireActionEvent, fireItemStateChanged, firePopupMenuCanceled, firePopupMenuWillBecomeInvisible, firePopupMenuWillBecomeVisible, getAccessibleContext, getAction, getActionCommand, getActionListeners, getEditor, getItemAt, getItemCount, getItemListeners, getKeySelectionManager, getMaximumRowCount, getModel, getPopupMenuListeners, getPrototypeDisplayValue, getRenderer, getSelectedIndex, getSelectedItem, getSelectedObjects, getUI, getUIClassID, hidePopup, insertItemAt, installAncestorListener, intervalAdded, intervalRemoved, isEditable, isLightWeightPopupEnabled, isPopupVisible, paramString, processKeyEvent, removeActionListener, removeAllItems, removeItem, removeItemAt, removeItemListener, removePopupMenuListener, selectedItemChanged, selectWithKeyChar, setAction, setActionCommand, setEditable, setEditor, setEnabled, setKeySelectionManager, setLightWeightPopupEnabled, setMaximumRowCount, setPopupVisible, setPrototypeDisplayValue, setRenderer, setSelectedIndex, setSelectedItem, setUI, showPopup, updateUI |
Methods inherited from class javax.swing.JComponent |
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, 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, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, 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 |
Constructor Detail |
public SComboBox()
Method Detail |
public final java.lang.Object getBoundModel()
getBoundModel
in interface View
public final Selector getSelector()
public final Selector getSelectionSelector()
public final Selector getRendererSelector()
public final Selector getRendererIconSelector()
public final Selector getSizeSelector()
public final java.lang.String getChangeSelectionControlID()
public void issueChangeSelectionControl()
public Controller getController()
getController
in interface View
public void issueControl(Control inControl)
issueControl
in interface View
inControl
- TODO: Describe the Parameterpublic final void setBoundModel(java.lang.Object inModel)
setBoundModel
in interface View
inModel
- The new boundModel valuepublic final void setSelector(Selector inSelector)
inSelector
- The new selector valuepublic final void setSelectorString(java.lang.String inSelectorString)
inSelectorString
- The new selectorString valuepublic final void setSelectionSelector(Selector inSelector)
inSelector
- The new selectionSelector valuepublic final void setSelectionSelectorString(java.lang.String inSelectorString)
inSelectorString
- The new selectionSelectorString valuepublic final void setRendererSelector(Selector inSelector)
inSelector
- The new rendererSelector valuepublic final void setRendererIconSelector(Selector inSelector)
inSelector
- The new rendererIconSelector valuepublic final void setRendererSelectorString(java.lang.String inSelectorString)
inSelectorString
- The new rendererSelectorString valuepublic final void setRendererIconSelectorString(java.lang.String inSelectorString)
inSelectorString
- The new rendererIconSelectorString valuepublic final void setSizeSelector(Selector inSelector)
inSelector
- The new sizeSelector valuepublic final void setSizeSelectorString(java.lang.String inSelectorString)
inSelectorString
- The new sizeSelectorString valuepublic final void setChangeSelectionControlID(java.lang.String inControlID)
inControlID
- The new changeSelectionControlID valuepublic void setStringConvertor(StringConvertor inConvertor)
inConvertor
- The new stringConvertor valuepublic void setModel(javax.swing.ComboBoxModel m)
Model should be instance of SComboBoxModel to fix take effect
.
setModel
in class javax.swing.JComboBox
m
- The new model valueSComboBoxModel.setSelectedItem(Object)
public void setListModel(java.lang.Object inModel)
inModel
- The new listModel valueListModelAdaptor
public void setController(Controller inController)
setController
in interface View
inController
- The new controller valuepublic void refresh()
refresh
in interface Refreshable
public void validationFailed(java.lang.Exception inException)
inException
- TODO: Describe the Parameterpublic void validationSuccess()
public javax.swing.JToolTip createToolTip()
createToolTip
in class javax.swing.JComponent
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |