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

📄 htmltree.java

📁 一个使用struts+hibernate+spring开发的完的网站源代码。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    /**     * Ensures that the node identified by the specified path is collapsed and     * viewable.     *     * @param path the <code>TreePath</code> identifying a node     */    public void collapsePath(TreePath path, FacesContext context)    {        HtmlTreeNode node = findNode(path, context);        if (node != null)        {            node.setExpanded(false);        }    }    public boolean isExpanded(TreePath path, FacesContext context)    {        if (path == null)        {            return false;        }        return findNode(path, context) != null;    }    private HtmlTreeNode findNode(TreePath path, FacesContext context)    {        HtmlTreeNode node = getRootNode();        int[] translatedPath = HtmlTreeNode.translatePath(path, getModel(context));        for (int i = 0; i < translatedPath.length; i++)        {            if (!node.isExpanded())            {                return null;            }            int index = translatedPath[i];            node = (HtmlTreeNode) node.getChildren().get(index);        }        return node;    }    public TreePath getSelectionPath()    {        if (selectedPath == null)        {            return null;        }        return HtmlTreeNode.translatePath(selectedPath, getModel(FacesContext.getCurrentInstance()));    }    public void selectionChanged(HtmlTreeNode node)    {        TreePath oldPath = null;        if (selectedPath != null)        {            oldPath = HtmlTreeNode.translatePath(selectedPath, getModel(FacesContext.getCurrentInstance()));        }        selectedPath = node.getTranslatedPath();        if (node.isSelected())        {            queueEvent(new TreeSelectionEvent(this, oldPath, node.getPath()));        } else        {            queueEvent(new TreeSelectionEvent(this, oldPath, null));        }    }    private void createRootNode(FacesContext context)    {        HtmlTreeNode node;        TreeModel model = getModel(context);        Object root = model.getRoot();        node = (HtmlTreeNode) context.getApplication().createComponent(HtmlTreeNode.COMPONENT_TYPE);        String id = createUniqueId(context);        node.setId(id);        node.setPath(new TreePath(new Object[]{root}));        node.setUserObject(root);        node.setLayout(new int[]{HtmlTreeNode.CLOSED_SINGLE});        getFacets().put(FACET_ROOTNODE, node);    }    public HtmlTreeNode getRootNode()    {        return (HtmlTreeNode) getFacet(FACET_ROOTNODE);    }    public Object saveState(FacesContext context)    {        Object values[] = new Object[25];        values[0] = super.saveState(context);        values[1] = iconChildFirst;        values[2] = iconChildMiddle;        values[3] = iconChildLast;        values[4] = iconLine;        values[5] = iconNodeClose;        values[6] = iconNodeCloseFirst;        values[7] = iconNodeCloseLast;        values[8] = iconNodeCloseMiddle;        values[9] = iconNodeOpen;        values[10] = iconNodeOpenFirst;        values[11] = iconNodeOpenLast;        values[12] = iconNodeOpenMiddle;        values[13] = iconNoline;        values[14] = styleClass;        values[15] = nodeClass;        values[16] = selectedNodeClass;        values[17] = new Integer(uniqueIdCounter);        values[18] = selectedPath;        values[19] = iconClass;        values[20] = new Integer(internalId);        values[21] = new Long(expireListeners);        values[22] = rowClasses;        values[23] = columnClasses;        values[24] = var;        return ((Object) (values));    }    public void restoreState(FacesContext context, Object state)    {        Object values[] = (Object[]) state;        super.restoreState(context, values[0]);        iconChildFirst = (String) values[1];        iconChildMiddle = (String) values[2];        iconChildLast = (String) values[3];        iconLine = (String) values[4];        iconNodeClose = (String) values[5];        iconNodeCloseFirst = (String) values[6];        iconNodeCloseLast = (String) values[7];        iconNodeCloseMiddle = (String) values[8];        iconNodeOpen = (String) values[9];        iconNodeOpenFirst = (String) values[10];        iconNodeOpenLast = (String) values[11];        iconNodeOpenMiddle = (String) values[12];        iconNoline = (String) values[13];        styleClass = (String) values[14];        nodeClass = (String) values[15];        selectedNodeClass = (String) values[16];        uniqueIdCounter = ((Integer) values[17]).intValue();        selectedPath = (int[]) values[18];        iconClass = (String) values[19];        internalId = ((Integer) values[20]).intValue();        expireListeners = ((Long) values[21]).longValue();        rowClasses = (String) values[22];        columnClasses = (String) values[23];        var = (String) values[24];        addToModelListeners();    }    public void decode(FacesContext context)    {        super.decode(context);        //Save the current view root for later reference...        context.getExternalContext().getRequestMap().put(PREVIOUS_VIEW_ROOT, context.getViewRoot());        //...and remember that this instance needs NO special treatment on        // rendering:        itemStatesRestored = true;    }    public void processDecodes(FacesContext context)    {        addToModelListeners();        super.processDecodes(context);    }    public void processValidators(FacesContext context)    {        addToModelListeners();        super.processValidators(context);    }    public void processUpdates(FacesContext context)    {        addToModelListeners();        super.processUpdates(context);    }    public void encodeBegin(FacesContext context) throws IOException    {        addToModelListeners();        processModelEvents();        HtmlTreeNode node = getRootNode();        if (node == null)        {            createRootNode(context);        }        if (!itemStatesRestored)        {            UIViewRoot previousRoot = (UIViewRoot) context.getExternalContext().getRequestMap().get(PREVIOUS_VIEW_ROOT);            if (previousRoot != null)            {                restoreItemStates(context, previousRoot);            } else            {                //no previous root, means no decode was done                //--> a new request            }        }        super.encodeBegin(context);    }    public void encodeEnd(FacesContext context) throws IOException    {        super.encodeEnd(context);    }    public void restoreItemStates(FacesContext facesContext, UIViewRoot previousRoot)    {        HtmlTree previousTree = (HtmlTree) previousRoot.findComponent(getClientId(facesContext));        if (previousTree != null)        {            HtmlTreeNode node = previousTree.getRootNode();            if (node != null)            {                getRootNode().restoreItemState(node);            }            selectedPath = previousTree.selectedPath;        }    }    public void treeNodesChanged(TreeModelEvent e)    {        TreePath path = e.getTreePath();        FacesContext context = FacesContext.getCurrentInstance();        HtmlTreeNode node = findNode(path, context);        if (node != null)        {            node.childrenChanged(e.getChildIndices(), context);        }    }    public void treeNodesInserted(TreeModelEvent e)    {        TreePath path = e.getTreePath();        FacesContext context = FacesContext.getCurrentInstance();        HtmlTreeNode node = findNode(path, context);        if (node != null)        {            node.childrenAdded(e.getChildIndices(), context);        }    }    public void treeNodesRemoved(TreeModelEvent e)    {        TreePath path = e.getTreePath();        FacesContext context = FacesContext.getCurrentInstance();        HtmlTreeNode node = findNode(path, context);        if (node != null)        {            node.childrenRemoved(e.getChildIndices());        }    }    public void treeStructureChanged(TreeModelEvent e)    {        TreePath path = e.getTreePath();        FacesContext context = FacesContext.getCurrentInstance();        if (isExpanded(path, context))        {            collapsePath(path, context);            expandPath(path, context);        }    }    public boolean equals(Object obj)    {        if (!(obj instanceof HtmlTree))        {            return false;        }        HtmlTree other = (HtmlTree) obj;        return other.getId().equals(getId());    }    public int hashCode()    {        return getClientId(FacesContext.getCurrentInstance()).hashCode();    }    public void addToModelListeners()    {        Collection listeners = getModel(FacesContext.getCurrentInstance()).getTreeModelListeners();        long currentTime = System.currentTimeMillis();        boolean found = false;        for (Iterator iterator = listeners.iterator(); iterator.hasNext();)        {            ModelListener listener = (ModelListener) iterator.next();            if (listener.getId() == internalId)            {                found = true;            } else if (currentTime - listener.getLastAccessTime() > expireListeners)            {                iterator.remove();            }        }        if (!found)        {            listeners.add(new ModelListener(internalId));        }    }    private void processModelEvents()    {        Collection listeners = getModel(FacesContext.getCurrentInstance()).getTreeModelListeners();        for (Iterator iterator = listeners.iterator(); iterator.hasNext();)        {            ModelListener listener = (ModelListener) iterator.next();            if (listener.getId() == internalId)            {                for (Iterator events = listener.getEvents().iterator(); events.hasNext();)                {                    Event event = (Event) events.next();                    event.process(this);                    events.remove();                }                break;            }        }    }    public void collapseAll()    {        HtmlTreeNode root = getRootNode();        FacesContext context = FacesContext.getCurrentInstance();        collapsePath(root.getPath(), context);        for (int i = 0; i < root.getChildren().size(); i++)        {            HtmlTreeNode child = (HtmlTreeNode) (root.getChildren().get(i));            collapsePath(child.getPath(), context);            if (!child.isLeaf(context))            {                collapseChildren(context, child);            }        }    }    private void collapseChildren(FacesContext context, HtmlTreeNode parent)    {        for (int i = 0; i < parent.getChildren().size(); i++)        {            HtmlTreeNode child = (HtmlTreeNode) (parent.getChildren().get(i));            collapsePath(child.getPath(), context);            if (!child.isLeaf(context))            {                collapseChildren(context, child);            }        }    }    public void expandAll()    {        HtmlTreeNode root = getRootNode();        FacesContext context = FacesContext.getCurrentInstance();        expandPath(root.getPath(), context);        for (int i = 0; i < root.getChildren().size(); i++)        {            HtmlTreeNode child = (HtmlTreeNode) (root.getChildren().get(i));            expandPath(child.getPath(), context);            if (!child.isLeaf(context))            {                expandChildren(context, child);            }        }    }    private void expandChildren(FacesContext context, HtmlTreeNode parent)    {        for (int i = 0; i < parent.getChildren().size(); i++)        {            HtmlTreeNode child = (HtmlTreeNode) (parent.getChildren().get(i));            expandPath(child.getPath(), context);            if (!child.isLeaf(context))            {                expandChildren(context, child);            }        }    }    public static String getDefaultImagePath(String relativePathInResourceFolder)    {        return AddResource.getResourceMappedPath(HtmlTree.class, relativePathInResourceFolder, null);    }    private static class ModelListener implements TreeModelListener    {        private long lastAccessTime = System.currentTimeMillis();        private LinkedList events = new LinkedList();        int id;        public ModelListener(int id)        {            this.id = id;        }        public List getEvents()        {            lastAccessTime = System.currentTimeMillis();            return events;        }        public int getId()        {            return id;        }        public long getLastAccessTime()        {            return lastAccessTime;        }        public void treeNodesChanged(TreeModelEvent e)        {            events.addLast(new Event(EVENT_CHANGED, e));        }        public void treeNodesInserted(TreeModelEvent e)        {            events.addLast(new Event(EVENT_INSERTED, e));        }        public void treeNodesRemoved(TreeModelEvent e)        {            events.addLast(new Event(EVENT_REMOVED, e));        }        public void treeStructureChanged(TreeModelEvent e)        {            events.addLast(new Event(EVENT_STRUCTURE_CHANGED, e));        }    }    private static class Event    {        private int kind;        private TreeModelEvent event;        public Event(int kind, TreeModelEvent event)        {            this.kind = kind;            this.event = event;        }        public void process(HtmlTree tree)        {            switch (kind)            {                case EVENT_CHANGED:                    tree.treeNodesChanged(event);                    break;                case EVENT_INSERTED:                    tree.treeNodesInserted(event);                    break;                case EVENT_REMOVED:                    tree.treeNodesRemoved(event);                    break;                case EVENT_STRUCTURE_CHANGED:                    tree.treeStructureChanged(event);                    break;            }        }    }}

⌨️ 快捷键说明

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