コード例 #1
0
        /// <summary>
        /// 依据要添加节点的种类和节点文本,生成其路径,可用于检测是否己存在同名节点
        /// </summary>
        /// <param name="category"></param>
        /// <param name="newNodeText"></param>
        /// <returns></returns>
        public String getNewNodePath(AddNodeCategory category, String newNodeText)
        {
            String selectNodePath = (curDbInfoTab.CurrentTreeView.SelectedItem as TreeViewIconsItem) == null ? "" : (curDbInfoTab.CurrentTreeView.SelectedItem as TreeViewIconsItem).Path;
            String newNodePath    = "";

            switch (category)
            {
            case AddNodeCategory.AddRoot:
                newNodePath = "/" + newNodeText + "/";
                break;

            case AddNodeCategory.AddChild:
                if (selectNodePath != "")
                {
                    newNodePath = selectNodePath + newNodeText + "/";
                }

                break;

            case AddNodeCategory.AddSibling:
                if (selectNodePath != "")
                {
                    String selectNodeText = (curDbInfoTab.CurrentTreeView.SelectedItem as TreeViewIconsItem).HeaderText;
                    newNodePath = selectNodePath.Replace("/" + selectNodeText + "/", "/" + newNodeText + "/");
                }

                break;
            }
            return(newNodePath);
        }
コード例 #2
0
        private void AddNode(AddNodeCategory category)
        {
            string treeNodeType = labeltree.TreeNodeType;
            //为新节点生成默认文本
            String NodeText = MainWin.getDefaultNodeText(treeNodeType) + (labeltree.NodeCount + 1);
            //尝试从剪贴板中提取文本
            String textFromClipboard = StringUtils.getFirstLineOfString(Clipboard.GetText());

            if (String.IsNullOrEmpty(textFromClipboard) == false && textFromClipboard != LastPasteNodeText && textFromClipboard.IndexOf("/") == -1)
            {
                //检测一下从剪贴板中获取的文本是否有效(即不会导致重名的节点出现)
                String newNodeText = textFromClipboard;
                bool   nodeExisted = labeltree.IsNodeExisted(MainWin.getNewNodePath(category, newNodeText));
                //如果不存在同名的路径
                if (nodeExisted == false)
                {
                    NodeText          = newNodeText;
                    LastPasteNodeText = NodeText;
                }
            }
            //如果还有重复路径的,则循环使用随机数,务必保证路径不会相同
            while (labeltree.IsNodeExisted(MainWin.getNewNodePath(category, NodeText)))
            {
                NodeText = MainWin.getDefaultNodeText(treeNodeType) + new Random().Next() as string;
            }

            //创建默认的节点数据对象
            NodeDataObject dataobject = NodeFactory.CreateDataInfoNode(treeNodeType, DALConfig.getEFConnectionString(curDbInfoTab.dbInfoObject.DatabaseFilePath));

            TreeViewIconsItem newNode = null;

            //在树中添加节点
            switch (category)
            {
            case AddNodeCategory.AddRoot:
                newNode = labeltree.AddRoot(NodeText, dataobject);
                curDbInfoTab.LabelViewObj.SuperTree.AddRoot(NodeText, dataobject);
                break;

            case AddNodeCategory.AddChild:
                newNode = labeltree.AddChild(NodeText, dataobject);
                curDbInfoTab.LabelViewObj.SuperTree.AddChild(NodeText, dataobject);
                break;

            case AddNodeCategory.AddSibling:
                newNode = labeltree.AddSibling(NodeText, dataobject);
                curDbInfoTab.LabelViewObj.SuperTree.AddSibling(NodeText, dataobject);
                break;

            default:
                break;
            }
            if (newNode == null)
            {
                return;
            }
            //新节点,默认不是粗体的
            newNode.FontWeight = FontWeights.Normal;
            //在数据库中创建记录
            if (dataobject.AccessObject != null)
            {
                dataobject.AccessObject.Create(dataobject.DataItem);
            }
            //保存树结构
            curDbInfoTab.SaveTreeToDB(labeltree);
            //自动进入编辑状态
            newNode.BeginEdit();
        }
