Esempio n. 1
0
 public NodeMovedEventArgs(stringNode MovedNode, stringNode inOldParent, stringNode inNewParent, int index)
 {
     Node      = MovedNode;
     OldParent = inOldParent;
     NewParent = inNewParent;
     Index     = index;
 }
Esempio n. 2
0
        private void Set(stringNode inNode, TreeNode parentNode)
        {
            foreach (stringNode node in inNode.Nodes)
            {
                TreeNode categNode = null;
                if (!nodesDic.ContainsKey(node.Name))
                {
                    categNode = new TreeNode(node.Name);
                    parentNode.Nodes.Add(categNode);
                    nodesDic.Add(node.Name, categNode);
                }
                else
                {
                    categNode = nodesDic[node.Name];
                }

                categNode.ImageIndex         = 2;
                categNode.SelectedImageIndex = 2;

                SetNodeDisplay(categNode, node);

                categNode.ToolTipText = node.Description;
                categNode.Tag         = node;
                Set(node, categNode);
            }
        }
Esempio n. 3
0
        private void SetNodeDisplay(TreeNode inTreeNode, stringNode inStringNode)
        {
            if (inStringNode.IconIndex != -1)
            {
                inTreeNode.ImageIndex         = inStringNode.IconIndex;
                inTreeNode.SelectedImageIndex = inStringNode.IconIndex;
            }

            if (inStringNode.BackColor.A != 0)
            {
                inTreeNode.BackColor = inStringNode.BackColor;
            }

            if (inStringNode.ForeColor.A != 0)
            {
                inTreeNode.ForeColor = inStringNode.ForeColor;
            }

            if (!inStringNode.Active)
            {
                int meanBackColor = (int)((inTreeNode.BackColor.R + inTreeNode.BackColor.R + inTreeNode.BackColor.B) / 3.0);
                int meanForeColor = (int)((inTreeNode.ForeColor.R + inTreeNode.ForeColor.R + inTreeNode.ForeColor.B) / 3.0);
                int delta         = (int)((meanBackColor - meanForeColor) / 5.0);

                meanBackColor = Math.Max(0, meanBackColor - 50 + delta);
                meanForeColor = Math.Max(0, meanForeColor - 50 - delta);

                inTreeNode.BackColor = Color.FromArgb(inTreeNode.BackColor.A, meanBackColor, meanBackColor, meanBackColor);
                inTreeNode.ForeColor = Color.FromArgb(inTreeNode.ForeColor.A, meanForeColor, meanForeColor, meanForeColor);
            }
        }
Esempio n. 4
0
        private void AddNewNode(string inName, stringNode parent)
        {
            if (!nodesDic.ContainsKey(inName))
            {
                stringNode newNode = new stringNode(inName);
                parent.AddNode(newNode);

                Reset();
                OnNodeAdded(new NodeAddedEventArgs(newNode, parent));
            }
            else
            {
                MessageBox.Show("Node " + inName + " already exist !");
            }
        }
        private void mainPanelAreaMapControl_Load(object sender, EventArgs e)
        {
            List <string> values = Handler.GetStoredValues();

            foreach (string value in values)
            {
                setsLB.Items.Add(value);
            }

            stringNode root = new stringNode("Sets :");

            foreach (string value in values)
            {
                root.AddPath(value);
            }

            setsSNTV.Set(root, false);
        }
Esempio n. 6
0
        void DeleteNode(object sender, EventArgs e)
        {
            MenuItem item = sender as MenuItem;

            if (item != null)
            {
                TreeNode node = item.Tag as TreeNode;

                if (node != null)
                {
                    stringNode realRemoved = node.Tag as stringNode;

                    //Reparent children

                    stringNode realRoot = null;
                    TreeNode   parent   = node.Parent;

                    if (parent != null)
                    {
                        realRoot = parent.Tag as stringNode;
                    }
                    else
                    {
                        realRoot = StringNodeRoot;
                    }

                    foreach (TreeNode subNode in node.Nodes)
                    {
                        stringNode realNode = subNode.Tag as stringNode;
                        realRoot.AddNode(realNode);
                    }

                    realRoot.Nodes.Remove(node.Tag as stringNode);

                    Reset();
                    OnNodeRemoved(new NodeRemovedEventArgs(realRemoved, realRoot));
                }
            }
        }
