Пример #1
0
        private object BackEndInsert(String name, RightClickShellType type, String Target, String Source)
        {
            RightClickShell added;
            RightClickShell parent = (DirectoryShell)treeView1.SelectedNode.Tag;

            switch (type)
            {
            case RightClickShellType.DirectoryShell:
                added = new DirectoryShell()
                {
                    Name = name
                };
                insert_deleted.Add(ref parent, ref added);
                break;

            case RightClickShellType.ExecutableShell:
                added = new ExecutableShell()
                {
                    Name = name, Command = ExecutableShell.CreateCommandFromSorceAndTarget(target: txtTarget.Text, source: txtSource.Text), HaveIcon = txtSource.Text + "\\" + txtTarget.Text
                };
                insert_deleted.Add(ref parent, ref added);
                break;

            default:
                added = new DirectoryShell()
                {
                    Name = name
                };
                throw new Exception("not a intended rightclickshelltype");
            }
            return(added);
        }
Пример #2
0
 private void btnCancel_Click(object sender, EventArgs e)
 {
     treeView1.Nodes.Clear();
     insert_deleted.Changes.Clear();
     try
     {
         root = DeSerializeTree(); //lấy cây đã lưu.
     }
     catch
     {
         fs.Close();
         MessageBox.Show("this is a new tree.", "Caution", MessageBoxButtons.OK, MessageBoxIcon.Information);
         root = new DirectoryShell()
         {
             Name = "Directory\\Background"
         };                                 // tạo cây mới.
     }
     root.SetParentForChild();              // vì quá kém cõi nên phải set cha thủ công, ko thể tự động.
     cursor         = (DirectoryShell)root; // đây là con trỏ hiện tại để tui test.
     insert_deleted = new InsertDeleteManager((DirectoryShell)root);
     view_root      = new TreeNode()
     {
         Tag = root, Text = "Root"
     };
     CreateViewRoot();
     treeView1.Nodes.Add(view_root);
 }
