⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree.java

📁 非常接近C/S操作方式的Java Ajax框架-ZK 用ZK框架使你的B/S应用程序更漂亮更易操作。 官网:www.zkoss.org
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			_selItems.clear();			_sel = null;			smartUpdate("select", "");		}	}	/** Selects all items.	 */	public void selectAll() {		if (!_multiple)			throw new UiException("Appliable only to the multiple seltype: "+this);		//we don't invoke getItemCount first because it is slow!		boolean changed = false, first = true;		for (Iterator it = getItems().iterator(); it.hasNext();) {			final Treeitem item = (Treeitem)it.next();			if (!item.isSelected()) {				_selItems.add(item);				item.setSelectedDirectly(true);				changed = true;			}			if (first) {				_sel = item;				first = false;			}		}		smartUpdate("selectAll", "true");	}	/** Returns the selected item.	 */	public Treeitem getSelectedItem() {		return _sel;	}	/**  Deselects all of the currently selected items and selects	 * the given item.	 * <p>It is the same as {@link #selectItem}.	 */	public void setSelectedItem(Treeitem item) {		selectItem(item);	}	/** Returns all selected items.	 */	public Set getSelectedItems() {		return Collections.unmodifiableSet(_selItems);	}	/** Returns the number of items being selected.	 */	public int getSelectedCount() {		return _selItems.size();	}	/** Clears all child tree items ({@link Treeitem}.	 * <p>Note: after clear, {@link #getTreechildren} won't be null, but	 * it has no child	 */	public void clear() {		if (_treechildren == null)			return;		final List l = _treechildren.getChildren();		if (l.isEmpty())			return; //nothing to do		for (Iterator it = new ArrayList(l).iterator(); it.hasNext();)			((Component)it.next()).detach();	}	/** Re-init the tree at the client.	 */	/*package*/ void initAtClient() {		smartUpdate("z.init", true);	}	//-- Component --//	public void setHeight(String height) {		if (!Objects.equals(height, getHeight())) {			super.setHeight(height);			initAtClient();		}	}	public void smartUpdate(String attr, String value) {		if (!_noSmartUpdate) super.smartUpdate(attr, value);	}	public boolean insertBefore(Component child, Component insertBefore) {		if (child instanceof Treecols) {			if (_treecols != null && _treecols != child)				throw new UiException("Only one treecols is allowed: "+this);			if (!getChildren().isEmpty())				insertBefore = (Component)getChildren().get(0);				//always makes treecols as the first child			_treecols = (Treecols)child;			invalidate();		} else if (child instanceof Treechildren) {			if (_treechildren != null && _treechildren != child)				throw new UiException("Only one treechildren is allowed: "+this);			if (insertBefore instanceof Treecols)				throw new UiException("treecols must be the first child");			_treechildren = (Treechildren)child;			invalidate();			fixSelectedSet();		} else {			throw new UiException("Unsupported child for tree: "+child);		}		return super.insertBefore(child, insertBefore);	}	/** Called by {@link Treeitem} when is added to a tree. */	/*package*/ void onTreeitemAdded(Treeitem item) {		fixNewChild(item);		onTreechildrenAdded(item.getTreechildren());	}	/** Called by {@link Treeitem} when is removed from a tree. */	/*package*/ void onTreeitemRemoved(Treeitem item) {		boolean fixSel = false;		if (item.isSelected()) {			_selItems.remove(item);			fixSel = _sel == item;			if (fixSel && !_multiple) {				_sel = null;				smartUpdate("z.selId", getSelectedId());				assert _selItems.isEmpty();			}		}		onTreechildrenRemoved(item.getTreechildren());		if (fixSel) fixSelected();	}	/** Called by {@link Treechildren} when is added to a tree. */	/*package*/ void onTreechildrenAdded(Treechildren tchs) {		if (tchs == null || tchs.getParent() == this)			return; //already being processed by insertBefore		//main the selected status		for (Iterator it = tchs.getItems().iterator(); it.hasNext();)			fixNewChild((Treeitem)it.next());	}	/** Fixes the status of new added child. */	private void fixNewChild(Treeitem item) {		if (item.isSelected()) {			if (_sel != null && !_multiple) {				item.setSelectedDirectly(false);				item.invalidate();			} else {				if (_sel == null)					_sel = item;				_selItems.add(item);				smartUpdate("z.selId", getSelectedId());			}		}	}	/** Called by {@link Treechildren} when is removed from a tree. */	/*package*/ void onTreechildrenRemoved(Treechildren tchs) {		if (tchs == null || tchs.getParent() == this)			return; //already being processed by onChildRemoved		//main the selected status		boolean fixSel = false;		for (Iterator it = tchs.getItems().iterator(); it.hasNext();) {			final Treeitem item = (Treeitem)it.next();			if (item.isSelected()) {				_selItems.remove(item);				if (_sel == item) {					if (!_multiple) {						_sel = null;						smartUpdate("z.selId", getSelectedId());						assert _selItems.isEmpty();						return; //done					}					fixSel = true;				}			}		}		if (fixSel) fixSelected();	}	public void onChildAdded(Component child) {		super.onChildAdded(child);		invalidate();	}	public void onChildRemoved(Component child) {		if (child instanceof Treecols) {			_treecols = null;		} else if (child instanceof Treechildren) {			_treechildren = null;			_selItems.clear();			_sel = null;		}		super.onChildRemoved(child);		invalidate();	}	/** Fixes all info about the selected status. */	private void fixSelectedSet() {		_sel = null; _selItems.clear();		for (Iterator it = getItems().iterator(); it.hasNext();) {			final Treeitem item = (Treeitem)it.next();			if (item.isSelected()) {				if (_sel == null) {					_sel = item;				} else if (!_multiple) {					item.setSelectedDirectly(false);					continue;				}				_selItems.add(item);			}		}	}	/** Make _sel to be the first selected item. */	private boolean fixSelected() {		Treeitem sel = null;		switch (_selItems.size()) {		case 1:			sel = (Treeitem)_selItems.iterator().next();		case 0:			break;		default:			for (Iterator it = getItems().iterator(); it.hasNext();) {				final Treeitem item = (Treeitem)it.next();				if (item.isSelected()) {					sel = item;					break;				}			}		}		if (sel != _sel) {			_sel = sel;			return true;		}		return false;	}	//-- super --//	public String getOuterAttrs() {		final StringBuffer sb = new StringBuffer(64)			.append(super.getOuterAttrs());		HTMLs.appendAttribute(sb, "z.name", _name);		HTMLs.appendAttribute(sb, "z.size",  getRows());		HTMLs.appendAttribute(sb, "z.selId", getSelectedId());		if (_multiple)			HTMLs.appendAttribute(sb, "z.multiple", true);		//if (_checkmark)		//	HTMLs.appendAttribute(sb, "z.checkmark",  _checkmark);		if (_vflex)			HTMLs.appendAttribute(sb, "z.vflex", true);		appendAsapAttr(sb, Events.ON_SELECT);		return sb.toString();	}	//Cloneable//	public Object clone() {		int cntSel = _selItems.size();		final Tree clone = (Tree)super.clone();		clone.init();		int cnt = 0;		if (_treecols != null) ++cnt;		if (_treechildren != null) ++cnt;		if (cnt > 0 || cntSel > 0) clone.afterUnmarshal(cnt, cntSel);		return clone;	}	/** @param cnt # of children that need special handling (used for optimization).	 * -1 means process all of them	 * @param cntSel # of selected items	 */	private void afterUnmarshal(int cnt, int cntSel) {		if (cnt != 0) {			for (Iterator it = getChildren().iterator(); it.hasNext();) {				final Object child = it.next();				if (child instanceof Treecols) {					_treecols = (Treecols)child;					if (--cnt == 0) break;				} else if (child instanceof Treechildren) {					_treechildren = (Treechildren)child;					if (--cnt == 0) break;				}			}		}		_sel = null;		_selItems.clear();		if (cntSel != 0) {			for (Iterator it = getItems().iterator(); it.hasNext();) {				final Treeitem ti = (Treeitem)it.next();				if (ti.isSelected()) {					if (_sel == null) _sel = ti;					_selItems.add(ti);					if (--cntSel == 0) break;				}			}		}	}	//-- Serializable --//	private synchronized void readObject(java.io.ObjectInputStream s)	throws java.io.IOException, ClassNotFoundException {		s.defaultReadObject();		init();		afterUnmarshal(-1, -1);	}	//-- ComponentCtrl --//	protected Object newExtraCtrl() {		return new ExtraCtrl();	}	/** A utility class to implement {@link #getExtraCtrl}.	 * It is used only by component developers.	 */	protected class ExtraCtrl extends XulElement.ExtraCtrl	implements Selectable, ChildChangedAware {		//-- Selectable --//		public void selectItemsByClient(Set selItems) {			_noSmartUpdate = true;			try {				if (!_multiple || selItems == null || selItems.size() <= 1) {					final Treeitem item =						selItems != null && selItems.size() > 0 ?							(Treeitem)selItems.iterator().next(): null;					selectItem(item);				} else {					for (Iterator it = new ArrayList(_selItems).iterator(); it.hasNext();) {						final Treeitem item = (Treeitem)it.next();						if (!selItems.remove(item))							removeItemFromSelection(item);					}					for (Iterator it = selItems.iterator(); it.hasNext();)						addItemToSelection((Treeitem)it.next());				}			} finally {				_noSmartUpdate = false;			}		}		//ChildChangedAware//		public boolean isChildChangedAware() {			return true;		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -