Пример #1
0
    public tree_node generate_tree(int depth, int branch_factor, float chance_to_branch)
    {
        System.Random    rnd        = new System.Random();
        tree_node        root       = new tree_node(null, new List <tree_node>(), rnd.Next(1, 100000).ToString());
        List <tree_node> this_level = new List <tree_node>();
        List <tree_node> next_level = new List <tree_node>();

        this_level.Add(root);
        for (int c = 0; c < depth; c++)                // do c times:
        {
            for (int i = 0; i < this_level.Count; i++) // for each current level:
            {
                for (int j = 0; j < branch_factor; j++)
                {
                    if (rnd.NextDouble() < chance_to_branch)                                                                   // if can branch:
                    {
                        tree_node next = new tree_node(this_level[i], new List <tree_node>(), rnd.Next(1, 100000).ToString()); // might want to find a better way to name nodes.
                        this_level[i].children.Add(next);
                        next_level.Add(next);
                    }
                }
            }
            this_level = next_level;
            next_level = new List <tree_node>();
        }
        return(root);
    }
Пример #2
0
 override public System.Web.UI.WebControls.TreeNode AddNode(
     System.Web.UI.WebControls.TreeNodeCollection Nodes,
     System.Web.UI.WebControls.TreeNode NewNode,
     tree_node T_N)
 {
     if (Nodes.Equals(tree.Nodes) && (T_N != null))
     {
         //searches the right node into which do the additon
         DataRow R     = T_N.Row;
         int     skind = Convert.ToInt32(R["flag"]);
         string  kind;
         if ((skind & 1) == 1)
         {
             kind = "S";
         }
         else
         {
             kind = "E";
         }
         foreach (System.Web.UI.WebControls.TreeNode N in Nodes)
         {
             if (N.Text == kind)
             {
                 return(base.AddNode(N.ChildNodes, NewNode, T_N));
             }
         }
     }
     return(base.AddNode(Nodes, NewNode, T_N));
 }
Пример #3
0
        public override void FillNodes()
        {
            base.FillNodes();
            AutoEventsEnabled = false;
            System.Web.UI.WebControls.TreeNode[] newroot = new System.Web.UI.WebControls.TreeNode[1];
            newroot[0] = new System.Web.UI.WebControls.TreeNode("Classificazione");
            tree.Nodes.Add(newroot[0]);

            if (tree.Nodes.Count > 0)
            {
                System.Web.UI.WebControls.TreeNode TN = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode;
                if (GetTag(TN) == null)
                {
                    return;
                }
            }

            while (tree.Nodes.Count > 1)
            {
                System.Web.UI.WebControls.TreeNode X = tree.Nodes[0];
                tree_node TN = GetTag(X);
                if (TN == null)
                {
                    tree.Nodes.RemoveAt(0);
                    continue;
                }
                MovSubTree(tree.Nodes, 0, newroot[0]);
            }

            newroot[0].Expand();

            AutoEventsEnabled = true;
        }
Пример #4
0
        public override void treeview_BeforeSelect(object sender, TreeViewCancelEventArgs e)
        {
            System.Windows.Forms.TreeNode N = e.Node;

            if (N.Tag != null)
            {
                tree_node TN = (tree_node)N.Tag;
                DataRow   r  = TN.Row;
                if (maxlevel > 0 && CfgFn.GetNoNullInt32(r["nlevel"]) >= maxlevel)
                {
                    N.Nodes.Clear();
                    return;
                }
            }
            base.treeview_BeforeSelect(sender, e);
        }
Пример #5
0
 override public System.Web.UI.WebControls.TreeNode AddNode(
     System.Web.UI.WebControls.TreeNodeCollection Nodes,
     System.Web.UI.WebControls.TreeNode NewNode,
     tree_node T_N)
 {
     if (Nodes.Equals(tree.Nodes) && (T_N != null))
     {
         //searches the right node into which do the additon
         DataRow R    = T_N.Row;
         string  kind = R["finpart"].ToString();
         foreach (System.Web.UI.WebControls.TreeNode N in Nodes)
         {
             if (N.Text == kind)
             {
                 return(base.AddNode(N.ChildNodes, NewNode, T_N));
             }
         }
     }
     return(base.AddNode(Nodes, NewNode, T_N));
 }
