private void ShowSearch() { TabPage tabPage = new TabPage("New Search"); SearchControl searchControl = new SearchControl(); searchControl.toolStripButton_Search.Click += new EventHandler(searches_ToolStripButton_Click); searchControl.listView_Results.ItemActivate += new EventHandler(searches_ListView_ItemActivate); tabPage.Controls.Add(searchControl); searches_TabControl.TabPages.Add(tabPage); searches_TabControl.SelectedTab = tabPage; splitView.Panel2Collapsed = false; if (splitView.Panel2.ClientSize.Height < 200) splitView.SplitterDistance -= 200 - splitView.Panel2.ClientSize.Height; searchControl.toolStripTextBox_SearchString.Focus(); }
private void Search(SearchControl control) { // Set appropriate flag SearchFlags flags = SearchFlags.Empty; if (control.toolStripMenuItem_RegExp.Checked) flags |= SearchFlags.RegExp; if (control.toolStripMenuItem_MatchCase.Checked) flags |= SearchFlags.MatchCase; if (control.toolStripMenuItem_WholeWord.Checked) flags |= SearchFlags.WholeWord; if (control.toolStripMenuItem_WordStart.Checked) flags |= SearchFlags.WordStart; // Determine search location List<Script> searchLocation = new List<Script>(); if (control.toolStripComboBox_Scope.SelectedIndex == 0) { Script script = GetActiveScript(); if (script != null) searchLocation.Add(script); } else if (control.toolStripComboBox_Scope.SelectedIndex == 1) { foreach (Script script in _scripts) if (script.Opened) searchLocation.Add(script); } else searchLocation = _scripts; // Execute search if (searchLocation.Count > 0) { control.listView_Results.Items.Clear(); control.Parent.Text = control.toolStripTextBox_SearchString.Text; control.label_Statistics.Text = "Searching..."; control.label_Statistics.Update(); int scriptCount = 0; Enabled = false; foreach (Script script in searchLocation) { SearchResult[] results = script.Search(control.toolStripTextBox_SearchString.Text, flags); if (results.Length > 0) { scriptCount++; control.listView_Results.Items.AddRange(results); control.label_Statistics.Text = string.Format(@"{0} result{1} found in {2} script{3}.", control.listView_Results.Items.Count, control.listView_Results.Items.Count > 1 ? "s" : "", scriptCount, scriptCount > 1 ? "s" : ""); control.label_Statistics.Update(); } } Enabled = true; if (scriptCount == 0) control.label_Statistics.Text = "No matching results were found in the search."; } else control.label_Statistics.Text = "There is currently no open document to search."; }