private void projectTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { ProjectTreeItem treeItem = e.Node.Tag as ProjectTreeItem; bool acceptDoubleClickWhenExpanding = (treeItem != null && treeItem.AllowDoubleClickWhenExpanding); if (acceptDoubleClickWhenExpanding || !HasANodeJustBeenExpanded()) { ProcessClickOnNode(e.Node.Name, MouseButtons.Left); } }
public void AddTreeRoot(IEditorComponent plugin, string id, string name, string iconKey) { RegisterTreeNode(id, plugin); iconKey = SetDefaultIconIfNoneProvided(iconKey); _lastAddedNode = this._projectTree.Nodes.Add(id, name, iconKey, iconKey); ProjectTreeItem newItem = new ProjectTreeItem(id, _lastAddedNode); newItem.AllowLabelEdit = false; _lastAddedNode.Tag = newItem; }
private void projectTree_ItemDrag(object sender, ItemDragEventArgs e) { TreeNode itemDragged = (TreeNode)e.Item; if (itemDragged.Tag != null) { ProjectTreeItem treeItem = (ProjectTreeItem)itemDragged.Tag; if (treeItem.AllowDragging) { _projectTree.DoDragDrop(treeItem, DragDropEffects.Move); } } }
private void projectTree_DragDrop(object sender, DragEventArgs e) { ProjectTreeItem source = (ProjectTreeItem)e.Data.GetData(typeof(ProjectTreeItem)); Point locationInControl = _projectTree.PointToClient(new Point(e.X, e.Y)); TreeNode dragTarget = _projectTree.HitTest(locationInControl).Node; ProjectTreeItem target = (ProjectTreeItem)dragTarget.Tag; if (source.DropHere == null) { throw new AGSEditorException("Node has not populated DropHere handler for draggable node"); } source.DropHere(source, target); }
public ProjectTreeItem AddTreeBranch(IEditorComponent component, string id, string name, string iconKey) { RegisterTreeNode(id, component); iconKey = SetDefaultIconIfNoneProvided(iconKey); if (_lastAddedNode != null) { _lastAddedNode = _lastAddedNode.Nodes.Add(id, name, iconKey, iconKey); } else { _lastAddedNode = this._projectTree.Nodes.Add(id, name, iconKey, iconKey); } ProjectTreeItem newItem = new ProjectTreeItem(id, _lastAddedNode); _lastAddedNode.Tag = newItem; return newItem; }
private void projectTree_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e) { e.CancelEdit = true; if (e.Node.Tag != null) { ProjectTreeItem treeItem = ((ProjectTreeItem)e.Node.Tag); if (treeItem.AllowLabelEdit) { e.CancelEdit = false; // This hack is to allow the tree to display "5: Fifth view" // but when you edit it, the user only edits "Fifth view" string editableText = (string)treeItem.LabelTextProperty.GetValue(treeItem.LabelTextDataSource, null); treeItem.LabelTextBeforeLabelEdit = editableText; Hacks.SetTreeViewEditText(_projectTree, editableText); } } }
public ProjectTreeItem AddTreeBranch(IEditorComponent component, string id, string name, string iconKey) { RegisterTreeNode(id, component); iconKey = SetDefaultIconIfNoneProvided(iconKey); if (_lastAddedNode != null) { _lastAddedNode = _lastAddedNode.Nodes.Add(id, name, iconKey, iconKey); } else { _lastAddedNode = this._projectTree.Nodes.Add(id, name, iconKey, iconKey); } ProjectTreeItem newItem = new ProjectTreeItem(id, _lastAddedNode); _lastAddedNode.Tag = newItem; return(newItem); }
private void projectTree_DragOver(object sender, DragEventArgs e) { e.Effect = DragDropEffects.None; if (e.Data.GetDataPresent(typeof(ProjectTreeItem))) { ProjectTreeItem source = (ProjectTreeItem)e.Data.GetData(typeof(ProjectTreeItem)); Point locationInControl = _projectTree.PointToClient(new Point(e.X, e.Y)); TreeNode dragTarget = _projectTree.HitTest(locationInControl).Node; if (dragTarget != null) { ProjectTreeItem target = (ProjectTreeItem)dragTarget.Tag; if (source.CanDropHere == null) { throw new AGSEditorException("Node has not populated CanDropHere handler for draggable node"); } if (source.CanDropHere(source, target)) { HighlightNodeAndExpandIfNeeded(target); e.Effect = DragDropEffects.Move; } else { ClearHighlightNode(); } // auto-scroll the tree when move the mouse to top/bottom if (locationInControl.Y < 30) { if (dragTarget.PrevVisibleNode != null) { dragTarget.PrevVisibleNode.EnsureVisible(); } } else if (locationInControl.Y > _projectTree.Height - 30) { if (dragTarget.NextVisibleNode != null) { dragTarget.NextVisibleNode.EnsureVisible(); } } } } }
private void HighlightNodeAndExpandIfNeeded(ProjectTreeItem item) { TreeNode treeNode = item.TreeNode; if (_treeNodesBackgroundColor == null) { _treeNodesBackgroundColor = treeNode.BackColor; } if (treeNode != _dropHoveredNode) { treeNode.BackColor = Color.LightGray; ClearHighlightNode(); _dropHoveredNode = treeNode; _timeOfDragDropHoverStart = DateTime.Now; } else if (item.ExpandOnDragHover && HasANodeBeenHoveredEnoughForExpanding()) { treeNode.Expand(); } }
private void projectTree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { if ((e.Node.Tag != null) && (e.CancelEdit == false) && (e.Label != null)) { ProjectTreeItem treeItem = (ProjectTreeItem)e.Node.Tag; try { treeItem.LabelTextProperty.SetValue(treeItem.LabelTextDataSource, e.Label, null); if (treeItem.LabelTextDescriptionProperty != null) { // This hack is so that if the user types "New view", the // code can change it to "5: New view" for display in the tree string newValue = (string)treeItem.LabelTextDescriptionProperty.GetValue(treeItem.LabelTextDataSource, null); // cancel the user's entered text, and instead set it to our modified version e.CancelEdit = true; e.Node.Text = newValue; } if (OnAfterLabelEdit != null) { OnAfterLabelEdit(treeItem.ID, treeItem); } } catch (Exception ex) { if ((ex.InnerException != null) && (ex.InnerException is InvalidDataException)) { Factory.GUIController.ShowMessage(ex.InnerException.Message, MessageBoxIcon.Warning); } else { throw new Exception(ex.Message, ex); } e.CancelEdit = true; } } }
public IProjectTreeItem AddTreeLeaf(IEditorComponent component, string id, string name, string iconKey, bool greyedOut) { RegisterTreeNode(id, component); TreeNode newNode; iconKey = SetDefaultIconIfNoneProvided(iconKey); if (_lastAddedNode != null) { newNode = _lastAddedNode.Nodes.Add(id, name, iconKey, iconKey); } else { newNode = this._projectTree.Nodes.Add(id, name, iconKey, iconKey); } if (greyedOut) { newNode.ForeColor = Color.Gray; } ProjectTreeItem newItem = new ProjectTreeItem(id, newNode); newNode.Tag = newItem; return(newItem); }
public IProjectTreeItem AddTreeLeaf(IEditorComponent component, string id, string name, string iconKey, bool greyedOut) { RegisterTreeNode(id, component); TreeNode newNode; iconKey = SetDefaultIconIfNoneProvided(iconKey); if (_lastAddedNode != null) { newNode = _lastAddedNode.Nodes.Add(id, name, iconKey, iconKey); } else { newNode = this._projectTree.Nodes.Add(id, name, iconKey, iconKey); } if (greyedOut) { newNode.ForeColor = Color.Gray; } ProjectTreeItem newItem = new ProjectTreeItem(id, newNode); newNode.Tag = newItem; return newItem; }