/* TreeDataEvent.java Purpose: Description: History: Aug 10 2007, Created by tomyeh Copyright (C) 2005 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.TreeModel; /** * Defines an event that encapsulates changes to a tree. * * @author Jeff Liu * @since 3.0.0 */ public class TreeDataEvent { /** Identifies changing contents of nodes. */ public static final int CONTENTS_CHANGED = 0; /** Identifies the addition of children to a node. */ public static final int INTERVAL_ADDED = 1; /** Identifies the removal of children to a node. */ public static final int INTERVAL_REMOVED = 2; /** Identifies the structure of the tree has changed. @since 5.0.6 */ public static final int STRUCTURE_CHANGED = 3; /** Identifies the selection of the tree has changed. @since 6.0.0 */ public static final int SELECTION_CHANGED = 4; /** Identifies the open status of the tree has changed. @since 6.0.0 */ public static final int OPEN_CHANGED = 5; /** Identified the state of {@link org.zkoss.zul.ext.Selectable#isMultiple} is changed. * @since 6.0.0 */ public static final int MULTIPLE_CHANGED = 6; /** * 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 TreeModel _model; private final int _type; private final int _indexFrom; private final int _indexTo; private final int[] _nodePath; private final int[] _affectedPath; /** Constructor. * * @param type one of {@link #CONTENTS_CHANGED}, * {@link #INTERVAL_ADDED}, {@link #INTERVAL_REMOVED}, {@link #SELECTION_CHANGED}, * {@link #OPEN_CHANGED}, {@link #STRUCTURE_CHANGED} or {@link #MULTIPLE_CHANGED}. * @param nodePath the path of the affected node. * If {@link #CONTENTS_CHANGED}, {@link #INTERVAL_ADDED} or {@link #INTERVAL_REMOVED}, * it is the parent node. If {@link #SELECTION_CHANGED} or {@link #OPEN_CHANGED}, * it is the node being selected or opened. * If {@link #STRUCTURE_CHANGED} or {@link #MULTIPLE_CHANGED}, it is null. * @param indexFrom the lower index of the change range * @param indexTo the upper index of the change range */ public TreeDataEvent(TreeModel model, int type, int[] nodePath, int indexFrom, int indexTo) { _model = model; _type = type; _nodePath = nodePath; _indexFrom = indexFrom; _indexTo = indexTo; _affectedPath = null; } /** Constructor. * * @param type one of {@link #CONTENTS_CHANGED}, * {@link #INTERVAL_ADDED}, {@link #INTERVAL_REMOVED}, {@link #SELECTION_CHANGED}, * {@link #OPEN_CHANGED}, {@link #STRUCTURE_CHANGED} or {@link #MULTIPLE_CHANGED}. * @param nodePath the path of the affected node. * If {@link #CONTENTS_CHANGED}, {@link #INTERVAL_ADDED} or {@link #INTERVAL_REMOVED}, * it is the parent node. If {@link #SELECTION_CHANGED} or {@link #OPEN_CHANGED}, * it is the node being selected or opened. * If {@link #STRUCTURE_CHANGED} or {@link #MULTIPLE_CHANGED}, it is null. * @param indexFrom the lower index of the change range * @param indexTo the upper index of the change range * @param affectedPath the path to be removed or added */ public TreeDataEvent(TreeModel model, int type, int[] nodePath, int indexFrom, int indexTo, int[] affectedPath) { _model = model; _type = type; _nodePath = nodePath; _indexFrom = indexFrom; _indexTo = indexTo; _affectedPath = affectedPath; } /** Returns the tree model that fires this event. */ public TreeModel getModel() { return _model; } /** Returns the event type. One of {@link #CONTENTS_CHANGED}, * {@link #INTERVAL_ADDED}, or {@link #INTERVAL_REMOVED}. */ public int getType() { return _type; } /** * Returns the path of the affected node. * If {@link #CONTENTS_CHANGED}, {@link #INTERVAL_ADDED} or {@link #INTERVAL_REMOVED}, * it is the parent node. If {@link #SELECTION_CHANGED} or {@link #OPEN_CHANGED}, * it is the node being selected or opened. * If {@link #STRUCTURE_CHANGED} or {@link #MULTIPLE_CHANGED}, it is null. * @return the parent node that one of its children being modified */ public int[] getPath() { return _nodePath; } /** * Return the lower index of the change range * @return the lower index of the change range */ public int getIndexFrom() { return _indexFrom; } /** * Return the upper index of the change range * @return the upper index of the change range */ public int getIndexTo() { return _indexTo; } /** * Return the path of removed node * @return the node that is removed */ public int[] getAffectedPath() { return _affectedPath; } }