예제 #1
0
 internal override void PerformSearch(TypeSearchTask searchTask)
 {
     if (ClassSearchToolWindow.Instance != null)
     {
         ClassSearchToolWindow.Instance.PerformSearch(searchTask);
     }
     else
     {
         base.PerformSearch(searchTask);
     }
 }
예제 #2
0
 private void OnSearchResultsPosted(object sender, AsyncTaskResultPostedEventArgs e)
 {
     if ((this._searchTask != null) && (this._searchTask == sender))
     {
         ICollection data = e.Data as ICollection;
         if ((data != null) && (data.Count != 0))
         {
             try
             {
                 this._listView.BeginUpdate();
                 foreach (MemberInfo info in data)
                 {
                     System.Type reflectedType = info as System.Type;
                     string extraData = string.Empty;
                     if (reflectedType == null)
                     {
                         reflectedType = info.ReflectedType;
                         if (this._searchOnly)
                         {
                             extraData = string.Concat(new object[] { info.Name, " [", info.MemberType, "]" });
                         }
                     }
                     OpenTypeProjectItem item = new OpenTypeProjectItem(reflectedType, this._project);
                     item.EnsureTypeInformation();
                     ClassViewListViewItem item2 = new ClassViewListViewItem(item, extraData);
                     this._listView.Items.Add(item2);
                 }
             }
             finally
             {
                 this._listView.EndUpdate();
             }
             if (this._statusBar != null)
             {
                 this._statusBar.SetProgress(Math.Max(10, e.PercentComplete));
                 this._statusBar.SetText("Searching...");
             }
             this._listView.Focus();
             this.UpdateCommands();
         }
         if (e.IsComplete)
         {
             this._listView.WatermarkText = "No Classes Found";
             if (this._statusBar != null)
             {
                 this._statusBar.SetProgress(0);
                 this._statusBar.SetText(string.Empty);
             }
             this._searchTask = null;
         }
     }
 }
예제 #3
0
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (this._searchTask != null)
         {
             this._searchTask.Cancel();
             this._searchTask = null;
         }
         this._statusBar = null;
         IProjectManager service = (IProjectManager) this.GetService(typeof(IProjectManager));
     }
     base.Dispose(disposing);
 }
예제 #4
0
 internal virtual void PerformSearch(TypeSearchTask searchTask)
 {
     if (this._searchTask != null)
     {
         TypeSearchTask task = this._searchTask;
         this._searchTask = null;
         task.Cancel();
     }
     this._listView.Items.Clear();
     base.Activate();
     this._searchTask = searchTask;
     this._listView.WatermarkText = "Searching...";
     this.Mode = ClassViewToolWindowMode.Search;
     if (this._statusBar == null)
     {
         this._statusBar = (IStatusBar) this.GetService(typeof(IStatusBar));
     }
     if (this._statusBar != null)
     {
         this._statusBar.SetProgress(10);
         this._statusBar.SetText("Searching...");
     }
     this.UpdateCommands();
     this._searchTask.Start(new AsyncTaskResultPostedEventHandler(this.OnSearchResultsPosted));
 }