Пример #6
0
        public override void treeview_BeforeSelect(System.Web.UI.WebControls.TreeNode N)
        {
            if (N == null)
            {
                return;
            }
            if (GetTag(N) == null)
            {
                return;
            }
            tree_node TN = GetTag(N);
            DataRow   r  = TN.Row;

            if (maxlevel > 0 && CfgFn.GetNoNullInt32(r["nlevel"]) >= maxlevel)
            {
                N.ChildNodes.Clear();
                return;
            }
            base.treeview_BeforeSelect(N);
        }
Пример #7
0
        public override void FillNodes()
        {
            base.FillNodes();
            AutoEventsEnabled = false;

            if (tree.Nodes.Count > 0)
            {
                System.Web.UI.WebControls.TreeNode TN = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode;
                if (GetTag(TN) == null)
                {
                    return;
                }

                //if (tree.Nodes[0].Tag == null) return;
            }
            System.Web.UI.WebControls.TreeNode newroot = new System.Web.UI.WebControls.TreeNode("Causale");
            tree.Nodes.Add(newroot);
            while (tree.Nodes.Count > 1)
            {
                System.Web.UI.WebControls.TreeNode X = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode;
                tree_node X_TAG = GetTag(X);
                if (X_TAG == null)
                {
                    tree.Nodes.RemoveAt(0);
                    continue;
                }
                MovSubTree(tree.Nodes, 0, newroot);
            }

            //tree.Nodes.Add(newroot);

            if (newroot.ChildNodes.Count > 0)
            {
                newroot.Expand();
            }
            AutoEventsEnabled = true;
        }
Пример #8
0
        public override void FillNodes()
        {
            base.FillNodes();
            AutoEventsEnabled = false;
            System.Web.UI.WebControls.TreeNode[] newroot = new System.Web.UI.WebControls.TreeNode[kind.Length];
            int n_root = newroot.Length;

            for (int i = 0; i < kind.Length; i++)
            {
                newroot[i] = new System.Web.UI.WebControls.TreeNode(kind.Substring(i, 1));
                tree.Nodes.Add(newroot[i]);
            }
            if (tree.Nodes.Count > 0)
            {
                System.Web.UI.WebControls.TreeNode TN = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode;
                if (GetTag(TN) == null)
                {
                    return;
                }
            }
            while (tree.Nodes.Count > n_root)
            {
                System.Web.UI.WebControls.TreeNode X = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode;
                tree_node X_TAG = GetTag(X);
                if (X_TAG == null)
                {
                    tree.Nodes.RemoveAt(0);
                    continue;
                }
                DataRow R = X_TAG.Row;
                for (int i = 0; i < kind.Length; i++)
                {
                    int    skind = Convert.ToInt32(R["flag"]);
                    string akind;
                    if ((skind & 1) == 1)
                    {
                        akind = "S";
                    }
                    else
                    {
                        akind = "E";
                    }

                    if (akind == kind.Substring(i, 1))
                    {
                        MovSubTree(tree.Nodes, 0, newroot[i]);
                        break;
                    }
                }
            }
            int j = 0;

            for (int i = 0; i < kind.Length; i++)
            {
                if (newroot[j].ChildNodes.Count > 0)
                {
                    newroot[j].Expand();
                    j++;
                }
                else
                {
                    tree.Nodes.RemoveAt(j);
                }
            }
            AutoEventsEnabled = true;
        }
