/* GroupsDataEvent.java Purpose: Description: History: Mon Sep 1 11:05:31 2008, Created by tomyeh Copyright (C) 2008 Potix Corporation. All Rights Reserved. {{IS_RIGHT This program is distributed under LGPL Version 2.1 in the hope that it will be useful, but WITHOUT ANY WARRANTY. }}IS_RIGHT */ package org.zkoss.zul.event; import org.zkoss.zul.GroupsModel; /** * Defines an event that encapsulates changes to a list of groups. * * @author tomyeh * @since 3.5.0 * @see org.zkoss.zul.GroupsModel * @see GroupsDataListener */ public class GroupsDataEvent { /** Identifies one or more changes in the contents of a particular group. * The indices ({@link #getIndex0} and {@link #getIndex1} ) are * in the range of the particular group. * <p>Note: {@link #getGroupIndex} must be non-negative. */ public static final int CONTENTS_CHANGED = 0; /** Identifies the addition of one or more contiguous items to a * particular group. * The indices ({@link #getIndex0} and {@link #getIndex1} ) are * in the range of the particular group. * <p>Note: {@link #getGroupIndex} must be non-negative. */ public static final int INTERVAL_ADDED = 1; /** Identifies the removal of one or more contiguous items from a * particular group. * The indices ({@link #getIndex0} and {@link #getIndex1} ) are * in the range of the particular group. * <p>Note: {@link #getGroupIndex} must be non-negative. */ public static final int INTERVAL_REMOVED = 2; /** Identifies the structure of the lists has changed. @since 5.0.7*/ public static final int STRUCTURE_CHANGED = 3; /** Identifies one or more changes in the groups contents. * The indices ({@link #getIndex0} and {@link #getIndex1} ) are * the indices of groups. * Note: {@link #getGroupIndex} is ignored. */ public static final int GROUPS_CHANGED = 4; /** Identifies the addition of one or more contiguous items to the list. * The indices ({@link #getIndex0} and {@link #getIndex1} ) are * the indices of groups. * Note: {@link #getGroupIndex} is ignored. */ public static final int GROUPS_ADDED = 5; /** Identifies the removal of one or more contiguous items from the list. * The indices ({@link #getIndex0} and {@link #getIndex1} ) are * the indices of groups. * Note: {@link #getGroupIndex} is ignored. */ public static final int GROUPS_REMOVED = 6; /** Identifies the Group is reset. * @since 5.0.0 */ public static final int GROUPS_RESET = 7; /** Identifies the selection of the lists has changed. * Notice that the objects being selected can be found by calling * {@link org.zkoss.zul.ext.Selectable#getSelection}. * Moreover, {@link #getIndex0} and {@link #getIndex1} are both meaningless. * @since 6.0.0 */ public static final int SELECTION_CHANGED = 8; /** Identified the state of {@link org.zkoss.zul.ext.Selectable#isMultiple} is changed. * @since 6.0.0 */ public static final int MULTIPLE_CHANGED = 9; /** Identifies the Group opened. * @since 7.0.6 */ public static final int GROUPS_OPENED = 10; /** * Identified the state that Component's client update to be disabled * @since 8.0.0 */ public static final int DISABLE_CLIENT_UPDATE = 11; /** * Identified the state that Component's client update to be enabled * @since 8.0.0 */ public static final int ENABLE_CLIENT_UPDATE = 12; private final GroupsModel _model; private final int _type, _groupIndex, _index0, _index1; /** Constructor. * * @param type one of {@link #CONTENTS_CHANGED}, * {@link #INTERVAL_ADDED}, {@link #INTERVAL_REMOVED}, * {@link #GROUPS_CHANGED}, * {@link #GROUPS_ADDED}, or {@link #GROUPS_REMOVED}.. * @param groupIndex the index of the group being changed. * It is used only if type is one of * {@link #CONTENTS_CHANGED}, * {@link #INTERVAL_ADDED}, or {@link #INTERVAL_REMOVED}. * @param index0 the lower index of the change range. * For simple element, index0 is the same as index1. * -1 means the first element (the same as 0). * @param index1 the upper index of the change range. * -1 means the last element. */ public GroupsDataEvent(GroupsModel model, int type, int groupIndex, int index0, int index1) { if (model == null) throw new IllegalArgumentException(); if (type < STRUCTURE_CHANGED && groupIndex < 0) throw new IllegalArgumentException("groupIndex required for type " + type); _model = model; _type = type; _groupIndex = groupIndex; _index0 = index0; _index1 = index1; } /** Returns the list model that fires this event. */ public GroupsModel getModel() { return _model; } /** Returns the event type. One of {@link #CONTENTS_CHANGED}, * {@link #INTERVAL_ADDED}, {@link #INTERVAL_REMOVED}, * {@link #GROUPS_CHANGED}, * {@link #GROUPS_ADDED}, or {@link #GROUPS_REMOVED}. */ public int getType() { return _type; } /** Returns the index of the group. * It is used only if {@link #getType} is one of * {@link #CONTENTS_CHANGED}, * {@link #INTERVAL_ADDED}, {@link #INTERVAL_REMOVED}. */ public int getGroupIndex() { return _groupIndex; } /** Returns the lower index of the change range. * For a single element/group, this value is the same as that returned by * {@link #getIndex1}. */ public int getIndex0() { return _index0; } /** Returns the upper index of the change range. * For a single element/group, this value is the same as that returned by * {@link #getIndex0}. */ public int getIndex1() { return _index1; } //Object// public String toString() { return "[GroupsDataEvent type=" + _type + ", index=" + _index0 + ", " + _index1 + ']'; } }