예제 #5
0
        bool ICommandHandler.HandleCommand(Microsoft.Matrix.UIComponents.Command command)
        {
            bool flag = false;
            bool flag2 = false;
            bool flag3 = false;
            if (command.CommandGroup == typeof(ClassViewCommands))
            {
                switch (command.CommandID)
                {
                    case 1:
                    {
                        ClassViewProjectData projectData = this._project.ProjectData;
                        ICollection assemblyEntries = projectData.AssemblyEntries;
                        ArrayList list = new ArrayList(assemblyEntries.Count);
                        foreach (ClassViewProjectData.AssemblyEntry entry in assemblyEntries)
                        {
                            try
                            {
                                list.Add(entry.AssemblyName);
                                continue;
                            }
                            catch
                            {
                                continue;
                            }
                        }
                        AssemblyName[] initialList = (AssemblyName[]) list.ToArray(typeof(AssemblyName));
                        IUIService service = (IUIService) base.ServiceProvider.GetService(typeof(IUIService));
                        AssemblySelectionDialog form = new AssemblySelectionDialog(base.ServiceProvider, initialList);
                        if (service.ShowDialog(form) == DialogResult.OK)
                        {
                            projectData.ClearAssemblyEntries();
                            foreach (AssemblyName name in form.SelectedAssemblies)
                            {
                                projectData.AddAssemblyEntry(name);
                            }
                            flag3 = true;
                        }
                        flag = true;
                        break;
                    }
                    case 2:
                        if (this.Mode != ClassViewToolWindowMode.Browse)
                        {
                            ClassViewListViewItem item2 = (ClassViewListViewItem) this._listView.SelectedItems[0];
                            TypeProjectItem projectItem = item2.ProjectItem;
                            this.OpenTypeView(projectItem.Type);
                        }
                        else
                        {
                            ClassViewTreeNode selectedNode = this._treeView.SelectedNode as ClassViewTreeNode;
                            if (selectedNode != null)
                            {
                                TypeProjectItem item = selectedNode.ProjectItem as TypeProjectItem;
                                if (item != null)
                                {
                                    this.OpenTypeView(item.Type);
                                }
                            }
                        }
                        flag = true;
                        break;

                    case 5:
                    {
                        if (this._searchTask != null)
                        {
                            TypeSearchTask task = this._searchTask;
                            this._searchTask = null;
                            task.Cancel();
                        }
                        string searchValue = command.Text.Trim();
                        if (searchValue.Length != 0)
                        {
                            this._listView.Items.Clear();
                            if ((this.SearchMode == ClassViewToolWindowSearchMode.MemberName) && !searchValue.StartsWith("::"))
                            {
                                searchValue = "::" + searchValue;
                            }
                            TypeSearchTask searchTask = TypeSearchTask.CreateSearchTask(this._project.ProjectData, searchValue);
                            if (searchTask != null)
                            {
                                this.PerformSearch(searchTask);
                            }
                            else
                            {
                                IMxUIService service2 = (IMxUIService) this.GetService(typeof(IMxUIService));
                                if (service2 != null)
                                {
                                    string error = "The specified search string did not have a valid syntax.\r\n\r\nUse the following syntax to define your search criteria:\r\n<TypeName> - Search for types by their name.\r\n<Namespace>.<TypeName> - Search for types by their full name.\r\n::<MemberName> - Search for types containing a matching field, property, event or method.";
                                    service2.ReportError(error, "Type Search", true);
                                }
                            }
                        }
                        flag = true;
                        break;
                    }
                    case 6:
                        this.SearchMode = ClassViewToolWindowSearchMode.TypeName;
                        flag = true;
                        flag2 = true;
                        break;

                    case 7:
                        this.SearchMode = ClassViewToolWindowSearchMode.MemberName;
                        flag = true;
                        flag2 = true;
                        break;

                    case 10:
                        this._project.ProjectData.SortMode = ClassViewProjectSortMode.Alphabetical;
                        flag3 = true;
                        flag = true;
                        break;

                    case 11:
                        this._project.ProjectData.SortMode = ClassViewProjectSortMode.ByClassType;
                        flag3 = true;
                        flag = true;
                        break;

                    case 12:
                        this._project.ProjectData.SortMode = ClassViewProjectSortMode.ByClassVisibility;
                        flag3 = true;
                        flag = true;
                        break;

                    case 13:
                        this._project.ProjectData.ViewMode = ClassViewProjectViewMode.Assembly;
                        if (this.Mode != ClassViewToolWindowMode.Browse)
                        {
                            this.Mode = ClassViewToolWindowMode.Browse;
                            flag2 = true;
                        }
                        flag3 = true;
                        flag = true;
                        break;

                    case 14:
                        this._project.ProjectData.ViewMode = ClassViewProjectViewMode.Namespace;
                        if (this.Mode != ClassViewToolWindowMode.Browse)
                        {
                            this.Mode = ClassViewToolWindowMode.Browse;
                            flag2 = true;
                        }
                        flag3 = true;
                        flag = true;
                        break;

                    case 15:
                        if (this.Mode != ClassViewToolWindowMode.Search)
                        {
                            this.Mode = ClassViewToolWindowMode.Search;
                            flag2 = true;
                        }
                        flag = true;
                        break;

                    case 0x10:
                        this._project.ProjectData.ShowNonPublicMembers = !this._project.ProjectData.ShowNonPublicMembers;
                        flag3 = true;
                        flag = true;
                        break;
                }
            }
            if (flag3)
            {
                this.LoadTree(true);
                return flag;
            }
            if (flag2)
            {
                this.UpdateCommands();
            }
            return flag;
        }
예제 #6
0
 void IClassViewService.ShowType(string searchString)
 {
     if ((searchString != null) && (searchString.Length != 0))
     {
         if (this._searchResults == null)
         {
             this._searchResults = new ArrayList();
         }
         else
         {
             this._searchResults.Clear();
         }
         this._searchString = searchString;
         if (this._searchTask != null)
         {
             this._searchTask.Cancel();
             this._searchTask = null;
         }
         this._searchTask = TypeSearchTask.CreateSearchTask(this.ProjectData, searchString);
         this._searchTask.Start(new AsyncTaskResultPostedEventHandler(this.OnSearchResultsPosted));
     }
 }
예제 #7
0
 private void OnSearchResultsPosted(object sender, AsyncTaskResultPostedEventArgs e)
 {
     if ((this._searchTask != null) && (this._searchTask == sender))
     {
         ICollection data = e.Data as ICollection;
         if ((data != null) && (data.Count != 0))
         {
             foreach (System.Type type in data)
             {
                 this._searchResults.Add(type);
             }
         }
         if (e.IsComplete)
         {
             this._searchTask = null;
             System.Type type2 = null;
             if (this._searchResults.Count > 0)
             {
                 foreach (System.Type type3 in this._searchResults)
                 {
                     if (type3.Name.ToLower() == this._searchString.ToLower())
                     {
                         type2 = type3;
                         break;
                     }
                 }
             }
             if (type2 != null)
             {
                 ((IClassViewService) this).ShowType(type2);
             }
             else
             {
                 IUIService service = (IUIService) base.ServiceProvider.GetService(typeof(IUIService));
                 if (service != null)
                 {
                     service.ShowMessage("No help found for '" + this._searchString + "'", "Help", MessageBoxButtons.OK);
                 }
             }
             this._searchString = null;
         }
     }
 }