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

📄 htmltreenode.java

📁 一个使用struts+hibernate+spring开发的完的网站源代码。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            translateChildrenPath(pathUpdateIndex, 0, offset);        }    }    public void setExpanded(boolean expanded)    {        if (this.expanded == expanded)        {            // no change            return;        }        this.expanded = expanded;        if (expanded)        {            FacesContext context = FacesContext.getCurrentInstance();            TreeModel model = getTreeModel(context);            int childCount = model.getChildCount(getUserObject());            for (int i = 0; i < childCount; i++)            {                Object child = model.getChild(getUserObject(), i);                HtmlTreeNode node = createNode(model, child, childCount, i, context);                getChildren().add(node);            }            layout[layout.length - 1] -= OFFSET;        } else        {            if (clearSelection())            {                setSelected(true);            }            getChildren().clear();            layout[layout.length - 1] += OFFSET;        }    }    private HtmlTreeNode createNode(TreeModel model, Object child, int childCount, int index, FacesContext context)    {        HtmlTreeNode node = (HtmlTreeNode) context.getApplication().createComponent(HtmlTreeNode.COMPONENT_TYPE);        String id = getTree().createUniqueId(context);        node.setId(id);        node.setPath(getPath().pathByAddingChild(child));        node.setUserObject(child);        int state = CHILD;        int childChildCount = model.getChildCount(child);        if (childChildCount == 0)        {            if (childCount > 1)            {                if (index == 0)                {                    state = CHILD;                } else if (index == childCount - 1)                {                    state = CHILD_LAST;                }            } else            {                state = CHILD_LAST;            }        } else        {            if (childCount > 1)            {                if (index == 0)                {                    state = CLOSED;                } else if (index == childCount - 1)                {                    state = CLOSED_LAST;                } else                {                    state = CLOSED;                }            } else            {                state = CLOSED_LAST;            }        }        node.setLayout(layout, state);        return node;    }    public void toggleExpanded()    {        setExpanded(!expanded);    }    public boolean isSelected()    {        return selected;    }    public void setSelected(boolean selected)    {        if (selected)        {            getTree().getRootNode().clearSelection();        }        this.selected = selected;        getTree().selectionChanged(this);    }    public void toggleSelected()    {        setSelected(!selected);    }    private boolean clearSelection()    {        if (isSelected())        {            selected = false;            return true;        }        for (Iterator iterator = getChildren().iterator(); iterator.hasNext();)        {            HtmlTreeNode node = (HtmlTreeNode) iterator.next();            if (node.clearSelection())            {                return true;            }        }        return false;    }    public int[] getLayout()    {        return layout;    }    public void setLayout(int[] layout)    {        this.layout = layout;    }    public void setLayout(int[] parentLayout, int layout)    {        this.layout = new int[parentLayout.length + 1];        this.layout[parentLayout.length] = layout;        for (int i = 0; i < parentLayout.length; i++)        {            int state = parentLayout[i];            if (state == OPEN || state == OPEN_FIRST || state == CLOSED || state == CLOSED_FIRST || state == CHILD || state == CHILD_FIRST || state == LINE)            {                this.layout[i] = LINE;            } else            {                this.layout[i] = EMPTY;            }        }    }    public HtmlTreeImageCommandLink getExpandCollapseCommand(FacesContext context)    {        HtmlTreeImageCommandLink command = (HtmlTreeImageCommandLink) getFacet(EXPAND_COLLAPSE_FACET);        if (command == null)        {            command = (HtmlTreeImageCommandLink) context.getApplication().createComponent(HtmlTreeImageCommandLink.COMPONENT_TYPE);            String id = getTree().createUniqueId(context);            command.setId(id);            getFacets().put(EXPAND_COLLAPSE_FACET, command);        }        return command;    }    public Object saveState(FacesContext context)    {        Object values[] = new Object[5];        values[0] = super.saveState(context);        values[1] = Boolean.valueOf(expanded);        values[2] = layout;        values[3] = translatePath(getPath(), getTreeModel(context));        values[4] = Boolean.valueOf(selected);        return ((Object) (values));    }    public void restoreState(FacesContext context, Object state)    {        Object values[] = (Object[]) state;        super.restoreState(context, values[0]);        expanded = ((Boolean) values[1]).booleanValue();        layout = (int[]) values[2];        translatedPath = (int[]) values[3];        selected = ((Boolean) values[4]).booleanValue();    }    protected static int[] translatePath(TreePath treePath, TreeModel model)    {        Object[] path = treePath.getPath();        int[] translated = new int[path.length - 1];        Object parent = path[0];        for (int i = 1; i < path.length; i++)        {            Object element = path[i];            translated[i - 1] = model.getIndexOfChild(parent, element);            parent = element;        }        return translated;    }    protected static TreePath translatePath(int[] path, TreeModel model)    {        Object[] translated = new Object[path.length + 1];        Object parent = model.getRoot();        translated[0] = parent;        for (int i = 0; i < path.length; i++)        {            int index = path[i];            translated[i + 1] = model.getChild(parent, index);            parent = translated[i + 1];        }        return new TreePath(translated);    }    protected TreeModel getTreeModel(FacesContext context)    {        return getTree().getModel(context);    }    protected HtmlTree getTree()    {        if (getParent() instanceof HtmlTree)        {            return (HtmlTree) getParent();        }        return ((HtmlTreeNode) getParent()).getTree();    }    public boolean isLeaf(FacesContext context)    {        return getTreeModel(context).isLeaf(getUserObject());    }    public void expandPath(int[] translatedPath, int current)    {        if (current >= translatedPath.length)        {            return;        }        HtmlTreeNode child = (HtmlTreeNode) getChildren().get(translatedPath[current]);        if (!child.isExpanded())        {            child.setExpanded(true);        }        child.expandPath(translatedPath, current + 1);    }    public void restoreItemState(HtmlTreeNode node)    {        setExpanded(node.isExpanded());        selected = node.isSelected();        List children = getChildren();        List otherChildren = node.getChildren();        for (int i = 0; i < children.size(); i++)        {            HtmlTreeNode child = (HtmlTreeNode) children.get(i);            child.restoreItemState((HtmlTreeNode) otherChildren.get(i));        }    }}

⌨️ 快捷键说明

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