Index: src/Common/SharpMap.UI/Forms/SelectCoordinateSystemDialog.cs =================================================================== diff -u -r44d491f0772d64c9f11182ebf9d6793782a2fd7b -rc40c2d8e1dd30d6b3c788f9154da9e7fc467d4a3 --- src/Common/SharpMap.UI/Forms/SelectCoordinateSystemDialog.cs (.../SelectCoordinateSystemDialog.cs) (revision 44d491f0772d64c9f11182ebf9d6793782a2fd7b) +++ src/Common/SharpMap.UI/Forms/SelectCoordinateSystemDialog.cs (.../SelectCoordinateSystemDialog.cs) (revision c40c2d8e1dd30d6b3c788f9154da9e7fc467d4a3) @@ -11,8 +11,6 @@ private readonly List gcsNodes = new List(); private readonly List pcsNodes = new List(); - private readonly Timer timerFilterChanged; - private readonly IList supportedCoordinateSystems; private readonly IList customCoordinateSystems; @@ -26,13 +24,6 @@ this.customCoordinateSystems = customCoordinateSystems; InitializeComponent(); - - timerFilterChanged = new Timer - { - Interval = 200 - }; - timerFilterChanged.Tick += delegate { FilterTree(); }; - components.Add(timerFilterChanged); } public ICoordinateSystem SelectedCoordinateSystem @@ -194,64 +185,61 @@ private void textBoxFilter_TextChanged(object sender, EventArgs e) { - timerFilterChanged.Start(); + FilterTree(); } private void FilterTree() { - timerFilterChanged.Stop(); - - treeViewProjections.SuspendLayout(); - // var node3Expanded = treeViewProjections.Nodes[2].IsExpanded; - var gcsNodesFiltered = new List(); var pcsNodesFiltered = new List(); - // var ccsNodesFiltered = new List(); + var filterText = textBoxFilter.Text; - if (!string.IsNullOrWhiteSpace(textBoxFilter.Text)) + treeViewProjections.BeginUpdate(); + try { - var filter = textBoxFilter.Text.ToLower().TrimStart(' ').TrimEnd(' '); - gcsNodesFiltered.AddRange(from node in gcsNodes where node.Name.ToLower().Contains(filter) select (TreeNode) node.Clone()); - pcsNodesFiltered.AddRange(from node in pcsNodes where node.Name.ToLower().Contains(filter) select (TreeNode) node.Clone()); - // ccsNodesFiltered.AddRange(from node in customNodes where node.Name.ToLower().Contains(filter) select (TreeNode)node.Clone()); - } - else - { - gcsNodesFiltered.AddRange(from node in gcsNodes select (TreeNode) node.Clone()); - pcsNodesFiltered.AddRange(from node in pcsNodes select (TreeNode) node.Clone()); - // ccsNodesFiltered.AddRange(from node in customNodes select (TreeNode)node.Clone()); - } + if (!string.IsNullOrWhiteSpace(filterText)) + { + var filter = filterText.ToLower().TrimStart(' ').TrimEnd(' '); + gcsNodesFiltered.AddRange(from node in gcsNodes where node.Name.ToLower().Contains(filter) select (TreeNode)node.Clone()); + pcsNodesFiltered.AddRange(from node in pcsNodes where node.Name.ToLower().Contains(filter) select (TreeNode)node.Clone()); + } + else + { + gcsNodesFiltered.AddRange(from node in gcsNodes select (TreeNode)node.Clone()); + pcsNodesFiltered.AddRange(from node in pcsNodes select (TreeNode)node.Clone()); + } - if (treeViewProjections.Nodes.ContainsKey(geographicNodeName)) - { - var geographicNode = treeViewProjections.Nodes[geographicNodeName]; - //treeViewProjections.Nodes[2].Nodes.Clear(); - //treeViewProjections.Nodes[2].Nodes.AddRange(ccsNodesFiltered.ToArray()); + if (treeViewProjections.Nodes.ContainsKey(geographicNodeName)) + { + var geographicNode = treeViewProjections.Nodes[geographicNodeName]; - geographicNode.Nodes.Clear(); - geographicNode.Nodes.AddRange(gcsNodesFiltered.ToArray()); + geographicNode.Nodes.Clear(); + geographicNode.Nodes.AddRange(gcsNodesFiltered.ToArray()); - if (geographicNode.IsExpanded) + if (geographicNode.IsExpanded) + { + geographicNode.Expand(); + } + } + if (treeViewProjections.Nodes.ContainsKey(projectedNodeName)) { - geographicNode.Expand(); + var projectedNode = treeViewProjections.Nodes[projectedNodeName]; + projectedNode.Nodes.Clear(); + projectedNode.Nodes.AddRange(pcsNodesFiltered.ToArray()); + + if (projectedNode.IsExpanded) + { + projectedNode.Expand(); + } } + + treeViewProjections.TopNode = treeViewProjections.Nodes[0]; + treeViewProjections.SelectedNode = treeViewProjections.Nodes[0]; } - if (treeViewProjections.Nodes.ContainsKey(projectedNodeName)) + finally { - var projectedNode = treeViewProjections.Nodes[projectedNodeName]; - projectedNode.Nodes.Clear(); - projectedNode.Nodes.AddRange(pcsNodesFiltered.ToArray()); - - if (projectedNode.IsExpanded) - { - projectedNode.Expand(); - } + treeViewProjections.EndUpdate(); } - - //if (node3Expanded) treeViewProjections.Nodes[2].Expand(); - treeViewProjections.TopNode = treeViewProjections.Nodes[0]; - treeViewProjections.SelectedNode = treeViewProjections.Nodes[0]; - treeViewProjections.ResumeLayout(); } } } \ No newline at end of file