コード例 #3
0
        /// <summary>
        /// 依据要添加节点的种类和节点文本,生成其路径,可用于检测是否己存在同名节点
        /// </summary>
        /// <param name="category"></param>
        /// <param name="newNodeText"></param>
        /// <returns></returns>
        private String getNewNodePath(AddNodeCategory category, String newNodeText)
        {
            String selectNodePath = (curDbInfoTab.treeView1.SelectedItem as TreeViewIconsItem) == null ? "" : (curDbInfoTab.treeView1.SelectedItem as TreeViewIconsItem).Path;
            String newNodePath = "";
            switch (category)
            {
                case AddNodeCategory.AddRoot:
                    newNodePath = "/" + newNodeText + "/";
                    break;
                case AddNodeCategory.AddChild:
                    if (selectNodePath != "")
                    {
                        newNodePath = selectNodePath + newNodeText + "/";
                    }

                    break;
                case AddNodeCategory.AddSibling:
                    if (selectNodePath != "")
                    {
                        String selectNodeText = (curDbInfoTab.treeView1.SelectedItem as TreeViewIconsItem).HeaderText;
                        newNodePath = selectNodePath.Replace("/" + selectNodeText + "/", "/" + newNodeText + "/");
                    }

                    break;
            }
            return newNodePath;
        }
コード例 #4
0
        /// <summary>
        /// 添加节点
        /// </summary>
        /// <param name="category">指要新建儿子、兄弟还是根节点</param>
        /// <param name="nodeType">指节点的类型是:DetailText\OnlyText等 </param>
        private void AddNode(AddNodeCategory category, String nodeType)
        {
            //为新节点生成默认文本
            String NodeText = getDefaultNodeText(nodeType) + (curDbInfoTab.treeView1.NodeCount + 1);
            //尝试从剪贴板中提取文本
            String textFromClipboard = StringUtils.getFirstLineOfString(Clipboard.GetText());
            if (String.IsNullOrEmpty(textFromClipboard) == false && textFromClipboard != LastPasteNodeText && textFromClipboard.IndexOf("/") == -1)
            {
                //检测一下从剪贴板中获取的文本是否有效(即不会导致重名的节点出现)
                String newNodeText = textFromClipboard;
                bool nodeExisted = curDbInfoTab.treeView1.IsNodeExisted(getNewNodePath(category, newNodeText));
                //如果不存在同名的路径
                if (nodeExisted == false)
                {
                    NodeText = newNodeText;
                    LastPasteNodeText = NodeText;
                }
            }
            //如果还有重复路径的,则循环使用随机数,务必保证路径不会相同
            while (curDbInfoTab.treeView1.IsNodeExisted(getNewNodePath(category, NodeText)))
            {
                NodeText = getDefaultNodeText(nodeType) + new Random().Next();
            }

            //创建默认的节点数据对象
            NodeDataObject dataobject = NodeFactory.CreateDataInfoNode(nodeType, DALConfig.getEFConnectionString(curDbInfoTab.dbInfoObject.DatabaseFilePath));

            TreeViewIconsItem newNode = null;
            //在树中添加节点
            switch (category)
            {
                case AddNodeCategory.AddRoot:
                    newNode = curDbInfoTab.treeView1.AddRoot(NodeText, dataobject);
                    break;
                case AddNodeCategory.AddChild:
                    newNode = curDbInfoTab.treeView1.AddChild(NodeText, dataobject);
                    break;
                case AddNodeCategory.AddSibling:
                    newNode = curDbInfoTab.treeView1.AddSibling(NodeText, dataobject);
                    break;
                default:
                    break;
            }
            if (newNode == null)
            {
                return;
            }
            //新节点,默认不是粗体的
            newNode.FontWeight = FontWeights.Normal;
            //在数据库中创建记录
            if (dataobject.AccessObject != null)
            {
                dataobject.AccessObject.Create(dataobject.DataItem);
            }
            //保存树结构
            curDbInfoTab.SaveTreeToDB();

            //自动进入编辑状态

            newNode.BeginEdit();
        }
