Package org.zkoss.zul

Class AbstractGroupsModel<D,H,F,E>

java.lang.Object
org.zkoss.zul.AbstractGroupsModel<D,H,F,E>
All Implemented Interfaces:
Serializable, GroupsSelectableModel<E>, Selectable<E>, GroupsModel<D,H,F>
Direct Known Subclasses:
GroupsModelArray, SimpleGroupsModel

public abstract class AbstractGroupsModel<D,H,F,E> extends Object implements GroupsModel<D,H,F>, GroupsSelectableModel<E>, Serializable
A skeletal implementation for GroupsModel.

Implements Selectable interface to handle the selection status. (Since 6.0.0)

Generics:

D
The class of each data
H
The class of each group header
F
The class of each group footer
E
The class of each selection. It is the common base class of D, H, F. In other words, D, H and F must extend from E.
Since:
3.5.0
Author:
tomyeh
See Also:
  • Field Details

    • _selection

      protected transient Set<E> _selection
      The current selection.
  • Constructor Details

    • AbstractGroupsModel

      protected AbstractGroupsModel()
  • Method Details

    • fireEvent

      protected void fireEvent(int type, int groupIndex, int index0, int index1)
      Fires a GroupsDataEvent for all registered listener (thru addGroupsDataListener(org.zkoss.zul.event.GroupsDataListener).

      Note: you can invoke this method only in an event listener.

    • 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<D>
    • 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<D>
    • addGroupsDataListener

      public void addGroupsDataListener(GroupsDataListener l)
      Description copied from interface: GroupsModel
      Adds a listener to the groups that's notified each time a change to the data model occurs.
      Specified by:
      addGroupsDataListener in interface GroupsModel<D,H,F>
    • removeGroupsDataListener

      public void removeGroupsDataListener(GroupsDataListener l)
      Description copied from interface: GroupsModel
      Removes a listener from the groups that's notified each time a change to the data model occurs.
      Specified by:
      removeGroupsDataListener in interface GroupsModel<D,H,F>
    • getSelection

      public Set<E> getSelection()
      Returns the current selection. It is readonly. Don't modify it directly
      Specified by:
      getSelection in interface Selectable<D>
      Returns:
      the current selection.
    • setSelection

      public void setSelection(Collection<? extends E> selection)
      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<D>
    • isSelected

      public boolean isSelected(Object obj)
      Returns whether an object is selected.
      Specified by:
      isSelected in interface Selectable<D>
    • isSelectionEmpty

      public boolean isSelectionEmpty()
      Returns true if the selection is currently empty.
      Specified by:
      isSelectionEmpty in interface Selectable<D>
    • addToSelection

      public boolean addToSelection(E obj)
      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<D>
      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(Object obj)
      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<D>
      Parameters:
      obj - the object to be remove from selection.
      Returns:
      whether it is removed successfully
    • clearSelection

      public void clearSelection()
      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<D>
    • fireSelectionEvent

      protected void fireSelectionEvent(E e)
      Selectable's implementor use only.

      Fires a selection event for component to scroll into view. The override subclass must put the index0 of fireEvent(int, 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. addToSelection(Object) and setSelection(Collection).

      Parameters:
      e - selected object.
    • removeAllSelection

      protected void removeAllSelection(Collection<?> c)
      Removes the selection of the given collection.
    • retainAllSelection

      protected void retainAllSelection(Collection<?> c)
      Removes the selection that doesn't belong to the given collection.
    • isMultiple

      public boolean isMultiple()
      Returns whether the current selection mode is multiple.
      Specified by:
      isMultiple in interface Selectable<D>
      See Also:
    • setMultiple

      public void setMultiple(boolean multiple)
      Sets the selection mode to be multiple.
      Specified by:
      setMultiple in interface Selectable<D>
    • isGroupSelectable

      public boolean isGroupSelectable()
      Description copied from interface: GroupsSelectableModel
      Returns whether the groups are selectable
      Specified by:
      isGroupSelectable in interface GroupsSelectableModel<D>
    • setGroupSelectable

      public void setGroupSelectable(boolean groupSelectable)
      Description copied from interface: GroupsSelectableModel
      Sets the groups are selectable
      Specified by:
      setGroupSelectable in interface GroupsSelectableModel<D>
    • newEmptySelection

      protected Set<E> newEmptySelection()
      Instantiation an empty set of the section. It is used to initialize _selection.

      By default, it instantiates an instance of LinkedHashMap. The deriving class might override to instantiate a different class.

    • writeSelection

      protected void writeSelection(ObjectOutputStream s) throws IOException
      Writes _selection.

      Default: write it directly. Override it if E is not serializable.

      Throws:
      IOException
    • readSelection

      protected void readSelection(ObjectInputStream s) throws IOException, ClassNotFoundException
      Reads back _selection.

      Default: write it directly. Override it if E is not serializable.

      Throws:
      IOException
      ClassNotFoundException
    • clone

      public Object clone()
      Overrides:
      clone in class Object