Ejemplo n.º 1
0
 private void mMenSortAscending_Click(object sender, EventArgs e)
 {
     tvConnections.BeginUpdate();
     ConnectionTree.Sort(tvConnections.Nodes[0], SortOrder.Ascending);
     tvConnections.EndUpdate();
     Runtime.SaveConnectionsBG();
 }
Ejemplo n.º 2
0
 private void cMenTreeToolsSortDescending_Click(object sender, EventArgs e)
 {
     tvConnections.BeginUpdate();
     ConnectionTree.Sort(tvConnections.SelectedNode, SortOrder.Descending);
     tvConnections.EndUpdate();
     Runtime.SaveConnectionsBG();
 }
Ejemplo n.º 3
0
        public static void AddSessionsToTree()
        {
            TreeView treeView = ConnectionTree.TreeView;

            if (treeView == null)
            {
                return;
            }
            if (treeView.InvokeRequired)
            {
                treeView.Invoke(new AddSessionsToTreeDelegate(AddSessionsToTree));
                return;
            }

            foreach (Provider provider in Providers)
            {
                TreeNode rootTreeNode = provider.RootTreeNode;
                bool     inUpdate     = false;

                List <ConnectionInfo> savedSessions = new List <ConnectionInfo>(provider.GetSessions());
                if (!IsProviderEnabled(provider) || savedSessions == null || savedSessions.Count == 0)
                {
                    if (rootTreeNode != null && treeView.Nodes.Contains(rootTreeNode))
                    {
                        treeView.BeginUpdate();
                        treeView.Nodes.Remove(rootTreeNode);
                        treeView.EndUpdate();
                    }
                    continue;
                }

                if (!treeView.Nodes.Contains(rootTreeNode))
                {
                    if (!inUpdate)
                    {
                        treeView.BeginUpdate();
                        inUpdate = true;
                    }
                    treeView.Nodes.Add(rootTreeNode);
                }

                List <TreeNode> newTreeNodes = new List <TreeNode>();
                foreach (PuttySessionInfo sessionInfo in savedSessions)
                {
                    TreeNode treeNode  = default(TreeNode);
                    bool     isNewNode = false;
                    if (rootTreeNode.Nodes.ContainsKey(sessionInfo.Name))
                    {
                        treeNode  = rootTreeNode.Nodes[sessionInfo.Name];
                        isNewNode = false;
                    }
                    else
                    {
                        treeNode = ConnectionTreeNode.AddNode(TreeNodeType.PuttySession, sessionInfo.Name);
                        if (treeNode == null)
                        {
                            continue;
                        }
                        treeNode.Name               = treeNode.Text;
                        treeNode.ImageIndex         = (int)TreeImageType.ConnectionClosed;
                        treeNode.SelectedImageIndex = (int)TreeImageType.ConnectionClosed;
                        isNewNode = true;
                    }

                    sessionInfo.RootPuttySessionsInfo = provider.RootInfo;
                    sessionInfo.TreeNode = treeNode;
                    //sessionInfo.IInheritable.TurnOffInheritanceCompletely();

                    treeNode.Tag = sessionInfo;

                    if (isNewNode)
                    {
                        newTreeNodes.Add(treeNode);
                    }
                }

                foreach (TreeNode treeNode in rootTreeNode.Nodes)
                {
                    if (!savedSessions.Contains((ConnectionInfo)treeNode.Tag))
                    {
                        if (!inUpdate)
                        {
                            treeView.BeginUpdate();
                            inUpdate = true;
                        }
                        rootTreeNode.Nodes.Remove(treeNode);
                    }
                }

                if (!(newTreeNodes.Count == 0))
                {
                    if (!inUpdate)
                    {
                        treeView.BeginUpdate();
                        inUpdate = true;
                    }
                    rootTreeNode.Nodes.AddRange(newTreeNodes.ToArray());
                }

                if (inUpdate)
                {
                    ConnectionTree.Sort(rootTreeNode, SortOrder.Ascending);
                    rootTreeNode.Expand();
                    treeView.EndUpdate();
                }
            }
        }