private void LaunchSearch(bool interactive)
{
if (indexes.Count == 0)
{
return;
}
searchStatusLabel.Text = String.Format(Properties.Resources.SearchingForTerm, searchBox.Text);
searchLaunched = true;
searchIdentifier++;
if (!interactive)
{
SearchItem si = new SearchItem();
si.SearchIdentifier = searchIdentifier;
si.SearchText = searchBox.Text;
ThreadPool.QueueUserWorkItem(BackgroundSearch, si);
return;
}
HitCollection hits = Indexer.Search(searchBox.Text, indexes.Values, Indexer.MAX_SEARCH_HITS);
searchStatusLabel.Text = String.Empty;
if (String.IsNullOrEmpty(hits.ErrorMessages))
{
loadingResults = true;
hitsBox.DataSource = hits;
hitsBox.SelectedItem = null;
loadingResults = false;
if (hits.HadMoreHits)
{
searchStatusLabel.Text = String.Format(Properties.Resources.ShowingXTopResults, Indexer.MAX_SEARCH_HITS.ToString());
}
if (hits.Count > 0)
{
hitsBox.SetSelected(0, true);
PageInfo page = hitsBox.SelectedItem as PageInfo;
webBrowser.Navigate(WebServer.Instance.GenerateUrl(page));
}
}
else
{
MessageBox.Show(this, hits.ErrorMessages, Properties.Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}