public override void Run(DTE2 app) { try { var currentSelectedFilepath = GetSourceFilePath(app) ?? ""; var basePathsList = Utils.FindSolutionDirectories(app).ToList(); if (!basePathsList.Any()) { return; } var basePath = basePathsList.FirstOrDefault(p => currentSelectedFilepath.StartsWith(p, StringComparison.OrdinalIgnoreCase)) ?? basePathsList.FirstOrDefault(p => p.EndsWith($"{currentSelectedFilepath}\\".Replace("#", null), StringComparison.OrdinalIgnoreCase)); if (basePath.HasValue()) { basePathsList.Remove(basePath); basePathsList.Insert(0, basePath); } var basePaths = basePathsList.ToArray(); var repository = new Repository(/*basePath*/); var loader = GetLoaderAgent(basePaths, repository); var filterer = new Filterer(basePaths, repository); var form = new FinderForm(GetTitle(), GetColor(), loader, filterer, defaultSearchTerm: app.GetSelectedText()); if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var foundItem = form.GetSelectedItem(); FoundItemsBank.Items = filterer.FoundItems; GotoItem(app, basePaths, foundItem); } else { app.StatusBar.Text = "Ready ..."; } } catch (Exception e) { ErrorNotification.EmailError(e); } }
public FinderForm(string title, Color color, Loader loader, Filterer filterer, string defaultSearchTerm) { InitializeComponent(); lstFiles.Font = SystemFonts.IconTitleFont; lstFiles.ItemHeight = lstFiles.Font.Height; SystemEvents.UserPreferenceChanged += new UserPreferenceChangedEventHandler(SystemEvents_UserPreferenceChanged); this.FormClosing += new FormClosingEventHandler(Form_FormClosing); if (loader.GetType() == typeof(MemberLoaderAgent)) { MemberFinder.Enabled = false; } if (loader.GetType() == typeof(StyleLoaderAgent)) { CssFinder.Enabled = false; } if (loader.GetType() == typeof(FileLoaderAgent)) { FileFilderButton.Enabled = false; } Text = title; BackColor = color; Filterer = filterer; Filterer.ExcludedFileTypes = (Settings.Default.ExcludeResources) ? Settings.Default.ResourceFileTypes.Split(';') : null; Filterer.ItemsFound += Filterer_ItemsFound; Filterer.AnnouncementOfExistingItemsFinished += new EventHandler(Filterer_AnnouncementOfExistingItemsFinished); Loader = loader; Loader.RunWorkerAsync(Filterer); Loader.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Loader_RunWorkerCompleted); Loader.LoadOptions(); SearchTerm = string.Empty; txtSearchBox.Text = defaultSearchTerm ?? ""; Search(); }