Esempio n. 7
0
        void mNameBox_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                TreeNode node = mNameBox.Tag as TreeNode;

                if (node != null)
                {
                    if (!nodesDic.ContainsKey(mNameBox.Text))
                    {
                        stringNode realNode = node.Tag as stringNode;

                        if (!IsAdding)
                        {
                            NodeRenamedEventArgs args = new NodeRenamedEventArgs(realNode, node.Text);

                            realNode.Name = mNameBox.Text;
                            node.Name     = mNameBox.Text;
                            node.Text     = mNameBox.Text;

                            OnNodeRenamed(args);
                        }
                        else
                        {
                            AddNewNode(mNameBox.Text, realNode);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Node " + mNameBox.Text + " already exist !");
                    }
                }
                IsAdding         = false;
                mNameBox.Visible = false;
            }
        }
Esempio n. 8
0
 public NodeRemovedEventArgs(stringNode RemovedNode, stringNode inParent)
 {
     Node   = RemovedNode;
     Parent = inParent;
 }
Esempio n. 9
0
 public NodeAddedEventArgs(stringNode AddedNode, stringNode inParent)
 {
     Node   = AddedNode;
     Parent = inParent;
 }
Esempio n. 10
0
 public NodeRenamedEventArgs(stringNode RenamedNode, string oldName)
 {
     Node    = RenamedNode;
     OldName = oldName;
 }
Esempio n. 11
0
        public void Set(stringNode Root, bool createRoot)
        {
            //Folded nodes / Selected nodes
            List <string> foldedNodes   = new List <string>();
            List <string> selectedNodes = new List <string>();

            foreach (string nodeName in nodesDic.Keys)
            {
                if (!nodesDic[nodeName].IsExpanded)
                {
                    foldedNodes.Add(nodeName);
                }

                if (nodesDic[nodeName].IsSelected)
                {
                    selectedNodes.Add(nodeName);
                }
            }

            //Scroll
            Point scroll = GetTreeViewScrollPos();

            Nodes.Clear();
            nodesDic.Clear();

            StringNodeRoot = Root;
            CreateRoot     = createRoot;

            if (createRoot)
            {
                TreeNode root = new TreeNode(Root.Name);

                Nodes.Add(root);
                nodesDic.Add(Root.Name, root);

                root.SelectedImageIndex = 2;
                root.ImageIndex         = 2;

                SetNodeDisplay(root, Root);

                root.Tag = Root;

                Set(Root, root);
            }
            else
            {
                foreach (stringNode node in Root.Nodes)
                {
                    TreeNode categNode = new TreeNode(node.Name);

                    Nodes.Add(categNode);
                    nodesDic.Add(node.Name, categNode);

                    categNode.ImageIndex         = 2;
                    categNode.SelectedImageIndex = 2;

                    SetNodeDisplay(categNode, node);

                    categNode.ToolTipText = node.Description;
                    categNode.Tag         = node;
                    Set(node, categNode);
                }
            }

            ExpandAll();

            //Folded nodes
            foreach (string nodeName in foldedNodes)
            {
                if (nodesDic.ContainsKey(nodeName))
                {
                    nodesDic[nodeName].Collapse(true);
                }
            }

            //Selected nodes ??
            if (selectedNodes.Count > 0 && nodesDic.ContainsKey(selectedNodes[0]))
            {
                SelectedNode = nodesDic[selectedNodes[0]];
            }

            //Scroll
            SetTreeViewScrollPos(scroll);
        }
