/* 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