Пример #3
0
        private void btnApplyofEdit_Click(object sender, EventArgs e)
        {
            TreeNode            current_node = treeView1.SelectedNode;
            RightClickShellType AddType      = CheckRadioButton();

            if (txtName.Text == String.Empty)
            {
                MessageBox.Show("Your Name is empty!!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (AddType == RightClickShellType.ExecutableShell)
            {
                if (txtSource.Text == String.Empty || txtTarget.Text == String.Empty)
                {
                    MessageBox.Show("Your Name is empty!!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                return;
            }
            /* Back-end stuff*/
            RightClickShell current_shell = (RightClickShell)current_node.Tag;

            insert_deleted.EditNode(ref current_shell, name: txtName.Text, target: txtTarget.Text, source: txtSource.Text, cbIcon.Checked);
            current_node.Text = txtName.Text;
            if (cbIcon.Checked)
            {
                if (string.IsNullOrWhiteSpace(txtSource.Text) || string.IsNullOrWhiteSpace(txtTarget.Text))
                {
                    MessageBox.Show("Missing source or target", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                Icon icon = Icon.ExtractAssociatedIcon(txtSource.Text + "\\" + txtTarget.Text);
                treeView1.ImageList.Images.Add(icon);
                current_node.SelectedImageIndex = treeView1.ImageList.Images.Count - 1;
                current_node.ImageIndex         = treeView1.ImageList.Images.Count - 1;
            }
            else
            {
                treeView1.ImageList.Images.RemoveAt(treeView1.ImageList.Images.Count - 1);
                current_node.SelectedImageIndex = -1;
                current_node.ImageIndex         = -1;
            }

            btnAdd.Enabled            = true;
            btnDelete.Enabled         = true;
            btnExpandCollapse.Enabled = true;
            btnCancel.Hide();
            btnApplyofEdit.Hide();
            btnRevert.Show();
            btnApply.Show();
            rdBtnDirectory.Checked  = false;
            rdBtnExecutable.Checked = false;
            rdBtnDirectory.Enabled  = true;
            rdBtnExecutable.Enabled = true;
            cbIcon.Checked          = false;
        }
Пример #4
0
 private static void PrintMap(RightClickShell cursor)
 {
     if (cursor.Type == RightClickShellType.ExecutableShell)
     {
         return;
     }
     foreach (RightClickShell x in ((DirectoryShell)cursor).Children)
     {
         Console.WriteLine(((DirectoryShell)cursor).Children.IndexOf(x).ToString() + ". " + x.Name);
     }
 }
Пример #5
0
        public static string GetLevel(RightClickShell x)
        {
            String          res     = string.Empty;
            RightClickShell current = x.Parent;

            while (current != null)
            {
                res     = current.Name + "\\" + res;
                current = current.Parent;
            }
            return(res);
        }
Пример #6
0
        static void Main(string[] args)
        {
            try
            {
                root = DeSerializeTree(); //lấy cây đã lưu.
            }
            catch
            {
                fs.Close();
                Console.WriteLine("this is a new tree.");
                root = new DirectoryShell()
                {
                    Name = "Directory\\Background"
                };                         // tạo cây mới.
            }
            root.SetParentForChild();      // vì quá kém cõi nên phải set cha thủ công, ko thể tự động.
            cursor = (DirectoryShell)root; // đây là con trỏ hiện tại để tui test.
            while (true)
            {
                int input;
                PrintMenu();// in menu lệnh chưa hoàn chỉnh.
                input = int.Parse(Console.ReadLine());
                switch (input)
                {
                case 1:
                    Insert();    // thêm, dựa theo cursor
                    break;

                case 2:
                    Delete();    // xóa cursor khỏi cây.
                    break;

                case 3:
                    PrintTree((DirectoryShell)root);
                    break;

                case 4:
                    CursorAccess(ref cursor);    // duyệt cây theo user.
                    break;

                default:

                    break;
                }
                if (input == 0)
                {
                    break;
                }
            }
        }
Пример #7
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            RightClickShell current = ((RightClickShell)treeView1.SelectedNode.Tag);

            insert_deleted.Delete(ref current);
            if (treeView1.SelectedNode.IsSelected)
            {
                TreeNode current_node = treeView1.SelectedNode;
                current_node.Remove();
            }
            else
            {
                MessageBox.Show("Select a node", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
Пример #8
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode != null)
            {
                if (((RightClickShell)treeView1.SelectedNode.Tag).Type != RightClickShellType.DirectoryShell)
                {
                    MessageBox.Show("You Cannot Add into This.", "Error");
                    return;
                }
                RightClickShellType AddType = CheckRadioButton();
                RightClickShell     p       = (DirectoryShell)treeView1.SelectedNode.Tag;
                object tag = insert_deleted.AddWithInformations(txtName.Text, txtTarget.Text, txtSource.Text, AddType, ref p, cbIcon.Checked);
                if (string.IsNullOrWhiteSpace(txtName.Text))
                {
                    MessageBox.Show("Fill name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                else
                {
                    TreeNode current_node = treeView1.SelectedNode;
                    TreeNode target_node  = new TreeNode();
                    target_node.Text = "*" + txtName.Text;
                    target_node.Tag  = tag;
                    current_node.Nodes.Add(target_node);
                    if (cbIcon.Checked)
                    {
                        Icon icon = Icon.ExtractAssociatedIcon(txtSource.Text + "\\" + txtTarget.Text);
                        treeView1.ImageList.Images.Add(icon);
                        target_node.SelectedImageIndex = treeView1.ImageList.Images.Count - 1;
                        target_node.ImageIndex         = treeView1.ImageList.Images.Count - 1;
                    }
                }
            }
            else
            {
                MessageBox.Show("Select a node", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            txtName.ResetText();
            txtSource.ResetText();
            txtTarget.ResetText();
            cbIcon.Checked = false;
        }
Пример #9
0
        private static void CursorAccess(ref RightClickShell cursor)
        {
            PrintMap(cursor);
            int input = int.Parse(Console.ReadLine());

            switch (input)
            {
            case -2:
                break;

            case -1:
                cursor = cursor.Parent;
                break;

            default:
                cursor = ((DirectoryShell)cursor).Children[input];
                break;
            }
        }