Ejemplo n.º 1
0
        /// <summary>
        /// Display next level of the child nodes - recursively
        /// </summary>
        /// <param name="parent"></param>
        private void SHOW_Childs()
        {
            VXmlNode           node;
            TreeNodeCollection tc;

            Cursor.Current = Cursors.WaitCursor;

            tvCat.BeginUpdate();

            if (CONTEXT_TREE_NODE == null)
            {
                node                       = cont;
                CONTEXT_XML_NODE           = cont;
                CONTEXT_TREE_NODE          = tvCat.Nodes.Add(node.ID, UTIL_PrepareName(node));
                CONTEXT_TREE_NODE.ImageKey = node.NodeType;
                ACTION_SetTreeNodeName(CONTEXT_TREE_NODE, node);
                tc = CONTEXT_TREE_NODE.Nodes;
                tvCat.SelectedNode = CONTEXT_TREE_NODE;
            }
            else
            {
                tc   = CONTEXT_TREE_NODE.Nodes;
                node = CONTEXT_XML_NODE;
            }
            tc.Clear();

            if ((node.NodeTypeCode != DEFX.NODE_TYPE_ATTRIBUTE) & (node.NodeTypeCode != DEFX.NODE_TYPE_COMMENT) & (node.NodeTypeCode != DEFX.NODE_TYPE_TEXT))
            {
                VXmlNodeCollection cn = node.AllChildNodes;
                for (int i = 0; i < cn.Count; i++)
                {
                    VXmlNode c  = cn[i];
                    TreeNode tn = tc.Add(c.ID, UTIL_PrepareName(c));
                    tn.ImageKey = (c.NodeTypeCode == DEFX.NODE_TYPE_REFERENCE) ? ((VXmlReference)c).ReferenceNode.NodeType : c.NodeType;
                    ACTION_SetTreeNodeName(tn, c);
                }
            }
            tvCat.EndUpdate();
            Cursor.Current = Cursors.Default;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Search (XQL)
        /// </summary>
        private void ACTION_SearchNode()
        {
            VXmlNode n  = null;
            string   st = mnuSearchTextBox.Text.Trim();

            if (st.Length > 0)
            {
                if (tsSearchType.Text == "ID")
                {
                    int  nv        = 0;
                    bool IsNumeric = int.TryParse(st, out nv);
                    if (IsNumeric & (nv > 0))
                    {
                        n = cont.GetNode((long)nv);

                        if (n != null)
                        {
                            SHOW_NodeInTree(n);
                        }
                        else
                        {
                            MessageBox.Show("Node is not found, ID=" + nv.ToString(), "Lookup node", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Invalid node ID in request", "Lookup node", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    decimal d = 0;

                    if (CONTEXT_LIST_VIEW_ITEM == null)
                    {
                        n = CONTEXT_XML_NODE;
                    }
                    else
                    {
                        n = cont.GetNode(VSLib.ConvertStringToLong(CONTEXT_LIST_VIEW_ITEM.SubItems[0].Text));
                    }

                    if (n.NodeTypeCode == DEFX.NODE_TYPE_REFERENCE)
                    {
                        n = ((VXmlReference)n).ReferenceNode;
                    }

                    //n = CONTEXT_XML_NODE; // cont.GetNode(VSLib.ConvertStringToLong(tvCat.SelectedNode.Name));

                    VXmlNodeCollection l = null;
                    try
                    {
                        lbResult.Items.Clear();
                        pnQuery.Visible  = true;
                        tsNodeCount.Text = "Running query...";
                        Application.DoEvents();
                        Cursor.Current = Cursors.WaitCursor;
                        long l_start = DateTime.Now.Ticks;
                        l = n.SelectNodes(st);
                        long l_end = DateTime.Now.Ticks;
                        d = l_end - l_start;
                    }
                    catch (VXmlException e1)
                    {
                        MessageBox.Show(e1.Message, "Error", MessageBoxButtons.OK);
                    }

                    if (l != null)
                    {
                        tsNodeCount.Text = "Selected " + l.Count.ToString() + " nodes in " + (d / 10000000).ToString("F") + " seconds";
                        Application.DoEvents();
                        Cursor.Current = Cursors.WaitCursor;
                        lbResult.BeginUpdate();
                        for (int i = 0; i < l.Count; i++)
                        {
                            lbResult.Items.Add("<Id:" + l[i].Id.ToString("D8") + "><Name:" + l[i].Name + "><Type:" + l[i].NodeType + ">");
                        }
                        lbResult.EndUpdate();
                    }
                    else
                    {
                        tsNodeCount.Text = "";
                    }
                    Cursor.Current  = Cursors.Default;
                    pnQuery.Visible = true;
                    mnuHide.Visible = true;
                    SHOW_Buttons();
                }
            }
        }