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); }
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); }
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; }
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); } }
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); }
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; } } }
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); } }
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; }
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; } }