/* AbstractTreeModel.java {{IS_NOTE Purpose: Description: History: Aug 10 2007, Created by Jeff Liu }}IS_NOTE Copyright (C) 2005 Potix Corporation. All Rights Reserved. {{IS_RIGHT This program is distributed under GPL Version 2.0 in the hope that it will be useful, but WITHOUT ANY WARRANTY. }}IS_RIGHT */ package org.zkoss.zul; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.zkoss.zk.ui.Component; import org.zkoss.zul.event.TreeDataListener; import org.zkoss.zul.event.TreeDataEvent; /** * A skeletal implementation for {@link TreeModel}. * * @author Jeff Liu */ public abstract class AbstractTreeModel implements TreeModel, java.io.Serializable { /** * The root object to be return by method {@link #getRoot()}. */ private Object _root; private transient List _listeners = new LinkedList(); /** * Contructor * @param root - root of tree */ public AbstractTreeModel(Object root){ _root = root; } /** * Return the root of tree * @return the root of tree */ public Object getRoot(){ return _root; } /** Fires a {@link TreeDataEvent} for all registered listener * *

Note: you can invoke this method only in an event listener. */ protected void fireEvent(Object node, int indexFrom, int indexTo, int evtType){ final TreeDataEvent evt = new TreeDataEvent(this,evtType, node, indexFrom,indexTo); for (Iterator it = _listeners.iterator(); it.hasNext();) ((TreeDataListener)it.next()).onChange(evt); } //-TreeModel-// public int[] getPath(Object parent, Object lastNode){ List l = new ArrayList(); dfSearch(l, parent, lastNode); Object[] objs = l.toArray(); int[] path = new int[objs.length]; for(int i=0;i