コード例 #5
0
        /// <summary>
        /// 添加节点
        /// 成功返回新节点,不成功,返回null
        /// 新节点自动展开且选中
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="nodeText"></param>
        /// <param name="nodeIcon"></param>
        /// <returns></returns>
        private TreeViewIconsItem addNode(AddNodeCategory addType, TreeViewIconsItem selectedNode, String nodeText, NodeDataObject nodeDataObject)
        {
            if (selectedNode != null)
            {
                selectedNode.IsExpanded = true;
            }
            ShouldRaiseSelectedItemChangedEvent = true;

            TreeViewIconsItem treeNode = new TreeViewIconsItem(this, nodeDataObject);

            treeNode.HeaderText = nodeText;
            treeNode.Icon       = nodeDataObject.DataItem.NormalIcon;
            //自动展开
            treeNode.IsExpanded = true;
            switch (addType)
            {
            case AddNodeCategory.AddRoot:
                treeNode.Path = "/" + nodeText + "/";
                nodeDataObject.DataItem.Path = treeNode.Path;
                tree.Items.Add(treeNode);
                nodesManager.nodes.Add(treeNode);
                break;

            case AddNodeCategory.AddChild:
                if (selectedNode != null)
                {
                    treeNode.Path = selectedNode.Path + nodeText + "/";
                    nodeDataObject.DataItem.Path = treeNode.Path;
                    selectedNode.Items.Add(treeNode);
                    nodesManager.nodes.Add(treeNode);
                }
                else
                {
                    return(null);
                }
                break;

            case AddNodeCategory.AddSibling:
                if (selectedNode != null && selectedNode.Parent != null)
                {
                    //如果选中节点是顶层节点
                    if (selectedNode.Parent == tree)
                    {
                        treeNode.Path = "/" + nodeText + "/";
                        nodeDataObject.DataItem.Path = treeNode.Path;
                        tree.Items.Add(treeNode);
                    }
                    else
                    {
                        //不是顶层节点
                        TreeViewIconsItem parent = selectedNode.Parent as TreeViewIconsItem;
                        treeNode.Path = parent.Path + nodeText + "/";
                        nodeDataObject.DataItem.Path = treeNode.Path;
                        parent.Items.Add(treeNode);
                    }
                    nodesManager.nodes.Add(treeNode);
                }
                else      //当前没有选中节点或选中节点没有父亲
                {
                    return(null);
                }

                break;

            default:
                break;
            }
            if (_autoSelectNewNode)
            {
                treeNode.IsSelected = true;
            }

            //更新树的存储
            String treeXml = saveToXmlString();

            if (_repository != null)
            {
                _repository.SaveTree(treeXml);
            }


            return(treeNode);
        }
コード例 #6
0
        /// <summary>
        /// 添加节点
        /// 成功返回新节点,不成功,返回null
        /// 新节点自动展开且选中
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="nodeText"></param>
        /// <param name="nodeIcon"></param>
        /// <returns></returns>
        private TreeViewIconsItem addNode(AddNodeCategory addType, TreeViewIconsItem selectedNode, String nodeText, NodeDataObject nodeDataObject)
        {
            if (selectedNode != null)
            {
                selectedNode.IsExpanded = true;
            }

            TreeViewIconsItem treeNode = new TreeViewIconsItem(this, nodeDataObject);
            treeNode.HeaderText = nodeText;
            treeNode.Icon = nodeDataObject.DataItem.NormalIcon;
            //自动展开
            treeNode.IsExpanded = true;
            switch (addType)
            {
                case AddNodeCategory.AddRoot:
                    treeNode.Path = "/" + nodeText + "/";
                    nodeDataObject.DataItem.Path = treeNode.Path;
                    tree.Items.Add(treeNode);
                    nodesManager.nodes.Add(treeNode);
                    break;
                case AddNodeCategory.AddChild:
                    if (selectedNode != null)
                    {
                        treeNode.Path = selectedNode.Path + nodeText + "/";
                        nodeDataObject.DataItem.Path = treeNode.Path;
                        selectedNode.Items.Add(treeNode);
                        nodesManager.nodes.Add(treeNode);
                    }
                    else
                    {
                        return null;
                    }
                    break;
                case AddNodeCategory.AddSibling:
                    if (selectedNode != null && selectedNode.Parent != null)
                    {
                        //如果选中节点是顶层节点
                        if (selectedNode.Parent == tree)
                        {
                            treeNode.Path = "/" + nodeText + "/";
                            nodeDataObject.DataItem.Path = treeNode.Path;
                            tree.Items.Add(treeNode);
                        }
                        else
                        {
                            //不是顶层节点
                            TreeViewIconsItem parent = selectedNode.Parent as TreeViewIconsItem;
                            treeNode.Path = parent.Path + nodeText + "/";
                            nodeDataObject.DataItem.Path = treeNode.Path;
                            parent.Items.Add(treeNode);
                        }
                        nodesManager.nodes.Add(treeNode);
                    }
                    else  //当前没有选中节点或选中节点没有父亲
                    {
                        return null;
                    }

                    break;
                default:
                    break;
            }
            if (_autoSelectNewNode)
            {
                treeNode.IsSelected = true;
            }

            //更新树的存储
            String treeXml = saveToXmlString();
            MainTreeRepository.SaveTree(treeXml);

            return treeNode;
        }