示例#1
0
        /// <summary>
        /// add node to tree view control
        /// </summary>
        /// <param name="type">indicate operation type</param>
        /// <param name="info">tree node text</param>
        private void AddNode(OperationType type, string info)
        {
            //add tree node according to operation type
            if (type == OperationType.StartTransactionGroup)
            {
                if (m_transGroupNode == null)
                {
                    m_transGroupNode = new TreeNode(m_transactionGroup.GetName());
                    int index = m_rootNode.Nodes.Add(m_transGroupNode);
                    m_rootNode.Nodes[index].Tag = m_transactionGroup;
                    m_rootNode.Expand();
                    UpdateTreeNode(m_transGroupNode, type);
                }
                else
                {
                    TreeNode newTransGroupNode = new TreeNode(m_transactionGroup.GetName());
                    int      index             = m_transGroupNode.Nodes.Add(newTransGroupNode);
                    m_transGroupNode.Nodes[index].Tag = m_transactionGroup;
                    m_transGroupNode.Expand();
                    m_transGroupNode = newTransGroupNode;
                    m_transGroupNode.Expand();
                    UpdateTreeNode(m_transGroupNode, type);
                }
                m_transNode   = null;
                m_transaction = null;
            }
            else if (type == OperationType.RollbackTransactionGroup)
            {
                UpdateTreeNode(m_transGroupNode, type);
                if (m_transGroupNode.Parent.Equals(m_rootNode))
                {
                    m_rootNode.Expand();
                    m_transactionGroup = null;
                    m_transGroupNode   = null;
                }
                else
                {
                    m_transGroupNode = m_transGroupNode.Parent;
                    m_transGroupNode.Expand();
                    m_transactionGroup = m_transGroupNode.Tag as TransactionGroup;
                }
                m_transNode   = null;
                m_transaction = null;
            }
            else if (type == OperationType.CommitTransactionGroup)
            {
                UpdateTreeNode(m_transGroupNode, type);
                if (m_transGroupNode.Parent.Equals(m_rootNode))
                {
                    m_rootNode.Expand();
                    m_transactionGroup = null;
                    m_transGroupNode   = null;
                }
                else
                {
                    m_transGroupNode.Expand();
                    m_transGroupNode   = m_transGroupNode.Parent;
                    m_transactionGroup = m_transGroupNode.Tag as TransactionGroup;
                }
                m_transNode   = null;
                m_transaction = null;
            }
            else if (type == OperationType.StartTransaction)
            {
                m_transNode           = new TreeNode(m_transaction.GetName());
                m_transNode.ForeColor = m_startedColor;
                TreeNode node = m_transGroupNode == null ? m_rootNode : m_transGroupNode;
                node.Nodes.Add(m_transNode);
                node.Expand();
                UpdateTreeNode(m_transNode, type);
            }
            else if (type == OperationType.CommitTransaction)
            {
                UpdateTreeNode(m_transNode, type);
                TreeNode node = m_transGroupNode == null ? m_rootNode : m_transGroupNode;
                node.Expand();
                m_transNode = null;
            }
            else if (type == OperationType.RollbackTransaction)
            {
                UpdateTreeNode(m_transNode, type);
                TreeNode node = m_transGroupNode == null ? m_rootNode : m_transGroupNode;
                node.Expand();
                m_transNode = null;
            }
            else
            {
                string childNodeText = null;

                if (String.IsNullOrEmpty(info))
                {
                    childNodeText = "Operation";
                }
                else
                {
                    childNodeText = info;
                }

                TreeNode childNode = new TreeNode(childNodeText);
                if (type == OperationType.ObjectDeletion)
                {
                    childNode.ForeColor = m_deletedColor;
                }
                else
                {
                    childNode.ForeColor = m_normalColor;
                }
                m_transNode.Nodes.Add(childNode);
                m_transNode.Expand();
            }
        }