/// <summary> /// Recursively contructs the nodes to add to the tree model. /// </summary> /// <param name="projectItem">The current project item for which to build a node.</param> /// <param name="parent">The parent project item of the added project item.</param> private void BuildNodes(ProjectItem projectItem, ProjectItem parent = null) { if (projectItem == null) { return; } Bitmap image = null; if (projectItem is AddressItem) { image = ImageUtils.BitmapImageToBitmap(Images.CollectValues); } else if (projectItem is ScriptItem) { image = ImageUtils.BitmapImageToBitmap(Images.CollectValues); } else if (projectItem is FolderItem) { image = ImageUtils.BitmapImageToBitmap(Images.Open); } image?.MakeTransparent(); // Create new node to insert ProjectNode projectNode = new ProjectNode(projectItem.Description); projectNode.ProjectItem = projectItem; projectNode.EntryValuePreview = (projectItem is AddressItem) ? (projectItem as AddressItem).Value?.ToString() : String.Empty; projectNode.EntryIcon = image; projectNode.IsChecked = projectItem.IsActivated; if (parent != null && this.nodeCache.ContainsKey(parent)) { ProjectNode result; if (this.nodeCache.TryGetValue(parent, out result)) { result.Nodes.Add(projectNode); } } else { this.projectTree.Nodes.Add(projectNode); } this.nodeCache.Add(projectItem, projectNode); if (projectItem is FolderItem) { FolderItem folderItem = projectItem as FolderItem; foreach (ProjectItem child in folderItem.Children.ToArray()) { this.BuildNodes(child, projectItem); } } }
/// <summary> /// Initialize all windows forms components. /// </summary> private void InitializeDesigner() { NodeCheckBox entryCheckBox = new NodeCheckBox(); entryCheckBox.DataPropertyName = "IsChecked"; entryCheckBox.EditEnabled = true; entryCheckBox.LeftMargin = 0; entryCheckBox.ParentColumn = null; entryCheckBox.IsEditEnabledValueNeeded += this.CheckIndex; NodeIcon entryIcon = new NodeIcon(); entryIcon.DataPropertyName = "EntryIcon"; entryIcon.LeftMargin = 1; entryIcon.ParentColumn = null; entryIcon.ScaleMode = ImageScaleMode.Clip; NodeTextBox entryDescription = new NodeTextBox(); entryDescription.DataPropertyName = "EntryDescription"; entryDescription.IncrementalSearchEnabled = true; entryDescription.LeftMargin = 3; entryDescription.ParentColumn = null; entryDescription.DrawText += this.EntryDescriptionDrawText; NodeTextBox entryValuePreview = new NodeTextBox(); entryValuePreview.DataPropertyName = "EntryValuePreview"; entryValuePreview.IncrementalSearchEnabled = true; entryValuePreview.LeftMargin = 3; entryValuePreview.ParentColumn = null; entryValuePreview.DrawText += this.EntryValuePreviewDrawText; this.projectItemToolTip = new ToolTip(); this.toggleSelectionMenuItem = new ToolStripMenuItem("Toggle"); this.compileSelectionMenuItem = new ToolStripMenuItem("Compile"); this.addNewItemMenuItem = new ToolStripMenuItem("Add New..."); this.deleteSelectionMenuItem = new ToolStripMenuItem("Delete"); this.copySelectionMenuItem = new ToolStripMenuItem("Copy"); this.cutSelectionMenuItem = new ToolStripMenuItem("Cut"); this.pasteSelectionMenuItem = new ToolStripMenuItem("Paste"); this.addNewFolderMenuItem = new ToolStripMenuItem("Add Folder", ImageUtils.BitmapImageToBitmap(Images.Open)); this.addNewAddressMenuItem = new ToolStripMenuItem("Add Address", ImageUtils.BitmapImageToBitmap(Images.CollectValues)); this.addNewScriptMenuItem = new ToolStripMenuItem("Add Script", ImageUtils.BitmapImageToBitmap(Images.CollectValues)); this.contextMenuStrip = new ContextMenuStrip(); KeysConverter keysConverter = new KeysConverter(); this.toggleSelectionMenuItem.ShortcutKeyDisplayString = keysConverter.ConvertToString(Keys.Space); this.copySelectionMenuItem.ShortcutKeyDisplayString = keysConverter.ConvertToString(Keys.Control | Keys.C); this.cutSelectionMenuItem.ShortcutKeyDisplayString = keysConverter.ConvertToString(Keys.Control | Keys.X); this.pasteSelectionMenuItem.ShortcutKeyDisplayString = keysConverter.ConvertToString(Keys.Control | Keys.V); this.deleteSelectionMenuItem.ShortcutKeyDisplayString = keysConverter.ConvertToString(Keys.Delete); this.toggleSelectionMenuItem.Click += this.ToggleSelectionMenuItemClick; this.compileSelectionMenuItem.Click += this.CompileSelectionMenuItemClick; this.deleteSelectionMenuItem.Click += this.DeleteSelectionMenuItemClick; this.copySelectionMenuItem.Click += this.CopySelectionMenuItemClick; this.cutSelectionMenuItem.Click += this.CutSelectionMenuItemClick; this.pasteSelectionMenuItem.Click += this.PasteSelectionMenuItemClick; this.addNewFolderMenuItem.Click += this.AddNewFolderMenuItemClick; this.addNewAddressMenuItem.Click += this.AddNewAddressMenuItemClick; this.addNewScriptMenuItem.Click += this.AddNewScriptMenuItemClick; this.contextMenuStrip.Opening += this.ContextMenuStripOpening; this.addNewItemMenuItem.DropDownItems.Add(this.addNewFolderMenuItem); this.addNewItemMenuItem.DropDownItems.Add(this.addNewAddressMenuItem); this.addNewItemMenuItem.DropDownItems.Add(this.addNewScriptMenuItem); this.contextMenuStrip.Items.Add(this.toggleSelectionMenuItem); this.contextMenuStrip.Items.Add(this.compileSelectionMenuItem); this.contextMenuStrip.Items.Add(this.addNewItemMenuItem); this.contextMenuStrip.Items.Add(this.deleteSelectionMenuItem); this.contextMenuStrip.Items.Add(new ToolStripSeparator()); this.contextMenuStrip.Items.Add(this.copySelectionMenuItem); this.contextMenuStrip.Items.Add(this.cutSelectionMenuItem); this.contextMenuStrip.Items.Add(this.pasteSelectionMenuItem); this.projectExplorerTreeView = new TreeViewAdv(); this.projectExplorerTreeView.NodeControls.Add(entryCheckBox); this.projectExplorerTreeView.NodeControls.Add(entryIcon); this.projectExplorerTreeView.NodeControls.Add(entryDescription); this.projectExplorerTreeView.NodeControls.Add(entryValuePreview); this.projectExplorerTreeView.SelectionMode = TreeSelectionMode.Multi; this.projectExplorerTreeView.BorderStyle = BorderStyle.None; this.projectExplorerTreeView.Model = this.projectTree; this.projectExplorerTreeView.AllowDrop = true; this.projectExplorerTreeView.FullRowSelect = true; this.projectExplorerTreeView.ContextMenuStrip = this.contextMenuStrip; this.projectExplorerTreeView.ItemDrag += this.ProjectExplorerTreeViewItemDrag; this.projectExplorerTreeView.NodeMouseDoubleClick += this.ProjectExplorerTreeViewNodeMouseDoubleClick; this.projectExplorerTreeView.SelectionChanged += this.ProjectExplorerTreeViewSelectionChanged; this.projectExplorerTreeView.DragDrop += this.ProjectExplorerTreeViewDragDrop; this.projectExplorerTreeView.DragEnter += this.ProjectExplorerTreeViewDragEnter; this.projectExplorerTreeView.DragOver += this.ProjectExplorerTreeViewDragOver; this.projectExplorerTreeView.MouseMove += this.ProjectExplorerTreeViewMouseMove; this.projectExplorerTreeView.BackColor = DarkBrushes.BaseColor3; this.projectExplorerTreeView.ForeColor = DarkBrushes.BaseColor2; this.projectExplorerTreeView.DragDropMarkColor = DarkBrushes.BaseColor11; this.projectExplorerTreeView.LineColor = DarkBrushes.BaseColor11; }