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);
            }
        }
示例#2
0
        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();
        }