Package org.zkoss.bind.proxy

## Class ListModelArrayProxy<E>

- java.lang.Object
- - org.zkoss.zul.AbstractListModel<E>
  - - org.zkoss.zul.ListModelArray<E>
    - - org.zkoss.bind.proxy.ListModelArrayProxy<E>

- All Implemented Interfaces:
    `java.io.Serializable`, `javassist.util.proxy.Proxy`, `FormProxyObject`, `Pageable`, `Selectable<E>`, `Sortable<E>`, `ListModel<E>`, `PageableModel`

      public class ListModelArrayProxy<E>
      extends ListModelArray<E>
      implements javassist.util.proxy.Proxy, FormProxyObject, java.io.Serializable

  A ListModelArray Proxy
  Since:
    9.6.0
  Author:
    jameschu
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.zkoss.zul.AbstractListModel

      `AbstractListModel.DefaultSelectionControl<E>`

  - ### Field Summary

    - ### Fields inherited from class org.zkoss.zul.ListModelArray

      `_array`

    - ### Fields inherited from class org.zkoss.zul.AbstractListModel

      `_selection`

    - ### Fields inherited from interface org.zkoss.zul.PageableModel

      `INTERNAL_EVENT`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ListModelArrayProxy​(ListModelArray<E> origin, java.lang.annotation.Annotation[] callerAnnots)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addListDataListener​(ListDataListener l)` | Adds a listener to the list that's notified each time a change to the data model occurs.
    `void` | `addPagingEventListener​(PagingListener l)` | Adds a listener to the list of listeners to be notified when a PagingEvent happens outside of standard Paging component
    `void` | `addSelection​(E obj)` |
    `boolean` | `addToSelection​(E obj)` | Add the specified object into selection.
    `void` | `cacheSavePropertyBinding​(java.lang.String property, SavePropertyBinding s)` | Cache save property binding by property string
    `void` | `clearSelection()` | Change the selection to the empty set.
    `java.lang.Object` | `clone()` |
    `java.util.Set<Pair<java.lang.String,​SavePropertyBinding>>` | `collectCachedSavePropertyBinding()` | Collect all of collect cached save property bindings
    `protected <T> T` | `createProxyObject​(T t)` |
    `boolean` | `equals​(java.lang.Object o)` |
    `protected void` | `fireSelectionEvent​(E e)` | Selectable's implementor use only.
    `E` | `get​(int index)` | Get the value of this ListModelArray at specified index.
    `int` | `getActivePage()` | Returns the active page (starting from 0).
    `E` | `getElementAt​(int j)` | Returns the value at the specified index.
    `java.lang.Object[]` | `getInnerArray()` | Get the inner real Object[].
    `ListModelArray<E>` | `getOriginObject()` | Returns the origin object.
    `int` | `getPageCount()` | Returns the number of pages.
    `int` | `getPageSize()` | Returns the number of items per page.
    `java.util.Set<E>` | `getSelection()` | Returns the current selection.
    `SelectionControl` | `getSelectionControl()` | Returns the selection control for the selection model, if any.
    `int` | `getSize()` | Returns the length of the list.
    `java.lang.String` | `getSortDirection​(java.util.Comparator<E> cmpr)` | Returns the sort direction of this model for the given comparator.
    `int` | `hashCode()` |
    `int` | `indexOf​(java.lang.Object elm)` | Returns the index of the specified element.
    `boolean` | `isFormDirty()` | Returns whether the form proxy object is dirty or not, including all of its attributes.
    `boolean` | `isSelected​(java.lang.Object obj)` | Returns whether an object is selected.
    `boolean` | `isSelectionEmpty()` | Returns true if the selection is currently empty.
    `boolean` | `notifyChange​(E element)` | Notifies a change of the same element to trigger an event of `ListDataEvent.CONTENTS_CHANGED`.
    `void` | `onDataChange​(java.lang.Object o)` |
    `void` | `onDirtyChange()` |
    `boolean` | `removeFromSelection​(java.lang.Object obj)` | Remove the specified object from selection.
    `void` | `removeListDataListener​(ListDataListener l)` | Removes a listener from the list that's notified each time a change to the data model occurs.
    `void` | `removePagingEventListener​(PagingListener l)` | Removes a listener from the list of listeners to be notified when a PagingEvent happens outside of standard Paging component
    `void` | `removeSelection​(java.lang.Object obj)` |
    `void` | `resetFromOrigin()` | Resets all of the changes of this form from the origin object.
    `void` | `set​(int index, E value)` | Change content of the Array at specified index.
    `void` | `setActivePage​(int pg)` | Sets the active page (starting from 0).
    `protected void` | `setDirty​(boolean d)` |
    `void` | `setFormOwner​(java.lang.Object owner, FormBinding binding)` | Sets the owner of this form with its binding.
    `void` | `setHandler​(javassist.util.proxy.MethodHandler mi)` |
    `void` | `setMultiple​(boolean multiple)` | Sets the selection mode to be multiple.
    `void` | `setPageSize​(int size)` | Sets the number of items per page.
    `void` | `setPath​(java.lang.String property, ProxyNode parent)` | Set the property of current form proxy object and it's creator
    `void` | `setSelection​(java.util.Collection<? extends E> selection)` | Replace the current selection with the given set.
    `void` | `setSelectionControl​(SelectionControl ctrl)` | Sets the selection control for the selection model
    `void` | `sort()` | Sort the data model by default or assigned comparator.
    `void` | `sort​(java.util.Comparator<E> cmpr, boolean ascending)` | Sorts the data.
    `void` | `submitToOrigin​(BindContext ctx)` | Saves all of the changes of this form to the origin object.
    `protected static boolean` | `testEquals​(java.lang.Object e, java.lang.Object o)` |
    `java.lang.String` | `toString()` |

    - ### Methods inherited from class org.zkoss.zul.AbstractListModel

      `fireEvent, getListDataListeners, getTotalSize, isMultiple, newEmptySelection, readSelection, removeAllSelection, retainAllSelection, writeSelection`

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### ListModelArrayProxy

          public ListModelArrayProxy​(ListModelArray<E> origin,
                                     java.lang.annotation.Annotation[] callerAnnots)

  - ### Method Detail

    - #### onDirtyChange

          public void onDirtyChange()

    - #### onDataChange

          public void onDataChange​(java.lang.Object o)

    - #### setDirty

          protected void setDirty​(boolean d)

    - #### addListDataListener

          public void addListDataListener​(ListDataListener l)

      Description copied from class: `AbstractListModel`
      Adds a listener to the list that's notified each time a change to the data model occurs.
      Specified by:
        `addListDataListener` in interface `ListModel<E>`
      Overrides:
        `addListDataListener` in class `AbstractListModel<E>`

    - #### removeListDataListener

          public void removeListDataListener​(ListDataListener l)

      Description copied from class: `AbstractListModel`
      Removes a listener from the list that's notified each time a change to the data model occurs.
      Specified by:
        `removeListDataListener` in interface `ListModel<E>`
      Overrides:
        `removeListDataListener` in class `AbstractListModel<E>`

    - #### getSelection

          public java.util.Set<E> getSelection()

      Description copied from class: `AbstractListModel`
      Returns the current selection. It is readonly. Don't modify it directly
      Specified by:
        `getSelection` in interface `Selectable<E>`
      Overrides:
        `getSelection` in class `AbstractListModel<E>`
      Returns:
        the current selection.

    - #### setSelection

          public void setSelection​(java.util.Collection<? extends E> selection)

      Description copied from class: `AbstractListModel`
      Replace the current selection with the given set.

      If this represents a change to the current selection then notify each ListDataListener, including UI.

      Specified by:
        `setSelection` in interface `Selectable<E>`
      Overrides:
        `setSelection` in class `AbstractListModel<E>`

    - #### isSelected

          public boolean isSelected​(java.lang.Object obj)

      Description copied from class: `AbstractListModel`
      Returns whether an object is selected.
      Specified by:
        `isSelected` in interface `Selectable<E>`
      Overrides:
        `isSelected` in class `AbstractListModel<E>`

    - #### isSelectionEmpty

          public boolean isSelectionEmpty()

      Description copied from class: `AbstractListModel`
      Returns true if the selection is currently empty.
      Specified by:
        `isSelectionEmpty` in interface `Selectable<E>`
      Overrides:
        `isSelectionEmpty` in class `AbstractListModel<E>`

    - #### addToSelection

          public boolean addToSelection​(E obj)

      Description copied from class: `AbstractListModel`
      Add the specified object into selection.

      If this represents a change to the current selection then notify each ListDataListener, including UI.

      Specified by:
        `addToSelection` in interface `Selectable<E>`
      Overrides:
        `addToSelection` in class `AbstractListModel<E>`
      Parameters:
        `obj` - the object to be as selection.
      Returns:
        true if it is added successfully; false if `obj` is not part of the data, or was already selected.

    - #### removeFromSelection

          public boolean removeFromSelection​(java.lang.Object obj)

      Description copied from class: `AbstractListModel`
      Remove the specified object from selection.

      If this represents a change to the current selection then notify each ListDataListener, including UI.

      Specified by:
        `removeFromSelection` in interface `Selectable<E>`
      Overrides:
        `removeFromSelection` in class `AbstractListModel<E>`
      Parameters:
        `obj` - the object to be remove from selection.
      Returns:
        whether it is removed successfully

    - #### clearSelection

          public void clearSelection()

      Description copied from class: `AbstractListModel`
      Change the selection to the empty set.

      If this represents a change to the current selection then notify each ListDataListener, including UI.

      Specified by:
        `clearSelection` in interface `Selectable<E>`
      Overrides:
        `clearSelection` in class `AbstractListModel<E>`

    - #### setMultiple

          public void setMultiple​(boolean multiple)

      Description copied from class: `AbstractListModel`
      Sets the selection mode to be multiple.
      Specified by:
        `setMultiple` in interface `Selectable<E>`
      Overrides:
        `setMultiple` in class `AbstractListModel<E>`

    - #### getPageSize

          public int getPageSize()

      Description copied from interface: `Pageable`
      Returns the number of items per page.

      Default: 20.

      Specified by:
        `getPageSize` in interface `Pageable`
      Overrides:
        `getPageSize` in class `AbstractListModel<E>`

    - #### setPageSize

          public void setPageSize​(int size)
                           throws WrongValueException

      Description copied from interface: `Pageable`
      Sets the number of items per page.
      Specified by:
        `setPageSize` in interface `Pageable`
      Overrides:
        `setPageSize` in class `AbstractListModel<E>`
      Throws:
        `WrongValueException`

    - #### getPageCount

          public int getPageCount()

      Description copied from interface: `Pageable`
      Returns the number of pages. Note: there is at least one page even no item at all.
      Specified by:
        `getPageCount` in interface `Pageable`
      Overrides:
        `getPageCount` in class `AbstractListModel<E>`

    - #### getActivePage

          public int getActivePage()

      Description copied from interface: `Pageable`
      Returns the active page (starting from 0).
      Specified by:
        `getActivePage` in interface `Pageable`
      Overrides:
        `getActivePage` in class `AbstractListModel<E>`

    - #### setActivePage

          public void setActivePage​(int pg)
                             throws WrongValueException

      Description copied from interface: `Pageable`
      Sets the active page (starting from 0).
      Specified by:
        `setActivePage` in interface `Pageable`
      Overrides:
        `setActivePage` in class `AbstractListModel<E>`
      Throws:
        `WrongValueException`

    - #### setSelectionControl

          public void setSelectionControl​(SelectionControl ctrl)

      Description copied from interface: `Selectable`
      Sets the selection control for the selection model
      Specified by:
        `setSelectionControl` in interface `Selectable<E>`
      Overrides:
        `setSelectionControl` in class `AbstractListModel<E>`

    - #### getSelectionControl

          public SelectionControl getSelectionControl()

      Description copied from interface: `Selectable`
      Returns the selection control for the selection model, if any.
      Specified by:
        `getSelectionControl` in interface `Selectable<E>`
      Overrides:
        `getSelectionControl` in class `AbstractListModel<E>`

    - #### addPagingEventListener

          public void addPagingEventListener​(PagingListener l)

      Description copied from interface: `PageableModel`
      Adds a listener to the list of listeners to be notified when a PagingEvent happens outside of standard Paging component
      Specified by:
        `addPagingEventListener` in interface `PageableModel`
      Overrides:
        `addPagingEventListener` in class `AbstractListModel<E>`

    - #### removePagingEventListener

          public void removePagingEventListener​(PagingListener l)

      Description copied from interface: `PageableModel`
      Removes a listener from the list of listeners to be notified when a PagingEvent happens outside of standard Paging component
      Specified by:
        `removePagingEventListener` in interface `PageableModel`
      Overrides:
        `removePagingEventListener` in class `AbstractListModel<E>`

    - #### get

          public E get​(int index)

      Description copied from class: `ListModelArray`
      Get the value of this ListModelArray at specified index.
      Overrides:
        `get` in class `ListModelArray<E>`
      Parameters:
        `index` - the array index to be get value.

    - #### set

          public void set​(int index,
                          E value)

      Description copied from class: `ListModelArray`
      Change content of the Array at specified index.
      Overrides:
        `set` in class `ListModelArray<E>`
      Parameters:
        `index` - the array index to be set the new value.

    - #### getInnerArray

          public java.lang.Object[] getInnerArray()

      Description copied from class: `ListModelArray`
      Get the inner real Object[].
      Overrides:
        `getInnerArray` in class `ListModelArray<E>`

    - #### indexOf

          public int indexOf​(java.lang.Object elm)

      Description copied from class: `ListModelArray`
      Returns the index of the specified element.
      Overrides:
        `indexOf` in class `ListModelArray<E>`

    - #### notifyChange

          public boolean notifyChange​(E element)

      Description copied from class: `ListModelArray`
      Notifies a change of the same element to trigger an event of `ListDataEvent.CONTENTS_CHANGED`.
      Overrides:
        `notifyChange` in class `ListModelArray<E>`
      Returns:
        true if the element exists

    - #### getSize

          public int getSize()

      Description copied from interface: `ListModel`
      Returns the length of the list.
      Specified by:
        `getSize` in interface `ListModel<E>`
      Overrides:
        `getSize` in class `ListModelArray<E>`

    - #### getElementAt

          public E getElementAt​(int j)

      Description copied from interface: `ListModel`
      Returns the value at the specified index.
      Specified by:
        `getElementAt` in interface `ListModel<E>`
      Overrides:
        `getElementAt` in class `ListModelArray<E>`

    - #### sort

          public void sort​(java.util.Comparator<E> cmpr,
                           boolean ascending)

      Description copied from class: `ListModelArray`
      Sorts the data.
      Specified by:
        `sort` in interface `Sortable<E>`
      Overrides:
        `sort` in class `ListModelArray<E>`
      Parameters:
        `cmpr` - the comparator.
        `ascending` - whether to sort in the ascending order. It is ignored since this implementation uses cmpr to compare.

    - #### sort

          public void sort()

      Description copied from interface: `Sortable`
      Sort the data model by default or assigned comparator. Notice that the default implementation does nothing, the model which implements Sortable need to implement this method.
      Specified by:
        `sort` in interface `Sortable<E>`
      Overrides:
        `sort` in class `ListModelArray<E>`
      See Also:
        `Sortable.sort(Comparator, boolean)`

    - #### getSortDirection

          public java.lang.String getSortDirection​(java.util.Comparator<E> cmpr)

      Description copied from interface: `Sortable`
      Returns the sort direction of this model for the given comparator. It must be one of "ascending", "descending" and "natural".

      Default: "natural".

      Specified by:
        `getSortDirection` in interface `Sortable<E>`
      Overrides:
        `getSortDirection` in class `ListModelArray<E>`

    - #### equals

          public boolean equals​(java.lang.Object o)

      Overrides:
        `equals` in class `ListModelArray<E>`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `ListModelArray<E>`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `ListModelArray<E>`

    - #### clone

          public java.lang.Object clone()

      Overrides:
        `clone` in class `ListModelArray<E>`

    - #### fireSelectionEvent

          protected void fireSelectionEvent​(E e)

      Description copied from class: `AbstractListModel`
      Selectable's implementor use only.

      Fires a selection event for component to scroll into view. The override subclass must put the index0 of `AbstractListModel.fireEvent(int, int, int)` as the view index to scroll. By default, the value -1 is assumed which means no scroll into view.

      The method is invoked when both methods are invoked. `AbstractListModel.addToSelection(Object)` and `AbstractListModel.setSelection(Collection)`.

      Overrides:
        `fireSelectionEvent` in class `ListModelArray<E>`
      Parameters:
        `e` - selected object.

    - #### addSelection

          public void addSelection​(E obj)

    - #### removeSelection

          public void removeSelection​(java.lang.Object obj)

    - #### setHandler

          public void setHandler​(javassist.util.proxy.MethodHandler mi)

      Specified by:
        `setHandler` in interface `javassist.util.proxy.Proxy`

    - #### getOriginObject

          public ListModelArray<E> getOriginObject()

      Description copied from interface: `FormProxyObject`
      Returns the origin object.
      Specified by:
        `getOriginObject` in interface `FormProxyObject`

    - #### resetFromOrigin

          public void resetFromOrigin()

      Description copied from interface: `FormProxyObject`
      Resets all of the changes of this form from the origin object.
      Specified by:
        `resetFromOrigin` in interface `FormProxyObject`

    - #### submitToOrigin

          public void submitToOrigin​(BindContext ctx)

      Description copied from interface: `FormProxyObject`
      Saves all of the changes of this form to the origin object.
      Specified by:
        `submitToOrigin` in interface `FormProxyObject`

    - #### isFormDirty

          public boolean isFormDirty()

      Description copied from interface: `FormProxyObject`
      Returns whether the form proxy object is dirty or not, including all of its attributes.
      Specified by:
        `isFormDirty` in interface `FormProxyObject`

    - #### setFormOwner

          public void setFormOwner​(java.lang.Object owner,
                                   FormBinding binding)

      Description copied from interface: `FormProxyObject`
      Sets the owner of this form with its binding.
      Specified by:
        `setFormOwner` in interface `FormProxyObject`
      Parameters:
        `owner` - the object associated with this form.

    - #### setPath

          public void setPath​(java.lang.String property,
                              ProxyNode parent)

      Description copied from interface: `FormProxyObject`
      Set the property of current form proxy object and it's creator
      Specified by:
        `setPath` in interface `FormProxyObject`
      Parameters:
        `property` - p the property
        `parent` - parent the parent proxy node

    - #### cacheSavePropertyBinding

          public void cacheSavePropertyBinding​(java.lang.String property,
                                               SavePropertyBinding s)

      Description copied from interface: `FormProxyObject`
      Cache save property binding by property string
      Specified by:
        `cacheSavePropertyBinding` in interface `FormProxyObject`
      Parameters:
        `property` - the property of save property binding
        `s` - the save property binding

    - #### collectCachedSavePropertyBinding

          public java.util.Set<Pair<java.lang.String,​SavePropertyBinding>> collectCachedSavePropertyBinding()

      Description copied from interface: `FormProxyObject`
      Collect all of collect cached save property bindings
      Specified by:
        `collectCachedSavePropertyBinding` in interface `FormProxyObject`

    - #### testEquals

          protected static boolean testEquals​(java.lang.Object e,
                                              java.lang.Object o)

    - #### createProxyObject

          protected <T> T createProxyObject​(T t)