Business Components

oracle.jbo.uicli.jui
Class JUListSingleSelBinding

java.lang.Object
  |
  +--oracle.jbo.uicli.binding.JUControlBinding
        |
        +--oracle.jbo.uicli.binding.JUCtrlValueBinding
              |
              +--oracle.jbo.uicli.binding.JUCtrlAttrsBinding
                    |
                    +--oracle.jbo.uicli.binding.JUCtrlListBinding
                          |
                          +--oracle.jbo.uicli.jui.JUListSingleSelBinding
All Implemented Interfaces:
AttributeList, java.util.EventListener, javax.swing.ListModel, javax.swing.event.ListSelectionListener, RowNavigationListener, RowSetListener

public class JUListSingleSelBinding
extends JUCtrlListBinding
implements javax.swing.event.ListSelectionListener, javax.swing.ListModel

Implements binding a swing JList (in single selection mode) to a BC4J Attribute or ViewObject or as LOV.

A list can be bound in the following ways:

  • display a single or multiple attributes for rows in a RowSet and iterate the rowset currency.
  • display a single attribute from rows in a RowSet and update another attribute in a different ViewObject.
  • display a single or multiple attributes from rows in a RowSet and update one or multiple attributes in a different ViewObject. (quite like a lov).
  • to display a static list of values and update one attribute in a BC4J row.

    This class also implements ListSelectionListener interface and listens to ListSelectionEvent from the bound list. On selection event, it either performs an update of the target ViewObject attributes, or iterates a target ViewObject as per the list operation mode set in the constructor.


    Fields inherited from class oracle.jbo.uicli.binding.JUCtrlListBinding
    LIST_OPER_NAVIGATE, LIST_OPER_SET_ATTRIBUTE, mListAttrNames, mListDisplayAttrNames, mListIterBinding, mStaticList, mValueList
     
    Constructor Summary
    JUListSingleSelBinding(javax.swing.JList list, JUIteratorBinding iterBinding, java.lang.String[] attrNames, int listOperMode, boolean shouldScroll)
              Binds a ListBox to a RowSet associated with the given iterator binding and based on listOperMode setting, either iterates the currency on the target iterator or updates the attribute value for the given attribute (in attrNames) in the current row in the target RowSet.
    JUListSingleSelBinding(javax.swing.JList list, JUIteratorBinding iterBinding, java.lang.String[] attrNames, JUIteratorBinding listRSI, java.lang.String[] listAttrNames, java.lang.String[] listDisplayedAttrNames, boolean shouldScroll)
              Binds separate ViewObject/RowSets for display and update to the same listbox.
    JUListSingleSelBinding(javax.swing.JList list, JUIteratorBinding iterBinding, java.lang.String[] attrNames, java.lang.Object[] valueList, boolean shouldScroll)
              Binds a JList to an attribute in the associated RowSet.
     
    Method Summary
    TypeMethod
     void addControlToPanel(java.lang.Object panel, java.lang.Object layoutObject, java.lang.Object layoutCons)
              *** For internal framework use only ***
     void addListDataListener(javax.swing.event.ListDataListener l)
               
    static javax.swing.ListModel createEnumerationBinding(JUFormBinding formBinding, javax.swing.JList control, java.lang.String voInstanceName, java.lang.String voIterName, java.lang.String voIterBindingName, java.lang.String attrName, java.lang.Object[] values)
              Use this method to bind a list control to a ViewObject/RowSet identified by voInstanceName when a static list of values are displayed in the listbox, and the listbox is used to display update the same attribute in the same viewobject.
    static javax.swing.ListModel createLovBinding(JUFormBinding formBinding, javax.swing.JList control, java.lang.String voInstanceName, java.lang.String voIterName, java.lang.String voIterBindingName, java.lang.String[] attrNames, java.lang.String listVOInstanceName)
               
    static javax.swing.ListModel createLovBinding(JUFormBinding formBinding, javax.swing.JList control, java.lang.String voInstanceName, java.lang.String voIterName, java.lang.String voIterBindingName, java.lang.String[] voAttrNames, java.lang.String lovVOInstanceName, java.lang.String[] lovVOAttrNames, java.lang.String[] lovVODisplayedAttrNames, javax.swing.ListCellRenderer cellRenderer)
              Use this binding when two ViewObjects are to be used in this list control, one for displaying the list of values and the other ViewObject, rows of which are updated.
    static javax.swing.ListModel createNavigationBinding(JUFormBinding formBinding, javax.swing.JList control, java.lang.String voInstanceName, java.lang.String voIterName, java.lang.String voIterBindingName, java.lang.String[] voAttrNames, javax.swing.ListCellRenderer cellRenderer)
              Use this binding when the given list control is used as a navigation control to iterate through a range or rows in a RowSet.
     java.lang.Object getElementAt(int index)
               
    static javax.swing.ListModel getInstance(JUFormBinding formBinding, javax.swing.JList control, java.lang.String voInstanceName, java.lang.String voIterName, java.lang.String voIterBindingName, java.lang.String[] attrNames, java.lang.String listVOInstanceName)
              Deprecated. since 9.0.2 use createEnumerationBinding, createNavigationBinding or createLovBinding instead
    static javax.swing.ListModel getInstance(JUFormBinding formBinding, javax.swing.JList control, java.lang.String voInstanceName, java.lang.String voIterName, java.lang.String voIterBindingName, java.lang.String[] voAttrNames, java.lang.String lovVOInstanceName, java.lang.String[] lovVOAttrNames, java.lang.String[] lovVODisplayedAttrNames, javax.swing.ListCellRenderer cellRenderer)
              Deprecated. since 9.0.2 use createEnumerationBinding, createNavigationBinding or createLovBinding instead
    static javax.swing.ListModel getInstance(JUFormBinding formBinding, javax.swing.JList control, java.lang.String voInstanceName, java.lang.String voIterName, java.lang.String voIterBindingName, java.lang.String attrName, java.lang.Object[] values)
              Deprecated. since 9.0.2 use createEnumerationBinding, createNavigationBinding or createLovBinding instead
     java.lang.Object getLayoutObject()
              *** For internal framework use only ***
    protected  javax.swing.ListModel getModelImpl(javax.swing.JList control)
              Sets the model reference in this binding class by using the current model in the listbox.
     int getSize()
               
     void removeListDataListener(javax.swing.event.ListDataListener l)
               
     void setDataValueAt(java.lang.Object value, int attrIndex)
              This method is overridden to be a noop.
     void setLayoutObject(javax.swing.JScrollPane scrollPane)
              *** For internal framework use only ***
     void setSelectedIndex(int listIndex)
              Sets the item at the given index as current selection in the listbox.
    protected  void setupListItems(boolean clean, boolean keepSelectedIndex)
              This method is used by the framwork to setup the list of values that will be displayed in this listbox.
     void setValueAt(java.lang.Object value, int attrIndex)
              Finds the item in the list that matches the given value and sets it as the current item
     void valueChanged(javax.swing.event.ListSelectionEvent e)
              Based on listOperMode, this binding either navigates the target rowset to the selected row or sets the attribute/attributes as per the settings in the constructor.
     
    Methods inherited from class oracle.jbo.uicli.binding.JUCtrlListBinding
    convertValueList, findListIndex, findMatchingListValue, findValue, getAttrValuesFromRSI, getListOperMode, getSelectedIndex, getSelectedValue, getValueAt, getValueFromList, getValueList, isSingleAttrList, matchTargetWithLov, navigated, rangeRefreshed, rangeScrolled, rowDeleted, rowInserted, rowUpdated, setAttributeFromValueList, setListOperMode, setSingleAttrList, setTargetAttrsFromLovRow, setValueList, updateValuesFromRow
     
    Methods inherited from class oracle.jbo.uicli.binding.JUCtrlAttrsBinding
    updateNavigated, updateRangeScrolled, updateValuesFromRows
     
    Methods inherited from class oracle.jbo.uicli.binding.JUCtrlValueBinding
    findAttributeDef, getAttribute, getAttribute, getAttributeCount, getAttributeDef, getAttributeDefs, getAttributeFromRow, getAttributeFromRow, getAttributeFromRow, getAttributeFromRow, getAttributeFromRow, getAttributeIndexOf, getAttributeNames, isAttributeUpdateable, setAttribute, setAttribute, setAttributeInRow, setAttributeInRow, setAttributeInRow, setAttributeInRow, setAttributeInRow, setAttributeInRow, stopEditing, updateRowDeleted, updateRowInserted
     
    Methods inherited from class oracle.jbo.uicli.binding.JUControlBinding
    executeQuery, executeQueryIfNeeded, getAllRowsInRange, getApplicationModule, getControl, getCurrentRow, getDef, getFormBinding, getIteratorBinding, getName, getRowAtRangeIndex, getRowIterator, getTransaction, getViewObject, isControlQueriable, reportException, setFormBinding, setName
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Constructor Detail

    JUListSingleSelBinding

    public JUListSingleSelBinding(javax.swing.JList list,
                                  JUIteratorBinding iterBinding,
                                  java.lang.String[] attrNames,
                                  int listOperMode,
                                  boolean shouldScroll)
    Binds a ListBox to a RowSet associated with the given iterator binding and based on listOperMode setting, either iterates the currency on the target iterator or updates the attribute value for the given attribute (in attrNames) in the current row in the target RowSet. Note that the list will display and (optionally)udpate the same attribute from a RowSet.
    Parameters:
    list - JList control instance to associate this binding with.
    iterBinding - provides the RowSet from which this binding accesses data to display in the list and optionally the current row in which attribute(s) is to be updated.
    attrNames - an ordered array of attribute names to display and optionally update in a ViewObject.
    listOperMode - Can be one of two values:
  • LIST_OPER_SET_ATTRIBUTE (also the default) to indicate that this list is to be used to update attributes in the current row of the associated RowSet.
  • LIST_OPER_NAVIGATE to indicate that this list should be used to iterate currency in the associated RowSet.
    shouldScroll - when true indicates scroll the selected item into view if it's not being displayed in the current viewport..

  • JUListSingleSelBinding

    public JUListSingleSelBinding(javax.swing.JList list,
                                  JUIteratorBinding iterBinding,
                                  java.lang.String[] attrNames,
                                  java.lang.Object[] valueList,
                                  boolean shouldScroll)
    Binds a JList to an attribute in the associated RowSet. The values displayed in ListBox is provided by the valueList objects.
    Parameters:
    list - JList control instance to associate this binding with.
    iterBinding - provides the RowSet that is used to update current selection from the listbox into the current row in the rowset.
    attrNames - provides the name of an attribute (only one attribute is updateable in this mode).
    valueList - a static list of values that are displayed as options in the listbox to select from.
    shouldScroll - when true indicates scroll the selected item into view if it's not being displayed in the current viewport..

    JUListSingleSelBinding

    public JUListSingleSelBinding(javax.swing.JList list,
                                  JUIteratorBinding iterBinding,
                                  java.lang.String[] attrNames,
                                  JUIteratorBinding listRSI,
                                  java.lang.String[] listAttrNames,
                                  java.lang.String[] listDisplayedAttrNames,
                                  boolean shouldScroll)
    Binds separate ViewObject/RowSets for display and update to the same listbox. Use this binding constructor to provide a separate iterator binding for update and a separate iterator binding which provides rows for display in the listbox. Optionally the attributes displayed can be different from the attributes that should be used to update a corresponding set of attributes in the target/updateable ViewObject.

    Parameters:
    list - JList control instance to associate this binding with.
    iterBinding - provides the RowSet in which the current row is updated based on selection in the listbox.
    attrNames - an ordered array of attribute names to update in a ViewObject. This list should have the same number of attributes as in listAttrNames which provides the corresponding attribute names from the display ViewObject/RowSet.
    listIterBinding - provides the RowSet which is used to display data in the listbox.
    listAttrNames - An ordered list of attribute names which are used to get the values to update into the attributes from the attrNames list in the target ViewObject. If this list is null, the attribute names for display are set the same as attrNames
    listDisplayAttrNames - An ordered list of attribute names that specify the attributes to display from rows in the display ViewObject/RowSet. If this list is null, attribute names are assumed to be same as in attrNames
    shouldScroll - when true indicates scroll the selected item into view if it's not being displayed in the current viewport..
    Method Detail

    setupListItems

    protected void setupListItems(boolean clean,
                                  boolean keepSelectedIndex)
    This method is used by the framwork to setup the list of values that will be displayed in this listbox.
    Overrides:
    setupListItems in class JUCtrlListBinding
    Parameters:
    clean - means whether to clean the existing entries in the listbox.
    keepSelectedIndex - indicates whether to maintain current index as the selected index after the display data is updated. If this value is true, the current index is maintained. However if the current index is more than the number of items in the listbox, the selection is reset to the first item.

    getModelImpl

    protected javax.swing.ListModel getModelImpl(javax.swing.JList control)
    Sets the model reference in this binding class by using the current model in the listbox. Returns the same model reference. If there's no model in the lsitbox, creates a DefaultListModel and returns that.

    addControlToPanel

    public void addControlToPanel(java.lang.Object panel,
                                  java.lang.Object layoutObject,
                                  java.lang.Object layoutCons)
    *** For internal framework use only ***
    Overrides:
    addControlToPanel in class JUControlBinding

    getLayoutObject

    public java.lang.Object getLayoutObject()
    *** For internal framework use only ***
    Overrides:
    getLayoutObject in class JUControlBinding

    setLayoutObject

    public void setLayoutObject(javax.swing.JScrollPane scrollPane)
    *** For internal framework use only ***

    setValueAt

    public void setValueAt(java.lang.Object value,
                           int attrIndex)
    Finds the item in the list that matches the given value and sets it as the current item
    Overrides:
    setValueAt in class JUCtrlAttrsBinding
    Parameters:
    value - This value is used in findMatchingListValue method to find out the item in the list that represents the given value. If the value is not found, no item is selected in the list.
    attrIndex - This argument is ignored by this method

    setDataValueAt

    public void setDataValueAt(java.lang.Object value,
                               int attrIndex)
    This method is overridden to be a noop.
    Overrides:
    setDataValueAt in class JUCtrlAttrsBinding

    setSelectedIndex

    public void setSelectedIndex(int listIndex)
    Sets the item at the given index as current selection in the listbox.
    Overrides:
    setSelectedIndex in class JUCtrlListBinding

    valueChanged

    public void valueChanged(javax.swing.event.ListSelectionEvent e)
    Based on listOperMode, this binding either navigates the target rowset to the selected row or sets the attribute/attributes as per the settings in the constructor.
    Specified by:
    valueChanged in interface javax.swing.event.ListSelectionListener

    getSize

    public int getSize()
    Specified by:
    getSize in interface javax.swing.ListModel

    getElementAt

    public java.lang.Object getElementAt(int index)
    Specified by:
    getElementAt in interface javax.swing.ListModel

    addListDataListener

    public void addListDataListener(javax.swing.event.ListDataListener l)
    Specified by:
    addListDataListener in interface javax.swing.ListModel

    removeListDataListener

    public void removeListDataListener(javax.swing.event.ListDataListener l)
    Specified by:
    removeListDataListener in interface javax.swing.ListModel

    createLovBinding

    public static javax.swing.ListModel createLovBinding(JUFormBinding formBinding,
                                                         javax.swing.JList control,
                                                         java.lang.String voInstanceName,
                                                         java.lang.String voIterName,
                                                         java.lang.String voIterBindingName,
                                                         java.lang.String[] attrNames,
                                                         java.lang.String listVOInstanceName)

    getInstance

    public static javax.swing.ListModel getInstance(JUFormBinding formBinding,
                                                    javax.swing.JList control,
                                                    java.lang.String voInstanceName,
                                                    java.lang.String voIterName,
                                                    java.lang.String voIterBindingName,
                                                    java.lang.String[] attrNames,
                                                    java.lang.String listVOInstanceName)
    Deprecated. since 9.0.2 use createEnumerationBinding, createNavigationBinding or createLovBinding instead


    createEnumerationBinding

    public static javax.swing.ListModel createEnumerationBinding(JUFormBinding formBinding,
                                                                 javax.swing.JList control,
                                                                 java.lang.String voInstanceName,
                                                                 java.lang.String voIterName,
                                                                 java.lang.String voIterBindingName,
                                                                 java.lang.String attrName,
                                                                 java.lang.Object[] values)
    Use this method to bind a list control to a ViewObject/RowSet identified by voInstanceName when a static list of values are displayed in the listbox, and the listbox is used to display update the same attribute in the same viewobject.

    getInstance

    public static javax.swing.ListModel getInstance(JUFormBinding formBinding,
                                                    javax.swing.JList control,
                                                    java.lang.String voInstanceName,
                                                    java.lang.String voIterName,
                                                    java.lang.String voIterBindingName,
                                                    java.lang.String attrName,
                                                    java.lang.Object[] values)
    Deprecated. since 9.0.2 use createEnumerationBinding, createNavigationBinding or createLovBinding instead


    createLovBinding

    public static javax.swing.ListModel createLovBinding(JUFormBinding formBinding,
                                                         javax.swing.JList control,
                                                         java.lang.String voInstanceName,
                                                         java.lang.String voIterName,
                                                         java.lang.String voIterBindingName,
                                                         java.lang.String[] voAttrNames,
                                                         java.lang.String lovVOInstanceName,
                                                         java.lang.String[] lovVOAttrNames,
                                                         java.lang.String[] lovVODisplayedAttrNames,
                                                         javax.swing.ListCellRenderer cellRenderer)
    Use this binding when two ViewObjects are to be used in this list control, one for displaying the list of values and the other ViewObject, rows of which are updated. Optionally, a UI can provide a cell renderer for the list and a editor which can be used to implement ComboBox customization. By default, if this binding method creates an instance of JUMultiAttrListCellRenderer and JUMultiAttrListCellEditor to display and edit LOVs.

    getInstance

    public static javax.swing.ListModel getInstance(JUFormBinding formBinding,
                                                    javax.swing.JList control,
                                                    java.lang.String voInstanceName,
                                                    java.lang.String voIterName,
                                                    java.lang.String voIterBindingName,
                                                    java.lang.String[] voAttrNames,
                                                    java.lang.String lovVOInstanceName,
                                                    java.lang.String[] lovVOAttrNames,
                                                    java.lang.String[] lovVODisplayedAttrNames,
                                                    javax.swing.ListCellRenderer cellRenderer)
    Deprecated. since 9.0.2 use createEnumerationBinding, createNavigationBinding or createLovBinding instead


    createNavigationBinding

    public static javax.swing.ListModel createNavigationBinding(JUFormBinding formBinding,
                                                                javax.swing.JList control,
                                                                java.lang.String voInstanceName,
                                                                java.lang.String voIterName,
                                                                java.lang.String voIterBindingName,
                                                                java.lang.String[] voAttrNames,
                                                                javax.swing.ListCellRenderer cellRenderer)
    Use this binding when the given list control is used as a navigation control to iterate through a range or rows in a RowSet. Optionally, a UI can provide a cell renderer for the list and a editor which can be used to implement ComboBox customization. By default, if this binding method creates an instance of JUMultiAttrListCellRenderer and JUMultiAttrListCellEditor to display and edit LOVs.

    Business Components