Пример #9
0
        /// <summary>
        /// Gets current row from ComboBox, Grids and tree-views, return false on errors
        /// </summary>
        /// <param name="C">Control to analyze</param>
        /// <param name="T">Table containing rows</param>
        /// <param name="R">Current selected row (null if none)</param>
        /// <returns>false on errors</returns>
        public static bool GetCurrentRow(DataSet DS, Control C, out DataTable T, out DataRow R)
        {
            R = null;           //in case of errors, always return a value
            T = null;
            if (typeof(ComboBox).IsAssignableFrom(C.GetType()))
            {
                ComboBox CParent = (ComboBox)C;
                if (CParent.DataSource == null)
                {
                    return(false);
                }
                T = DS.Tables[((DataTable)(CParent.DataSource)).TableName];

                if (CParent.SelectedIndex <= 0)                 //index 0 is used for blank row
                {
                    R = null;
                    return(true);
                }
                DataRowView RV = ((DataRowView)((ComboBox)C).Items[CParent.SelectedIndex]);
                if (RV == null)
                {
                    return(true);
                }
                R = RV.Row;
                if (R.Table == T)
                {
                    return(true);
                }
                R = FindExternalRow(T, R);
                return(true);
            }

            //T is taken from DS, using TAG Table
            //Row is taken from T, using a filter using current grid row
            if (typeof(DataGrid).IsAssignableFrom(C.GetType()))
            {
                if (C.Tag == null)
                {
                    return(false);
                }
                string tablename = HelpForm.GetField(C.Tag.ToString(), 0);
                if (tablename == null)
                {
                    return(false);
                }
                T = DS.Tables[tablename];

                DataGrid GParent = (DataGrid)C;

                DataSet DSV = (DataSet)GParent.DataSource;
                if (DSV == null)
                {
                    return(false);
                }
                DataTable TV = DSV.Tables[GParent.DataMember];
                if (TV == null)
                {
                    return(false);
                }

                if (TV.Rows.Count == 0)
                {
                    return(true);
                }
                DataRowView DV = null;
                try {
                    DV = (DataRowView)GParent.BindingContext[DSV, TV.TableName].Current;
                }
                catch {
                    DV = null;
                }
                if (DV == null)
                {
                    return(true);
                }

                R = DV.Row;
                if (TV.Equals(T))
                {
                    return(true);
                }

                R = FindExternalRow(T, R);
                return(true);
            }

            if (typeof(TreeView).IsAssignableFrom(C.GetType()))
            {
                TreeView TParent   = (TreeView)C;
                string   tablename = HelpForm.GetField(TParent.Tag.ToString(), 0);
                if (tablename == null)
                {
                    return(false);
                }
                T = DS.Tables[tablename];

                TreeNode N = (TreeNode)TParent.SelectedNode;
                try {
                    tree_node treenode = (tree_node)(N.Tag);
                    T = treenode.Row.Table;
                    R = treenode.Row;
                    return(true);
                }
                catch {
                    return(true);
                }
            }
            return(false);
        }
Пример #10
0
 override public System.Web.UI.WebControls.TreeNode AddNode(System.Web.UI.WebControls.TreeNodeCollection Nodes, System.Web.UI.WebControls.TreeNode NewNode, tree_node T_N)
 {
     if (Nodes.Equals(tree.Nodes) && (T_N != null))
     {
         foreach (System.Web.UI.WebControls.TreeNode N in Nodes)
         {
             if (N.Text == "Causale")
             {
                 return(base.AddNode(N.ChildNodes, NewNode, T_N));
             }
         }
     }
     return(base.AddNode(Nodes, NewNode, T_N));
 }
Пример #11
0
 public tree_node(tree_node parent, List <tree_node> children, string name)
 {
     this.parent   = parent;
     this.children = children;
     this.name     = name;
 }
Пример #12
0
 public override System.Web.UI.WebControls.TreeNode AddNode(System.Web.UI.WebControls.TreeNodeCollection Nodes, System.Web.UI.WebControls.TreeNode NewNode, tree_node T_N)
 {
     if (Nodes.Equals(tree.Nodes) && (T_N != null) && (tree.Nodes.Count > 0))
     {
         if (GetTag(tree.Nodes[0]) == null)
         {
             return(base.AddNode(tree.Nodes[0].ChildNodes, NewNode, T_N));
         }
     }
     return(base.AddNode(Nodes, NewNode, T_N));
 }