|
|||||||||
| Home >> All >> org >> scopemvc >> view >> [ swing overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.scopemvc.view.swing
Class SComboBox

java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JComboBox
org.scopemvc.view.swing.SComboBox
- All Implemented Interfaces:
- javax.accessibility.Accessible, java.awt.event.ActionListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.ItemSelectable, javax.swing.event.ListDataListener, java.awt.MenuContainer, Refreshable, java.io.Serializable, org.scopemvc.core.View
- public class SComboBox
- extends javax.swing.JComboBox
- implements org.scopemvc.core.View, Refreshable
- extends javax.swing.JComboBox
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");
...
- Version:
- $Revision: 1.8 $ $Date: 2002/01/26 09:46:20 $
| Nested 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 | |
private static org.apache.commons.logging.Log |
LOG
|
private java.lang.String |
selectionControlID
|
private ValidationHelper |
validationHelper
Helper to manage validation state. |
| 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.Container |
|
| 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()
|
|
| Method Summary | |
javax.swing.JToolTip |
createToolTip()
Return the toolTip property of this component, creating it and
setting it if it is currently null. |
java.lang.Object |
getBoundModel()
|
org.scopemvc.core.Controller |
getController()
Don't assign a direct Controller to ComboBox, instead delegate to the containing SwingView that has a parent Controller. |
void |
issueChangeSelectionControl()
|
void |
issueControl(org.scopemvc.core.Control inControl)
Don't assign a direct Controller to ComboBox, instead delegate to the containing SwingView that has a parent Controller. |
void |
refresh()
Update the widget with the current state of the bound model. |
void |
setBoundModel(java.lang.Object inModel)
|
void |
setChangeSelectionControlID(java.lang.String inControlID)
Set the Control ID for the Control that will be issued when the selection is changed. |
void |
setController(org.scopemvc.core.Controller inController)
Don't assign a direct Controller to ComboBox, 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(org.scopemvc.core.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(org.scopemvc.core.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(org.scopemvc.core.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(org.scopemvc.core.Selector inSelector)
Set the Selector for the list data. |
void |
setSelectorString(java.lang.String inSelectorString)
Set the Selector for the list data. |
void |
setSizeSelector(org.scopemvc.core.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(org.scopemvc.util.convertor.StringConvertor inConvertor)
Force use of this StringConvertor instead of automatically finding one to match the datatype being edited. |
void |
validationFailed(java.lang.Exception inException)
|
void |
validationSuccess()
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
LOG
private static final org.apache.commons.logging.Log LOG
selectionControlID
private java.lang.String selectionControlID
validationHelper
private ValidationHelper validationHelper
- Helper to manage validation state.
| Constructor Detail |
SComboBox
public SComboBox()
| Method Detail |
setStringConvertor
public void setStringConvertor(org.scopemvc.util.convertor.StringConvertor inConvertor)
- Force use of this StringConvertor instead of automatically finding
one to match the datatype being edited.
setModel
public 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. This is violation
of MVC paradigm - model describes some state and should not
be modified by view. JDK 1.4 beta has this bug fixed.
Model should be instance of SComboBoxModel to fix take effect
.
getBoundModel
public final java.lang.Object getBoundModel()
- Specified by:
getBoundModelin interfaceorg.scopemvc.core.View
setBoundModel
public final void setBoundModel(java.lang.Object inModel)
- Specified by:
setBoundModelin interfaceorg.scopemvc.core.View
setListModel
public 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.
setSelector
public final void setSelector(org.scopemvc.core.Selector inSelector)
- Set the Selector for the list data. Should be a java.util.List
or an Object[] or have a "size" property and properties accessible
by an IntIndexedSelector.
setSelectorString
public final void setSelectorString(java.lang.String inSelectorString)
- Set the Selector for the list data. Should be a java.util.List
or an Object[] or have a "size" property and properties accessible
by an IntIndexedSelector.
setSelectionSelector
public final void setSelectionSelector(org.scopemvc.core.Selector inSelector)
- Set the Selector for the list selection: this property will be
bound to the list's single selection.
setSelectionSelectorString
public final void setSelectionSelectorString(java.lang.String inSelectorString)
- Set the Selector for the list selection: this property will be
bound to the list's single selection.
setRendererSelector
public final void setRendererSelector(org.scopemvc.core.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).
setRendererIconSelector
public final void setRendererIconSelector(org.scopemvc.core.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.
setRendererSelectorString
public final 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).
setRendererIconSelectorString
public final 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.
setSizeSelector
public final void setSizeSelector(org.scopemvc.core.Selector inSelector)
- Optional: set the Selector for the property that is the size of the
items list. Not needed for lists that are of type Object[] or java.util.List.
setSizeSelectorString
public final void setSizeSelectorString(java.lang.String inSelectorString)
- Optional: set the Selector for the property that is the size of the
items list. Not needed for lists that are of type Object[] or java.util.List.
issueChangeSelectionControl
public void issueChangeSelectionControl()
setChangeSelectionControlID
public final void setChangeSelectionControlID(java.lang.String inControlID)
- Set the Control ID for the Control that will be issued when
the selection is changed. If null no Control will be issued.
setController
public void setController(org.scopemvc.core.Controller inController)
- Don't assign a direct Controller to ComboBox, instead delegate
to the containing SwingView that has a parent Controller.
- Specified by:
setControllerin interfaceorg.scopemvc.core.View
getController
public org.scopemvc.core.Controller getController()
- Don't assign a direct Controller to ComboBox, instead delegate
to the containing SwingView that has a parent Controller.
- Specified by:
getControllerin interfaceorg.scopemvc.core.View
issueControl
public void issueControl(org.scopemvc.core.Control inControl)
- Don't assign a direct Controller to ComboBox, instead delegate
to the containing SwingView that has a parent Controller.
- Specified by:
issueControlin interfaceorg.scopemvc.core.View
refresh
public void refresh()
- Description copied from interface:
Refreshable - Update the widget with the current state of the bound model.
Probably something like this:
Object propertyValue = boundModel.getPropertyValue(); boolean propertyReadOnly = boundModel.getPropertyReadOnly(); updateFromProperty(propertyValue, propertyReadOnly);- Specified by:
refreshin interfaceRefreshable
validationFailed
public void validationFailed(java.lang.Exception inException)
validationSuccess
public void validationSuccess()
createToolTip
public javax.swing.JToolTip createToolTip()
- Description copied from class:
javax.swing.JComponent - Return the
toolTipproperty of this component, creating it and setting it if it is currentlynull. This method can be overridden in subclasses which wish to control the exact form of tooltip created.
|
|||||||||
| Home >> All >> org >> scopemvc >> view >> [ swing overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC