From 719d16891e3e717f94b6ed2981c0df2f61062158 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Wed, 19 Aug 2009 21:24:06 +0000 Subject: [PATCH] Mark ParseInformation.*CompilationUnit as obsolete. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4742 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../CodeCompletion/BooAdvancedHighlighter.cs | 2 +- .../Project/Src/CodeCompletion/BooResolver.cs | 6 +- .../Project/Src/Designer/BooDesignerLoader.cs | 2 +- .../Project/Src/CSharpCompletionBinding.cs | 2 +- .../CSharpFormattingStrategy.cs | 2 +- .../Project/Src/PythonDesignerGenerator.cs | 8 +- .../Project/Src/PythonResolver.cs | 7 +- .../XamlBinding/CompletionDataHelper.cs | 12 +- .../XamlBinding/XamlCodeCompletionBinding.cs | 2 +- .../XamlBinding/XamlCompletionItemList.cs | 2 +- .../XamlBinding/XamlBinding/XamlContext.cs | 11 + .../XamlBinding/XamlBinding/XamlResolver.cs | 10 +- .../AvalonEdit.AddIn/Src/IconBarManager.cs | 2 +- .../AbstractDesignerGenerator.cs | 6 +- .../NRefactoryDesignerLoader.cs | 2 +- .../Project/Src/DesignerViewContent.cs | 2 +- .../Project/Src/SecondaryDisplayBinding.cs | 2 +- ...ProjectResourcesMemberCodeDomSerializer.cs | 2 +- .../Src/MethodExtractorBase.cs | 2 +- .../ICSharpCode.AvalonEdit/Xml/AXmlParser.cs | 3 + .../Project/ICSharpCode.SharpDevelop.csproj | 3 - .../OverrideCompletionItemProvider.cs | 2 +- .../Pads/ClassBrowser/Nodes/ProjectNode.cs | 2 +- .../Src/Gui/Pads/TaskList/TaskListPad.cs | 4 +- .../FindReferencesAndRenameHelper.cs | 2 +- .../NamespaceRefactoringService.cs | 2 +- .../RefactoringMenuBuilder.cs | 2 +- .../Commands/GenerateCodeCommand.cs | 2 +- .../Gui/Editor/ParserFoldingStrategy.cs | 10 + .../Gui/Editor/QuickClassBrowserPanel.cs | 532 ------------------ .../Gui/Editor/SharpDevelopTextAreaControl.cs | 79 +-- .../Project/Src/CSharp/ExpressionFinder.cs | 4 +- .../Project/Src/ClassFinder.cs | 2 +- .../NRefactoryResolver/NRefactoryResolver.cs | 2 +- .../Src/ProjectContent/ParseInformation.cs | 4 + .../NRefactoryRefactoringProvider.cs | 2 +- .../Src/ExceptionBox.cs | 6 + 37 files changed, 83 insertions(+), 664 deletions(-) delete mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooAdvancedHighlighter.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooAdvancedHighlighter.cs index c2875a52f6..8bf3adfe96 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooAdvancedHighlighter.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooAdvancedHighlighter.cs @@ -77,7 +77,7 @@ namespace Grunwald.BooBinding.CodeCompletion if (parseInfo == null && this.declarations == null) parseInfo = ParserService.GetParseInformation(this.TextEditor.FileName); if (parseInfo != null) { - ICompilationUnit cu = parseInfo.MostRecentCompilationUnit; + ICompilationUnit cu = parseInfo.CompilationUnit; CompileUnit booCu = cu.Tag as CompileUnit; if (booCu != null) { FindAssignmentsVisitor visitor = new FindAssignmentsVisitor(); diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs index a76551c119..02bd0d5e83 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs @@ -82,7 +82,7 @@ namespace Grunwald.BooBinding.CodeCompletion if (parseInfo == null) { return false; } - this.cu = parseInfo.MostRecentCompilationUnit; + this.cu = parseInfo.CompilationUnit; if (cu == null) { return false; } @@ -92,8 +92,8 @@ namespace Grunwald.BooBinding.CodeCompletion this.callingClass = GetCallingClass(pc); callingMember = ResolveCurrentMember(callingClass); if (callingMember == null) { - if (cu != parseInfo.BestCompilationUnit) { - IClass olderClass = GetCallingClass(parseInfo.BestCompilationUnit.ProjectContent); + if (cu != parseInfo.CompilationUnit) { + IClass olderClass = GetCallingClass(parseInfo.CompilationUnit.ProjectContent); if (olderClass != null && callingClass == null) { this.callingClass = olderClass; } diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs index 315e603002..6ca5b050e4 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs @@ -60,7 +60,7 @@ namespace Grunwald.BooBinding.Designer Console.WriteLine(module.ToCodeString()); #endif - CodeDomVisitor visitor = new CodeDomVisitor(parseInfo.MostRecentCompilationUnit.ProjectContent); + CodeDomVisitor visitor = new CodeDomVisitor(parseInfo.CompilationUnit.ProjectContent); module.Accept(visitor); #if DEBUG diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs index 7507adbccb..562e77df15 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs @@ -171,7 +171,7 @@ namespace CSharpBinding ParseInformation parseInfo = ParserService.GetParseInformation(editor.FileName); if (parseInfo != null) { - IClass innerMostClass = parseInfo.MostRecentCompilationUnit.GetInnermostClass(editor.Caret.Line, editor.Caret.Column); + IClass innerMostClass = parseInfo.CompilationUnit.GetInnermostClass(editor.Caret.Line, editor.Caret.Column); if (innerMostClass == null) { new CtrlSpaceCompletionItemProvider(ExpressionContext.Namespace).ShowCompletion(editor); return true; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs index 1f7be0f81e..5be5c8e985 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs @@ -193,7 +193,7 @@ namespace CSharpBinding.FormattingStrategy if (fileName != null && fileName.Length > 0 ) { ParseInformation parseInfo = ParserService.ParseFile(fileName, editor.Document.CreateSnapshot()); if (parseInfo != null) { - ICompilationUnit currentCompilationUnit = parseInfo.BestCompilationUnit; + ICompilationUnit currentCompilationUnit = parseInfo.CompilationUnit; if (currentCompilationUnit != null) { IClass currentClass = currentCompilationUnit.GetInnermostClass(caretLine, 0); int nextElementLine = int.MaxValue; diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs index b3bf6981c7..69e120dcd9 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonDesignerGenerator.cs @@ -78,7 +78,7 @@ namespace ICSharpCode.PythonBinding public void MergeRootComponentChanges(IComponent component, IResourceService resourceService) { ParseInformation parseInfo = ParseFile(); - Merge(component, ViewContent.DesignerCodeFileDocument, parseInfo.BestCompilationUnit, textEditorProperties, resourceService); + Merge(component, ViewContent.DesignerCodeFileDocument, parseInfo.CompilationUnit, textEditorProperties, resourceService); } /// @@ -160,7 +160,7 @@ namespace ICSharpCode.PythonBinding // Look at the form's methods and see which are compatible. ArrayList methods = new ArrayList(); - IClass c = GetClass(parseInfo.BestCompilationUnit); + IClass c = GetClass(parseInfo.CompilationUnit); foreach (IMethod method in c.Methods) { if (method.Parameters.Count == 2) { methods.Add(method.Name); @@ -175,7 +175,7 @@ namespace ICSharpCode.PythonBinding /// public static IMethod GetInitializeComponents(ParseInformation parseInfo) { - return GetInitializeComponents(parseInfo.BestCompilationUnit); + return GetInitializeComponents(parseInfo.CompilationUnit); } /// @@ -278,7 +278,7 @@ namespace ICSharpCode.PythonBinding int GetExistingEventHandler(string methodName) { ParseInformation parseInfo = ParseFile(); - IClass c = GetClass(parseInfo.BestCompilationUnit); + IClass c = GetClass(parseInfo.CompilationUnit); foreach (IMethod method in c.Methods) { if ((method.Name == methodName) && (method.Parameters.Count == 2)) { return method.Region.BeginLine; diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonResolver.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonResolver.cs index ef75849cdc..164db29f3b 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonResolver.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonResolver.cs @@ -53,7 +53,7 @@ namespace ICSharpCode.PythonBinding } // Search for a local variable. - LocalResolveResult localResolveResult = GetLocalVariable(expressionResult.Expression, parseInfo.BestCompilationUnit.FileName, fileContent); + LocalResolveResult localResolveResult = GetLocalVariable(expressionResult.Expression, parseInfo.CompilationUnit.FileName, fileContent); if (localResolveResult != null) { return localResolveResult; } @@ -94,10 +94,7 @@ namespace ICSharpCode.PythonBinding ICompilationUnit GetCompilationUnit(ParseInformation parseInfo, bool mostRecent) { if (parseInfo != null) { - if (mostRecent) { - return parseInfo.MostRecentCompilationUnit; - } - return parseInfo.BestCompilationUnit; + return parseInfo.CompilationUnit; } return null; } diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataHelper.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataHelper.cs index b455f904fa..71c249b059 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataHelper.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataHelper.cs @@ -226,7 +226,7 @@ namespace ICSharpCode.XamlBinding ElementWrapper lastElement = context.ActiveElement; if (context.ParseInformation == null) return emptyList; - XamlCompilationUnit cu = context.ParseInformation.BestCompilationUnit as XamlCompilationUnit; + XamlCompilationUnit cu = context.ParseInformation.CompilationUnit as XamlCompilationUnit; if (cu == null) return emptyList; IReturnType rt = cu.CreateType(lastElement.Namespace, lastElement.LocalName.Trim('.')); @@ -346,7 +346,7 @@ namespace ICSharpCode.XamlBinding if (context.ParseInformation == null) return emptyList; - XamlCompilationUnit cu = context.ParseInformation.BestCompilationUnit as XamlCompilationUnit; + XamlCompilationUnit cu = context.ParseInformation.CompilationUnit as XamlCompilationUnit; IReturnType rt = null; @@ -1086,7 +1086,7 @@ namespace ICSharpCode.XamlBinding if (context.ParseInformation == null) return null; - XamlCompilationUnit cu = context.ParseInformation.BestCompilationUnit as XamlCompilationUnit; + XamlCompilationUnit cu = context.ParseInformation.CompilationUnit as XamlCompilationUnit; if (cu == null) return null; string prefix = ""; @@ -1110,7 +1110,7 @@ namespace ICSharpCode.XamlBinding if (context.ParseInformation == null) yield break; - var unit = context.ParseInformation.MostRecentCompilationUnit; + var unit = context.ParseInformation.CompilationUnit; var loc = context.Editor.Caret.Position; IClass c = unit.GetInnermostClass(loc.Line, loc.Column); if (c == null) @@ -1147,7 +1147,7 @@ namespace ICSharpCode.XamlBinding if (context.ParseInformation == null) return result; - IProjectContent pc = context.ParseInformation.BestCompilationUnit.ProjectContent; + IProjectContent pc = context.ProjectContent; foreach (var ns in context.XmlnsDefinitions) { result.Add(ns.Key, XamlCompilationUnit.GetNamespaceMembers(pc, ns.Value)); @@ -1221,7 +1221,7 @@ namespace ICSharpCode.XamlBinding if (context.ParseInformation == null) return result; - IProjectContent pc = context.ParseInformation.BestCompilationUnit.ProjectContent; + IProjectContent pc = context.ProjectContent; if (!string.IsNullOrEmpty(prefixClassName)) { var ns = context.XmlnsDefinitions[prefixNamespace]; diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs index 5661389a1d..3918ab4e38 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCodeCompletionBinding.cs @@ -236,7 +236,7 @@ namespace ICSharpCode.XamlBinding if (context.Attribute.Prefix.Equals("xmlns", StringComparison.OrdinalIgnoreCase) || context.Attribute.Name.Equals("xmlns", StringComparison.OrdinalIgnoreCase)) - completionList.Items.AddRange(CompletionDataHelper.CreateListForXmlnsCompletion(context.ParseInformation.BestCompilationUnit.ProjectContent)); + completionList.Items.AddRange(CompletionDataHelper.CreateListForXmlnsCompletion(context.ProjectContent)); ICompletionListWindow window = editor.ShowCompletionWindow(completionList); diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs index 55dd250a84..c9e08ad9bd 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItemList.cs @@ -135,7 +135,7 @@ namespace ICSharpCode.XamlBinding static bool CreateEventHandlerCode(CompletionContext context, NewEventCompletionItem completionItem, out int discriminator) { ParseInformation p = ParserService.GetParseInformation(context.Editor.FileName); - var unit = p.MostRecentCompilationUnit; + var unit = p.CompilationUnit; var loc = context.Editor.Document.OffsetToPosition(context.StartOffset); IClass c = unit.GetInnermostClass(loc.Line, loc.Column); diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlContext.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlContext.cs index dfcf13dcae..f2d3e69c51 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlContext.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlContext.cs @@ -20,6 +20,8 @@ using ICSharpCode.XmlEditor; namespace ICSharpCode.XamlBinding { + // Fetch a copy of all relevant values of the AXmlDocument so that XamlContext can be used + // without having to acquire the reader lock. public class ElementWrapper { public ElementWrapper(AXmlElement element) { @@ -111,6 +113,15 @@ namespace ICSharpCode.XamlBinding public bool InRoot { get; set; } public ReadOnlyCollection IgnoredXmlns { get; set; } + public IProjectContent ProjectContent { + get { + if (ParseInformation != null) + return ParseInformation.CompilationUnit.ProjectContent; + else + return null; + } + } + public XamlContext() {} public bool InAttributeValueOrMarkupExtension { diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs index 871551a866..d116c91ed1 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs @@ -37,8 +37,8 @@ namespace ICSharpCode.XamlBinding this.resolveExpression = expressionResult.Expression; this.caretLine = expressionResult.Region.BeginLine; this.caretColumn = expressionResult.Region.BeginColumn; - this.callingClass = parseInfo.BestCompilationUnit.GetInnermostClass(caretLine, caretColumn); - this.context = expressionResult.Context as XamlContext ?? CompletionDataHelper.ResolveContext(fileContent, parseInfo.MostRecentCompilationUnit.FileName, Utils.GetOffsetFromFilePos(fileContent, caretLine, caretColumn)); + this.callingClass = parseInfo.CompilationUnit.GetInnermostClass(caretLine, caretColumn); + this.context = expressionResult.Context as XamlContext ?? CompletionDataHelper.ResolveContext(fileContent, parseInfo.CompilationUnit.FileName, Utils.GetOffsetFromFilePos(fileContent, caretLine, caretColumn)); switch (this.context.Description) { case XamlContextDescription.AtTag: @@ -137,7 +137,7 @@ namespace ICSharpCode.XamlBinding return ResolveProperty(xmlNamespace, name, propertyName, true); } else { - IProjectContent pc = context.ParseInformation.BestCompilationUnit.ProjectContent; + IProjectContent pc = context.ProjectContent; IReturnType resolvedType = XamlCompilationUnit.FindType(pc, xmlNamespace, name); IClass resolvedClass = resolvedType != null ? resolvedType.GetUnderlyingClass() : null; if (resolvedClass != null) { @@ -151,7 +151,7 @@ namespace ICSharpCode.XamlBinding MemberResolveResult ResolveProperty(string xmlNamespace, string className, string propertyName, bool allowAttached) { - IProjectContent pc = context.ParseInformation.BestCompilationUnit.ProjectContent; + IProjectContent pc = context.ProjectContent; IReturnType resolvedType = XamlCompilationUnit.FindType(pc, xmlNamespace, className); if (resolvedType != null && resolvedType.GetUnderlyingClass() != null) { var result = ResolvePropertyName(resolvedType, propertyName, allowAttached); @@ -270,7 +270,7 @@ namespace ICSharpCode.XamlBinding resolver.resolveExpression = expression; resolver.caretLine = expressionResult.Region.BeginLine; resolver.caretColumn = expressionResult.Region.BeginColumn; - resolver.callingClass = context.ParseInformation.BestCompilationUnit.GetInnermostClass(resolver.caretLine, resolver.caretColumn); + resolver.callingClass = context.ParseInformation.CompilationUnit.GetInnermostClass(resolver.caretLine, resolver.caretColumn); resolver.context = context; return resolver.ResolveNamedAttribute(expression); diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs index 291f1fec6b..a4bfef09aa 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs @@ -52,7 +52,7 @@ namespace ICSharpCode.AvalonEdit.AddIn } if (parseInfo == null) return; - foreach (IClass c in parseInfo.MostRecentCompilationUnit.Classes) { + foreach (IClass c in parseInfo.CompilationUnit.Classes) { AddClassMemberBookmarks(c); } } diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs index c5b83815a8..194a159cff 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs @@ -74,7 +74,7 @@ namespace ICSharpCode.FormsDesigner { // get new initialize components ParseInformation info = ParserService.ParseFile(this.viewContent.PrimaryFileName, this.viewContent.PrimaryFileContent); - ICompilationUnit cu = info.BestCompilationUnit; + ICompilationUnit cu = info.CompilationUnit; foreach (IClass c in cu.Classes) { if (FormsDesignerSecondaryDisplayBinding.BaseClassIsFormOrControl(c)) { this.currentClassPart = c; @@ -388,7 +388,7 @@ namespace ICSharpCode.FormsDesigner // Update currentClassPart from PrimaryFile this.currentClassPart = null; if (this.ViewContent.PrimaryFile != null && parsings.TryGetValue(this.ViewContent.PrimaryFile, out info)) { - cu = info.BestCompilationUnit; + cu = info.CompilationUnit; foreach (IClass c in cu.Classes) { if (FormsDesignerSecondaryDisplayBinding.BaseClassIsFormOrControl(c)) { if (FormsDesignerSecondaryDisplayBinding.GetInitializeComponents(c) != null) { @@ -418,7 +418,7 @@ namespace ICSharpCode.FormsDesigner return; } - cu = info.BestCompilationUnit; + cu = info.CompilationUnit; foreach (IClass c in cu.Classes) { if (FormsDesignerSecondaryDisplayBinding.BaseClassIsFormOrControl(c)) { this.initializeComponents = FormsDesignerSecondaryDisplayBinding.GetInitializeComponents(c); diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs index 1742bf6d9e..22c817c450 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs @@ -49,7 +49,7 @@ namespace ICSharpCode.FormsDesigner formClass = null; isFirstClassInFile = true; - foreach (IClass c in parseInfo.BestCompilationUnit.Classes) { + foreach (IClass c in parseInfo.CompilationUnit.Classes) { if (FormsDesignerSecondaryDisplayBinding.BaseClassIsFormOrControl(c)) { formClass = c; break; diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs index d40c9aee9d..7ab210c474 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs @@ -284,7 +284,7 @@ namespace ICSharpCode.FormsDesigner serviceContainer.AddService(typeof(DesignerOptionService), new SharpDevelopDesignerOptionService()); serviceContainer.AddService(typeof(ITypeDiscoveryService), new TypeDiscoveryService()); serviceContainer.AddService(typeof(MemberRelationshipService), new DefaultMemberRelationshipService()); - serviceContainer.AddService(typeof(ProjectResourceService), new ProjectResourceService(ParserService.GetParseInformation(this.DesignerCodeFile.FileName).MostRecentCompilationUnit.ProjectContent)); + serviceContainer.AddService(typeof(ProjectResourceService), new ProjectResourceService(ParserService.GetParseInformation(this.DesignerCodeFile.FileName).CompilationUnit.ProjectContent)); // Provide the ImageResourceEditor for all Image and Icon properties this.addedTypeDescriptionProviders.Add(typeof(Image), TypeDescriptor.AddAttributes(typeof(Image), new EditorAttribute(typeof(ImageResourceEditor), typeof(System.Drawing.Design.UITypeEditor)))); diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/SecondaryDisplayBinding.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/SecondaryDisplayBinding.cs index 3f52f7526f..a6a77ae840 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/SecondaryDisplayBinding.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/SecondaryDisplayBinding.cs @@ -72,7 +72,7 @@ namespace ICSharpCode.FormsDesigner public static bool IsDesignable(ParseInformation info) { if (info != null) { - ICompilationUnit cu = (ICompilationUnit)info.BestCompilationUnit; + ICompilationUnit cu = (ICompilationUnit)info.CompilationUnit; foreach (IClass c in cu.Classes) { IMethod method = GetInitializeComponents(c); if (method != null) { diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/ProjectResourcesMemberCodeDomSerializer.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/ProjectResourcesMemberCodeDomSerializer.cs index 24d35023a3..3d28dcdd9c 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/ProjectResourcesMemberCodeDomSerializer.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/ProjectResourcesMemberCodeDomSerializer.cs @@ -101,7 +101,7 @@ namespace ICSharpCode.FormsDesigner.Services string resourceCodeFile = items.Single().FileName; // We expect a single class to be in this file. - IClass resourceClass = ParserService.GetParseInformation(resourceCodeFile).MostRecentCompilationUnit.Classes.Single(); + IClass resourceClass = ParserService.GetParseInformation(resourceCodeFile).CompilationUnit.Classes.Single(); // Here we assume that VerifyResourceName is the same name transform that // was used when generating the resource code file. // This should be true as long as the code is generated using the diff --git a/src/AddIns/Misc/SharpRefactoring/Src/MethodExtractorBase.cs b/src/AddIns/Misc/SharpRefactoring/Src/MethodExtractorBase.cs index 6cea3e19e3..673c387e3c 100644 --- a/src/AddIns/Misc/SharpRefactoring/Src/MethodExtractorBase.cs +++ b/src/AddIns/Misc/SharpRefactoring/Src/MethodExtractorBase.cs @@ -209,7 +209,7 @@ namespace SharpRefactoring { Dom.ParseInformation parseInfo = ParserService.GetParseInformation(textEditor.FileName); if (parseInfo != null) { - Dom.IClass c = parseInfo.MostRecentCompilationUnit.GetInnermostClass(line, column); + Dom.IClass c = parseInfo.CompilationUnit.GetInnermostClass(line, column); if (c != null) { foreach (Dom.IMember member in c.Properties) { if (member.BodyRegion.IsInside(line, column)) { diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlParser.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlParser.cs index 50f85a29a0..e073b2b420 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlParser.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Xml/AXmlParser.cs @@ -137,6 +137,9 @@ namespace ICSharpCode.AvalonEdit.Xml /// Incrementaly parse the given text. /// You have to hold the write lock. /// + /// + /// The full XML text of the new document. + /// /// /// Changes since last parse. Null will cause full reparse. /// diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index d1f51fd14e..7f7dd1f8a8 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -606,9 +606,6 @@ - - UserControl - UserControl diff --git a/src/Main/Base/Project/Src/Editor/CodeCompletion/OverrideCompletionItemProvider.cs b/src/Main/Base/Project/Src/Editor/CodeCompletion/OverrideCompletionItemProvider.cs index fd90f1784c..04358daacb 100644 --- a/src/Main/Base/Project/Src/Editor/CodeCompletion/OverrideCompletionItemProvider.cs +++ b/src/Main/Base/Project/Src/Editor/CodeCompletion/OverrideCompletionItemProvider.cs @@ -47,7 +47,7 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion { ParseInformation parseInfo = ParserService.GetParseInformation(editor.FileName); if (parseInfo == null) return null; - IClass c = parseInfo.MostRecentCompilationUnit.GetInnermostClass(editor.Caret.Line, editor.Caret.Column); + IClass c = parseInfo.CompilationUnit.GetInnermostClass(editor.Caret.Line, editor.Caret.Column); if (c == null) return null; LanguageProperties language = c.ProjectContent.Language; OverrideCompletionItemList result = new OverrideCompletionItemList(); diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ProjectNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ProjectNode.cs index 49a5251bce..57b5d390ea 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ProjectNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ProjectNode.cs @@ -102,7 +102,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser foreach (ProjectItem item in Project.GetItemsOfType(ItemType.Compile)) { ParseInformation parseInformation = ParserService.GetParseInformation(item.FileName); if (parseInformation != null) { - InsertParseInformation(parseInformation.BestCompilationUnit); + InsertParseInformation(parseInformation.CompilationUnit); } } } diff --git a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs index e76d919b90..0f5bfb7855 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs @@ -221,7 +221,7 @@ namespace ICSharpCode.SharpDevelop.Gui if (parseInfo != null) { IPositionable positionable = WorkbenchSingleton.Workbench.ActiveViewContent as IPositionable; if (positionable != null) { - IClass c = parseInfo.MostRecentCompilationUnit.GetInnermostClass(positionable.Line, positionable.Column); + IClass c = parseInfo.CompilationUnit.GetInnermostClass(positionable.Line, positionable.Column); if (c != null) return c; } } @@ -233,7 +233,7 @@ namespace ICSharpCode.SharpDevelop.Gui { ParseInformation parseInfo = ParserService.GetParseInformation(item.FileName); if (parseInfo != null) { - IClass c = parseInfo.MostRecentCompilationUnit.GetInnermostClass(item.Line, item.Column); + IClass c = parseInfo.CompilationUnit.GetInnermostClass(item.Line, item.Column); if (c != null) return c; } diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs index 5dbc93e1c5..1b4859d8f6 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs @@ -95,7 +95,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring } } - ICompilationUnit newCompilationUnit = ParserService.ParseFile(newInterfaceFileName).MostRecentCompilationUnit; + ICompilationUnit newCompilationUnit = ParserService.ParseFile(newInterfaceFileName).CompilationUnit; IClass newInterfaceDef = newCompilationUnit.Classes[0]; // finally, add the interface to the base types of the class that we're extracting from diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/NamespaceRefactoringService.cs b/src/Main/Base/Project/Src/Services/RefactoringService/NamespaceRefactoringService.cs index b636273e11..caaab50dca 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/NamespaceRefactoringService.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/NamespaceRefactoringService.cs @@ -45,7 +45,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring { ParseInformation info = ParserService.ParseFile(fileName, document); if (info == null) return; - ICompilationUnit cu = info.MostRecentCompilationUnit; + ICompilationUnit cu = info.CompilationUnit; List newUsings = new List(cu.UsingScope.Usings); if (sort) { diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs index 213841977b..188a75842e 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs @@ -142,7 +142,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring } else { ParseInformation parseInfo = ParserService.GetParseInformation(textEditor.FileName); if (parseInfo != null) { - cu = parseInfo.MostRecentCompilationUnit; + cu = parseInfo.CompilationUnit; if (cu != null) { IClass callingClass = cu.GetInnermostClass(caretLine, textEditor.Caret.Column); callingMember = GetCallingMember(callingClass, caretLine, textEditor.Caret.Column); diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/GenerateCodeCommand.cs b/src/Main/Base/Project/Src/TextEditor/Commands/GenerateCodeCommand.cs index c0c48f5469..026ad70f79 100644 --- a/src/Main/Base/Project/Src/TextEditor/Commands/GenerateCodeCommand.cs +++ b/src/Main/Base/Project/Src/TextEditor/Commands/GenerateCodeCommand.cs @@ -41,7 +41,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands return; } - ICompilationUnit cu = parseInformation.MostRecentCompilationUnit as ICompilationUnit; + ICompilationUnit cu = parseInformation.CompilationUnit as ICompilationUnit; if (cu == null) { return; } diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs index f69e102fe6..4cb723bd97 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs @@ -14,6 +14,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor { public class ParserFoldingStrategy : IFoldingStrategy { + /* void AddClassMembers(IClass c, List foldMarkers, IDocument document) { if (c.ClassType == ClassType.Delegate) { @@ -100,5 +101,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor } return foldMarkers; } + */ + + /// + /// Calculates the fold level of a specific line. + /// + public List GenerateFoldMarkers(IDocument document, string fileName, object parseInfo) + { + return null; + } } } diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs deleted file mode 100644 index b1cadef448..0000000000 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs +++ /dev/null @@ -1,532 +0,0 @@ -// -// -// -// -// $Revision$ -// - -// created on 07.03.2004 at 19:12 -using System; -using System.Collections; -using System.Collections.Generic; -using System.Drawing; -using System.IO; -using System.Windows.Forms; - -using ICSharpCode.Core; -using ICSharpCode.SharpDevelop.Dom; -using ICSharpCode.TextEditor; - -namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor -{ - public class QuickClassBrowserPanel : System.Windows.Forms.UserControl - { - private System.Windows.Forms.ComboBox classComboBox; - private System.Windows.Forms.ComboBox membersComboBox; - - ICompilationUnit currentCompilationUnit; - SharpDevelopTextAreaControl textAreaControl; - bool autoselect = true; - - class ComboBoxItem : System.IComparable - { - IEntity item; - string text; - int iconIndex; - bool isInCurrentPart; - - public int IconIndex { - get { - return iconIndex; - } - } - - public object Item { - get { - return item; - } - } - - public bool IsInCurrentPart { - get { - return isInCurrentPart; - } - } - - public DomRegion ItemRegion { - get { - IClass classItem = item as IClass; - if (item is IClass) - return ((IClass)item).Region; - else if (item is IMember) - return ((IMember)item).Region; - else - return DomRegion.Empty; - } - } - - public int Line { - get { - DomRegion r = this.ItemRegion; - if (r.IsEmpty) - return 0; - else - return r.BeginLine - 1; - } - } - - public int Column { - get { - DomRegion r = this.ItemRegion; - if (r.IsEmpty) - return 0; - else - return r.BeginColumn - 1; - } - } - - public int EndLine { - get { - DomRegion r = this.ItemRegion; - if (r.IsEmpty) - return 0; - else - return r.EndLine - 1; - } - } - - public ComboBoxItem(IEntity item, string text, ClassBrowserImage image, bool isInCurrentPart) - { - this.item = item; - this.text = text; - this.iconIndex = image.ImageIndex; - this.isInCurrentPart = isInCurrentPart; - } - - public bool IsInside(int lineNumber) - { - if (!isInCurrentPart) - return false; - IClass classItem = item as IClass; - if (classItem != null) { - if (classItem.Region.IsEmpty) - return false; - return classItem.Region.BeginLine - 1 <= lineNumber && - classItem.Region.EndLine - 1 >= lineNumber; - } - - IMember member = item as IMember; - if (member == null || member.Region.IsEmpty) { - return false; - } - bool isInside = member.Region.BeginLine - 1 <= lineNumber; - - if (member is IMethodOrProperty) { - if (((IMethodOrProperty)member).BodyRegion.EndLine >= 0) { - isInside &= lineNumber <= ((IMethodOrProperty)member).BodyRegion.EndLine - 1; - } else { - return member.Region.BeginLine - 1 == lineNumber; - } - } else { - isInside &= lineNumber <= member.Region.EndLine - 1; - } - return isInside; - } - - public int CompareItemTo(object obj) - { - ComboBoxItem boxItem = (ComboBoxItem)obj; - - if (boxItem.Item is IComparable) { - return ((IComparable)boxItem.Item).CompareTo(item); - } - if (boxItem.text != text || boxItem.Line != Line || boxItem.EndLine != EndLine || boxItem.iconIndex != iconIndex) { - return 1; - } - return 0; - } - - public override string ToString() - { - return text; - } - - #region System.IComparable interface implementation - public int CompareTo(object obj) - { - return ToString().CompareTo(obj.ToString()); - } - #endregion - - } - - public QuickClassBrowserPanel(SharpDevelopTextAreaControl textAreaControl) - { - InitializeComponent(); - this.membersComboBox.MaxDropDownItems = 20; - - base.Dock = DockStyle.Top; - this.textAreaControl = textAreaControl; - this.textAreaControl.ActiveTextAreaControl.Caret.PositionChanged += new EventHandler(CaretPositionChanged); - } - - protected override void Dispose(bool disposing) - { - if (disposing) { - this.textAreaControl.ActiveTextAreaControl.Caret.PositionChanged -= new EventHandler(CaretPositionChanged); - this.membersComboBox.Dispose(); - this.classComboBox.Dispose(); - } - base.Dispose(disposing); - } - - void CaretPositionChanged(object sender, EventArgs e) - { - // ignore simple movements - if (e != EventArgs.Empty) { - return; - } - try { - - ParseInformation parseInfo = ParserService.GetParseInformation(textAreaControl.FileName); - if (parseInfo != null) { - if (currentCompilationUnit != (ICompilationUnit)parseInfo.MostRecentCompilationUnit) { - currentCompilationUnit = (ICompilationUnit)parseInfo.MostRecentCompilationUnit; - if (currentCompilationUnit != null) { - FillClassComboBox(true); - FillMembersComboBox(); - } - } - UpdateClassComboBox(); - UpdateMembersComboBox(); - } - } catch (Exception ex) { - MessageService.ShowException(ex); - } - } - - bool membersComboBoxSelectedMember = false; - void UpdateMembersComboBox() - { - autoselect = false; - try { - if (currentCompilationUnit != null) { - for (int i = 0; i < membersComboBox.Items.Count; ++i) { - if (((ComboBoxItem)membersComboBox.Items[i]).IsInside(textAreaControl.ActiveTextAreaControl.Caret.Line)) { - if (membersComboBox.SelectedIndex != i) { - membersComboBox.SelectedIndex = i; - } - if (!membersComboBoxSelectedMember) { - membersComboBox.Refresh(); - } - membersComboBoxSelectedMember = true; - return; - } - } - } - membersComboBox.SelectedIndex = -1; - if (membersComboBoxSelectedMember) { - membersComboBox.Refresh(); - membersComboBoxSelectedMember = false; - } - } finally { - autoselect = true; - } - } - - bool classComboBoxSelectedMember = false; - void UpdateClassComboBox() - { - // Still needed ? - if (currentCompilationUnit == null) { - currentCompilationUnit = (ICompilationUnit)ParserService.GetParseInformation(FileUtility.NormalizePath(textAreaControl.FileName)).MostRecentCompilationUnit; - } - - autoselect = false; - try { - if (currentCompilationUnit != null) { - //// Alex: when changing between files in different compilation units whole process must be restarted - //// happens usually when files are opened from different project(s) - for (int i = 0; i < classComboBox.Items.Count; ++i) { - if (((ComboBoxItem)classComboBox.Items[i]).IsInside(textAreaControl.ActiveTextAreaControl.Caret.Line)) { - bool innerClassContainsCaret = false; - for (int j = i + 1; j < classComboBox.Items.Count; ++j) { - if (((ComboBoxItem)classComboBox.Items[j]).IsInside(textAreaControl.ActiveTextAreaControl.Caret.Line)) { - innerClassContainsCaret = true; - break; - } - } - if (!innerClassContainsCaret) { - if (classComboBox.SelectedIndex != i) { - classComboBox.SelectedIndex = i; - FillMembersComboBox(); - } - if (!classComboBoxSelectedMember) { - classComboBox.Refresh(); - } - classComboBoxSelectedMember = true; - return; - } - } - } - } - if (classComboBoxSelectedMember) { - classComboBox.Refresh(); - classComboBoxSelectedMember = false; - } - } finally { - autoselect = true; - } -// classComboBox.SelectedIndex = -1; - } - - bool NeedtoUpdate(ArrayList items, ComboBox comboBox) - { - if (items.Count != comboBox.Items.Count) { - return true; - } - for (int i = 0; i < items.Count; ++i) { - ComboBoxItem oldItem = (ComboBoxItem)comboBox.Items[i]; - ComboBoxItem newItem = (ComboBoxItem)items[i]; - if (oldItem.GetType() != newItem.GetType()) { - return true; - } - if (newItem.CompareItemTo(oldItem) != 0) { - return true; - } - } - return false; - } - - IClass lastClassInMembersComboBox; - - void FillMembersComboBox() - { - IClass c = GetCurrentSelectedClass(); - if (c != null && lastClassInMembersComboBox != c) { - lastClassInMembersComboBox = c; - ArrayList items = new ArrayList(); - bool partialMode = false; - IClass currentPart = c; - if (c.IsPartial) { - CompoundClass cc = c.GetCompoundClass() as CompoundClass; - if (cc != null) { - partialMode = true; - c = cc; - } - } - - IAmbience ambience = AmbienceService.GetCurrentAmbience(); - ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList | ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames; - - int lastIndex = 0; - IComparer comparer = new Comparer(System.Globalization.CultureInfo.InvariantCulture); - - foreach (IMethod m in c.Methods) { - items.Add(new ComboBoxItem(m, ambience.Convert(m), ClassBrowserIconService.GetIcon(m), partialMode ? currentPart.Methods.Contains(m) : true)); - } - // use "items.Count - lastIndex" instead of "c.Methods.Count" - // because it is possible that the number of methods in the class - // changes while the loop is running (if a compound class is changed - // from another thread) - items.Sort(lastIndex, items.Count - lastIndex, comparer); - lastIndex = items.Count; - - foreach (IProperty p in c.Properties) { - items.Add(new ComboBoxItem(p, ambience.Convert(p), ClassBrowserIconService.GetIcon(p), partialMode ? currentPart.Properties.Contains(p) : true)); - } - items.Sort(lastIndex, items.Count - lastIndex, comparer); - lastIndex = items.Count; - - foreach (IField f in c.Fields) { - items.Add(new ComboBoxItem(f, ambience.Convert(f), ClassBrowserIconService.GetIcon(f), partialMode ? currentPart.Fields.Contains(f) : true)); - } - items.Sort(lastIndex, items.Count - lastIndex, comparer); - lastIndex = items.Count; - - foreach (IEvent evt in c.Events) { - items.Add(new ComboBoxItem(evt, ambience.Convert(evt), ClassBrowserIconService.GetIcon(evt), partialMode ? currentPart.Events.Contains(evt) : true)); - } - items.Sort(lastIndex, items.Count - lastIndex, comparer); - lastIndex = items.Count; - - membersComboBox.BeginUpdate(); - membersComboBox.Items.Clear(); - membersComboBox.Items.AddRange(items.ToArray()); - membersComboBox.EndUpdate(); - UpdateMembersComboBox(); - } - } - - void AddClasses(ArrayList items, ICollection classes) - { - foreach (IClass c in classes) { - IAmbience ambience = AmbienceService.GetCurrentAmbience(); - ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowTypeParameterList; - items.Add(new ComboBoxItem(c, ambience.Convert(c), ClassBrowserIconService.GetIcon(c), true)); - AddClasses(items, c.InnerClasses); - } - } - - void FillClassComboBox(bool isUpdateRequired) - { - ArrayList items = new ArrayList(); - AddClasses(items, currentCompilationUnit.Classes); - if (isUpdateRequired) { - classComboBox.BeginUpdate(); - } - classComboBox.Items.Clear(); - membersComboBox.Items.Clear(); - classComboBox.Items.AddRange(items.ToArray()); - if (items.Count == 1) { - try { - autoselect = false; - classComboBox.SelectedIndex = 0; - FillMembersComboBox(); - } finally { - autoselect = true; - } - } - if (isUpdateRequired) { - classComboBox.EndUpdate(); - } - UpdateClassComboBox(); - } - - - // THIS METHOD IS MAINTAINED BY THE FORM DESIGNER - // DO NOT EDIT IT MANUALLY! YOUR CHANGES ARE LIKELY TO BE LOST - void InitializeComponent() { - this.membersComboBox = new System.Windows.Forms.ComboBox(); - this.classComboBox = new System.Windows.Forms.ComboBox(); - this.SuspendLayout(); - // - // membersComboBox - // - this.membersComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.membersComboBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable; - this.membersComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.membersComboBox.Location = new System.Drawing.Point(200, 4); - this.membersComboBox.Name = "membersComboBox"; - this.membersComboBox.Size = new System.Drawing.Size(161, 21); - this.membersComboBox.TabIndex = 1; - this.membersComboBox.SelectedIndexChanged += new System.EventHandler(this.ComboBoxSelectedIndexChanged); - this.membersComboBox.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.MeasureComboBoxItem); - this.membersComboBox.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ComboBoxDrawItem); - - // - // classComboBox - // - this.classComboBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable; - this.classComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.classComboBox.Location = new System.Drawing.Point(4, 4); - this.classComboBox.Name = "classComboBox"; - this.classComboBox.Size = new System.Drawing.Size(189, 21); - this.classComboBox.TabIndex = 0; - this.classComboBox.SelectedIndexChanged += new System.EventHandler(this.ComboBoxSelectedIndexChanged); - this.classComboBox.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.MeasureComboBoxItem); - this.classComboBox.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ComboBoxDrawItem); - this.classComboBox.Sorted = true; - - // - // QuickClassBrowserPanel - // - this.Controls.Add(this.membersComboBox); - this.Controls.Add(this.classComboBox); - this.Name = "QuickClassBrowserPanel"; - this.Size = new System.Drawing.Size(368, 28); - this.Resize += new System.EventHandler(this.QuickClassBrowserPanelResize); - this.ResumeLayout(false); - } - - public IClass GetCurrentSelectedClass() - { - if (classComboBox.SelectedIndex >= 0) { - return (IClass)((ComboBoxItem)classComboBox.Items[classComboBox.SelectedIndex]).Item; - } - return null; - } - - void ComboBoxSelectedIndexChanged(object sender, System.EventArgs e) - { - ComboBox comboBox = (ComboBox)sender; - if (autoselect && comboBox.SelectedIndex >= 0) { - ComboBoxItem item = (ComboBoxItem)comboBox.Items[comboBox.SelectedIndex]; - if (item.IsInCurrentPart) { - textAreaControl.ActiveTextAreaControl.CenterViewOn( - item.Line, (int)(0.3 * textAreaControl.ActiveTextAreaControl.TextArea.TextView.VisibleLineCount)); - textAreaControl.ActiveTextAreaControl.JumpTo(item.Line, item.Column); - textAreaControl.ActiveTextAreaControl.TextArea.Focus(); - } else { - IMember m = item.Item as IMember; - if (m != null) { - string fileName = m.DeclaringType.CompilationUnit.FileName; - FileService.JumpToFilePosition(fileName, item.Line, item.Column); - } - } - if (comboBox == classComboBox) { - FillMembersComboBox(); - UpdateMembersComboBox(); - } - } - } - - // font - has to be static - don't create on each draw - static Font font = font = new Font("Arial", 8.25f); - static StringFormat drawStringFormat = new StringFormat(StringFormatFlags.NoWrap); - - void ComboBoxDrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e) - { - ComboBox comboBox = (ComboBox)sender; - e.DrawBackground(); - - if (e.Index >= 0) { - ComboBoxItem item = (ComboBoxItem)comboBox.Items[e.Index]; - - e.Graphics.DrawImageUnscaled(ClassBrowserIconService.ImageList.Images[item.IconIndex], - new Point(e.Bounds.X, e.Bounds.Y + (e.Bounds.Height - ClassBrowserIconService.ImageList.ImageSize.Height) / 2)); - Rectangle drawingRect = new Rectangle(e.Bounds.X + (int)ClassBrowserIconService.ImageSize.Width, - e.Bounds.Y, - e.Bounds.Width - (int)ClassBrowserIconService.ImageSize.Width, - e.Bounds.Height); - - Brush drawItemBrush = SystemBrushes.WindowText; - if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) { - drawItemBrush = SystemBrushes.HighlightText; - } - if (!item.IsInCurrentPart) { - drawItemBrush = SystemBrushes.ControlDark; - } else if (e.State == DrawItemState.ComboBoxEdit && !item.IsInside(textAreaControl.ActiveTextAreaControl.Caret.Line)) { - drawItemBrush = SystemBrushes.ControlDark; - } - e.Graphics.DrawString(item.ToString(), - font, - drawItemBrush, - drawingRect, - drawStringFormat); - } - e.DrawFocusRectangle(); - } - - void QuickClassBrowserPanelResize(object sender, System.EventArgs e) - { - Size comboBoxSize = new Size(Width / 2 - 4 * 3, 21); - classComboBox.Size = comboBoxSize; - membersComboBox.Location = new Point(classComboBox.Bounds.Right + 8, classComboBox.Bounds.Top); - membersComboBox.Size = comboBoxSize; - } - - void MeasureComboBoxItem(object sender, System.Windows.Forms.MeasureItemEventArgs e) - { - ComboBox comboBox = (ComboBox)sender; - if (e.Index >= 0) { - ComboBoxItem item = (ComboBoxItem)comboBox.Items[e.Index]; - SizeF size = e.Graphics.MeasureString(item.ToString(), font); - e.ItemWidth = (int)size.Width; - - e.ItemHeight = (int)Math.Max(size.Height, ClassBrowserIconService.ImageSize.Height); - } - } - } -} diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs index be2d6ca951..4411c37b5f 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs @@ -36,30 +36,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor get { return adapter; } } - QuickClassBrowserPanel quickClassBrowserPanel = null; - Control customQuickClassBrowserPanel = null; ErrorDrawer errorDrawer; IAdvancedHighlighter advancedHighlighter; - public QuickClassBrowserPanel QuickClassBrowserPanel { - get { - return quickClassBrowserPanel; - } - } - public Control CustomQuickClassBrowserPanel { - get { - return customQuickClassBrowserPanel; - } - set { - if (customQuickClassBrowserPanel != null) { - RemoveQuickClassBrowserPanel(); - customQuickClassBrowserPanel.Dispose(); - } - customQuickClassBrowserPanel = value; - ActivateQuickClassBrowserOnDemand(); - } - } - public SharpDevelopTextAreaControl() : this(true, true) { @@ -135,14 +114,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor errorDrawer.Dispose(); errorDrawer = null; } - if (quickClassBrowserPanel != null) { - quickClassBrowserPanel.Dispose(); - quickClassBrowserPanel = null; - } - if (customQuickClassBrowserPanel != null) { - customQuickClassBrowserPanel.Dispose(); - customQuickClassBrowserPanel = null; - } if (advancedHighlighter != null) { advancedHighlighter.Dispose(); advancedHighlighter = null; @@ -193,11 +164,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor SharpDevelopTextEditorProperties sdtep = base.TextEditorProperties as SharpDevelopTextEditorProperties; if (sdtep != null) { - if (!sdtep.ShowQuickClassBrowserPanel) { - RemoveQuickClassBrowserPanel(); - } else { - ActivateQuickClassBrowserOnDemand(); - } if (sdtep.UnderlineErrors) { if (errorDrawer == null) { errorDrawer = new ErrorDrawer(this); @@ -237,52 +203,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor } } - void RemoveQuickClassBrowserPanel() - { - if (quickClassBrowserPanel != null) { - Controls.Remove(quickClassBrowserPanel); - quickClassBrowserPanel.Dispose(); - quickClassBrowserPanel = null; - textAreaPanel.BorderStyle = System.Windows.Forms.BorderStyle.None; - } - if (customQuickClassBrowserPanel != null) { - if (Controls.Contains(customQuickClassBrowserPanel)) { - Controls.Remove(customQuickClassBrowserPanel); - customQuickClassBrowserPanel.Enabled = false; - textAreaPanel.BorderStyle = System.Windows.Forms.BorderStyle.None; - } - } - } - void ShowQuickClassBrowserPanel() - { - if (quickClassBrowserPanel == null) { - quickClassBrowserPanel = new QuickClassBrowserPanel(this); - Controls.Add(quickClassBrowserPanel); - textAreaPanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - } - if (customQuickClassBrowserPanel != null) { - if (quickClassBrowserPanel != null) - RemoveQuickClassBrowserPanel(); - if (!Controls.Contains(customQuickClassBrowserPanel)) { - Controls.Add(customQuickClassBrowserPanel); - customQuickClassBrowserPanel.Enabled = true; - textAreaPanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - } - return; - } - } public void ActivateQuickClassBrowserOnDemand() { - SharpDevelopTextEditorProperties sdtep = base.TextEditorProperties as SharpDevelopTextEditorProperties; - if (sdtep != null && sdtep.ShowQuickClassBrowserPanel && FileName != null) { - - bool quickClassPanelActive = ParserService.CreateParser(FileName) != null; - if (quickClassPanelActive) { - ShowQuickClassBrowserPanel(); - } else { - RemoveQuickClassBrowserPanel(); - } - } + } protected override void OnFileNameChanged(EventArgs e) diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs index 73b563e13a..48d7fbc8d2 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs @@ -26,8 +26,8 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp public CSharpExpressionFinder(ParseInformation parseInformation) { this.parseInformation = parseInformation; - if (parseInformation != null && parseInformation.MostRecentCompilationUnit != null) { - projectContent = parseInformation.MostRecentCompilationUnit.ProjectContent; + if (parseInformation != null && parseInformation.CompilationUnit != null) { + projectContent = parseInformation.CompilationUnit.ProjectContent; } else { projectContent = DefaultProjectContent.DummyProjectContent; } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ClassFinder.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ClassFinder.cs index 084cf78ba5..378ee0bfaa 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ClassFinder.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ClassFinder.cs @@ -98,7 +98,7 @@ namespace ICSharpCode.SharpDevelop.Dom void Init(ParseInformation parseInfo) { if (parseInfo != null) { - cu = parseInfo.MostRecentCompilationUnit; + cu = parseInfo.CompilationUnit; } if (cu != null) { diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs index d2908c63b8..902a7db81d 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs @@ -178,7 +178,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver return false; } - cu = parseInfo.MostRecentCompilationUnit; + cu = parseInfo.CompilationUnit; if (cu == null || cu.ProjectContent == null) { return false; } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ParseInformation.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ParseInformation.cs index d8a6a67fd3..3cf6e1a8e8 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ParseInformation.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ParseInformation.cs @@ -28,12 +28,14 @@ namespace ICSharpCode.SharpDevelop.Dom /// Gets the last compilation unit that was valid (=no parse errors). /// This property might be null. /// + [ObsoleteAttribute] public ICompilationUnit ValidCompilationUnit { get { return unit; } } /// /// Gets the last compilation unit that was invalid (=had parse errors). /// This property is null if the most recent compilation unit is valid. /// + [ObsoleteAttribute] public ICompilationUnit DirtyCompilationUnit { get { return unit; } } /// @@ -41,11 +43,13 @@ namespace ICSharpCode.SharpDevelop.Dom /// This returns the ValidCompilationUnit if one exists, otherwise /// the DirtyCompilationUnit. /// + [ObsoleteAttribute] public ICompilationUnit BestCompilationUnit { get { return unit; } } /// /// Gets the most recent compilation unit. The unit might be valid or invalid. /// + [ObsoleteAttribute] public ICompilationUnit MostRecentCompilationUnit { get { return unit; } } public ParseInformation(ICompilationUnit unit) diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/NRefactoryRefactoringProvider.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/NRefactoryRefactoringProvider.cs index ff8184ca1f..3ebbd2a22f 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/NRefactoryRefactoringProvider.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Refactoring/NRefactoryRefactoringProvider.cs @@ -263,7 +263,7 @@ namespace ICSharpCode.SharpDevelop.Dom.Refactoring { if (parseInformation != null) { this.parseInformation = parseInformation; - resolver = new NRefactoryResolver.NRefactoryResolver(parseInformation.MostRecentCompilationUnit.ProjectContent.Language); + resolver = new NRefactoryResolver.NRefactoryResolver(parseInformation.CompilationUnit.ProjectContent.Language); } } diff --git a/src/Main/ICSharpCode.SharpDevelop.Sda/Src/ExceptionBox.cs b/src/Main/ICSharpCode.SharpDevelop.Sda/Src/ExceptionBox.cs index 08f895fb27..4686e5507a 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Sda/Src/ExceptionBox.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Sda/Src/ExceptionBox.cs @@ -65,6 +65,9 @@ namespace ICSharpCode.SharpDevelop.Sda ShowErrorBox(ex, "Unhandled exception", e.IsTerminating); } + /// + /// Displays the exception box. + /// public static void ShowErrorBox(Exception exception, string message) { ShowErrorBox(exception, message, false); @@ -76,6 +79,9 @@ namespace ICSharpCode.SharpDevelop.Sda [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] static void ShowErrorBox(Exception exception, string message, bool mustTerminate) { + if (exception == null) + throw new ArgumentNullException("exception"); + // ignore reentrant calls (e.g. when there's an exception in OnRender) if (showingBox) return;