Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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);
                }
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
 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);
         }
     }
 }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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();
                        }
                    }
                }
            }
        }
Esempio n. 9
0
        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();
            }
        }
Esempio n. 10
0
 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;
         }
     }
 }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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;
        }
Esempio n. 13
0
        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;
        }
Esempio n. 14
0
        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();
            }
        }