Esempio n. 12
0
        void stringNodesTreeView_DragDrop(object sender, DragEventArgs e)
        {
            if (IsAdding)
            {
                if (e.Data.GetDataPresent(typeof(string)))
                {
                    AddNewNode((string)e.Data.GetData(typeof(string)), RefNode.Tag as stringNode);
                }
            }
            else
            {
                if (e.Data.GetDataPresent(typeof(TreeNode)))
                {
                    TreeNode Dropped = (TreeNode)e.Data.GetData(typeof(TreeNode));

                    stringNode realParent = null;
                    stringNode refParent  = null;

                    stringNode realDropped = null;
                    stringNode realRef     = null;

                    int index = 0;

                    if (Dropped != null && RefNode != null)
                    {
                        realDropped = Dropped.Tag as stringNode;
                        realRef     = RefNode.Tag as stringNode;

                        if (!realRef.IsChildOf(realDropped))
                        {
                            switch (DropMode)
                            {
                            case DropLocation.Top:

                                if (Dropped.Parent != null)
                                {
                                    realParent = Dropped.Parent.Tag as stringNode;
                                }
                                else
                                {
                                    realParent = StringNodeRoot;
                                }

                                if (RefNode.Parent != null)
                                {
                                    refParent = RefNode.Parent.Tag as stringNode;
                                }
                                else
                                {
                                    refParent = StringNodeRoot;
                                }

                                realParent.Nodes.Remove(realDropped);

                                index = 0;
                                foreach (stringNode child in refParent.Nodes)
                                {
                                    if (child == realRef)
                                    {
                                        break;
                                    }
                                    index++;
                                }

                                refParent.Nodes.Insert(index, realDropped);
                                realDropped.Parent = refParent;
                                Reset();
                                OnNodeMoved(new NodeMovedEventArgs(realDropped, realParent, refParent, index));

                                break;

                            case DropLocation.Bottom:

                                if (Dropped.Parent != null)
                                {
                                    realParent = Dropped.Parent.Tag as stringNode;
                                }
                                else
                                {
                                    realParent = StringNodeRoot;
                                }

                                if (RefNode.Parent != null)
                                {
                                    refParent = RefNode.Parent.Tag as stringNode;
                                }
                                else
                                {
                                    refParent = StringNodeRoot;
                                }

                                realParent.Nodes.Remove(realDropped);

                                index = 0;
                                foreach (stringNode child in refParent.Nodes)
                                {
                                    if (child == realRef)
                                    {
                                        index++;
                                        break;
                                    }
                                    index++;
                                }

                                refParent.Nodes.Insert(index, realDropped);
                                realDropped.Parent = refParent;
                                Reset();
                                OnNodeMoved(new NodeMovedEventArgs(realDropped, realParent, refParent, index));

                                break;

                            default:
                                if (Dropped != RefNode)
                                {
                                    if (Dropped.Parent != null)
                                    {
                                        realParent = Dropped.Parent.Tag as stringNode;
                                    }
                                    else
                                    {
                                        realParent = StringNodeRoot;
                                    }

                                    realRef.AddNode(realDropped);
                                    Reset();
                                    OnNodeMoved(new NodeMovedEventArgs(realDropped, realParent, realRef, realRef.Nodes.Count - 1));
                                }
                                break;
                            }
                        }
                    }
                }
            }

            Invalidate();
            RefNode  = null;
            IsAdding = false;
        }
Esempio n. 13
0
        void stringNodesTreeView_DragOver(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Copy;

            Point    clientHit   = PointToClient(new Point(e.X, e.Y));
            TreeNode destination = HitTest(clientHit).Node;
            TreeNode Dropped     = null;

            if (destination == null)
            {
                stringNode last = StringNodeRoot.Nodes[StringNodeRoot.Nodes.Count - 1];
                if (nodesDic.ContainsKey(last.Name))
                {
                    destination = nodesDic[last.Name];
                }
            }

            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                Dropped = (TreeNode)e.Data.GetData(typeof(TreeNode));
            }
            else
            {
                if (e.Data.GetDataPresent(typeof(string)))
                {
                    string droppedStr = (string)e.Data.GetData(typeof(string));
                    if (!string.IsNullOrEmpty(droppedStr))
                    {
                        Dropped  = new TreeNode(droppedStr);
                        IsAdding = true;
                    }
                }
            }

            bool         allowDrop = false;
            DropLocation newDrop   = DropLocation.On;

            if (Dropped != null && destination != null)
            {
                int deadZone = destination.Bounds.Height / 4;

                if ((clientHit.Y - destination.Bounds.Y) < deadZone)
                {
                    newDrop = DropLocation.Top;
                }
                else
                {
                    if ((clientHit.Y - destination.Bounds.Y) > (3 * deadZone))
                    {
                        newDrop = DropLocation.Bottom;
                    }
                    else
                    {
                        newDrop = DropLocation.On;
                    }
                }

                allowDrop = true;
            }

            if (allowDrop && canDrop(newDrop, Dropped, destination))
            {
                RefNode  = destination;
                DropMode = newDrop;
                Invalidate();
            }
            else
            {
                e.Effect = DragDropEffects.None;
                RefNode  = null;
                IsAdding = false;
            }
        }