From ebe69d23873672f94361d009d27cb2815c965114 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Mon, 28 Jan 2008 19:17:45 +0000 Subject: [PATCH] Don't reuse IAmbience instances (they are not thread-safe). Make NewFileDialog + SelectReferenceDialog resizable. ClassBrowser: fixed bug that could cause classes not to be removed from the class browser when the file containing the class definition was removed from the project. ClassBrowser: fixed bug with generic and non-generic classes that have the same name. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2933 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Boo/BooBinding/Project/Src/BooAmbience.cs | 2 - .../Boo/BooBinding/Project/Src/BooProject.cs | 8 +- .../Src/Designer/BooDesignerGenerator.cs | 2 +- .../Project/Src/Project/CSharpProject.cs | 8 +- .../PythonBinding/Test/Utils/MockProject.cs | 11 +- .../Project/Src/Project/VBNetProject.cs | 8 +- .../Project/Src/VBNetCompletionBinding.cs | 7 +- .../Project/ICSharpCode.SharpDevelop.csproj | 1 - .../Base/Project/Resources/NewFileDialog.xfrm | 87 +++---- .../Resources/NewFileWithNameDialog.xfrm | 97 ++++--- .../Gui/Dialogs/NewProjectDialog.Designer.cs | 1 + .../ReferenceDialog/SelectReferenceDialog.cs | 241 ++++++++++-------- .../Src/Gui/Pads/ClassBrowser/ClassBrowser.cs | 11 +- .../Gui/Pads/ClassBrowser/Nodes/ClassNode.cs | 2 +- .../Pads/ClassBrowser/Nodes/ProjectNode.cs | 27 +- .../Project/Src/Project/AbstractProject.cs | 10 +- src/Main/Base/Project/Src/Project/IProject.cs | 5 +- .../AmbienceReflectionDecorator.cs | 97 ------- .../AmbienceService/AmbienceService.cs | 15 +- .../ParseInformationEventHandler.cs | 20 +- .../Services/ParserService/ParserService.cs | 14 +- src/Main/Base/Test/GenericResolverTests.cs | 2 +- src/Main/Base/Test/Utils/MockProject.cs | 7 +- .../Project/Src/Ambience.cs | 13 + .../Project/Src/CSharp/CSharpAmbience.cs | 20 +- .../Project/Src/LanguageProperties.cs | 14 + .../Project/Src/VBNet/VBNetAmbience.cs | 20 +- 27 files changed, 357 insertions(+), 393 deletions(-) delete mode 100644 src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs index 471c769c7e..e6e03dccf2 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs @@ -19,8 +19,6 @@ namespace Grunwald.BooBinding static Dictionary reverseTypeConversionTable = new Dictionary(); static Dictionary typeConversionTable = new Dictionary(); - public readonly static BooAmbience Instance = new BooAmbience(); - /// /// Gets a dictionary with boo's short names as keys and /// the fully qualified type names as values. diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs index fc29204930..89847379f0 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs @@ -102,11 +102,9 @@ namespace Grunwald.BooBinding return pc; } - [Browsable(false)] - public override IAmbience Ambience { - get { - return BooAmbience.Instance; - } + public override IAmbience GetAmbience() + { + return new BooAmbience(); } [Browsable(false)] diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerGenerator.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerGenerator.cs index 8923b7beb9..46671bd22c 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerGenerator.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerGenerator.cs @@ -146,7 +146,7 @@ namespace Grunwald.BooBinding.Designer param += " as "; string typeStr = pInfo.ParameterType.ToString(); - typeStr = BooAmbience.Instance.GetIntrinsicTypeName(typeStr); + typeStr = new BooAmbience().GetIntrinsicTypeName(typeStr); param += typeStr; if (i + 1 < mInfo.GetParameters().Length) { param += ", "; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs index 6fea150893..fe2e85789a 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs @@ -22,11 +22,9 @@ namespace CSharpBinding /// public class CSharpProject : CompilableProject { - [Browsable(false)] - public override IAmbience Ambience { - get { - return CSharpAmbience.Instance; - } + public override IAmbience GetAmbience() + { + return new CSharpAmbience(); } public override string Language { diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProject.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProject.cs index ad96980fb3..729d5ac7ab 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProject.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProject.cs @@ -59,10 +59,9 @@ namespace PythonBinding.Tests.Utils } } - public ICSharpCode.SharpDevelop.Dom.IAmbience Ambience { - get { - throw new NotImplementedException(); - } + public ICSharpCode.SharpDevelop.Dom.IAmbience GetAmbience() + { + throw new NotImplementedException(); } public string FileName { @@ -302,7 +301,7 @@ namespace PythonBinding.Tests.Utils public void StartBuild(ProjectBuildOptions buildOptions, IBuildFeedbackSink feedbackSink) { throw new NotImplementedException(); - } - #endregion + } + #endregion } } diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs index e5633b0af7..3c533704ac 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs @@ -41,11 +41,9 @@ namespace VBNetBinding } } - [Browsable(false)] - public override IAmbience Ambience { - get { - return VBNetAmbience.Instance; - } + public override IAmbience GetAmbience() + { + return new VBNetAmbience(); } public VBNetProject(IMSBuildEngineProvider provider, string fileName, string projectName) diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs index 820a2409ec..60328ec50a 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs @@ -130,11 +130,12 @@ namespace VBNetBinding editor.Document.TextContent); if (rr != null && rr.ResolvedType != null) { ClassFinder context = new ClassFinder(ParserService.GetParseInformation(editor.FileName), editor.ActiveTextAreaControl.Caret.Line, t1.col); + VBNetAmbience ambience = new VBNetAmbience(); if (CodeGenerator.CanUseShortTypeName(rr.ResolvedType, context)) - VBNetAmbience.Instance.ConversionFlags = ConversionFlags.None; + ambience.ConversionFlags = ConversionFlags.None; else - VBNetAmbience.Instance.ConversionFlags = ConversionFlags.UseFullyQualifiedTypeNames; - string typeName = VBNetAmbience.Instance.Convert(rr.ResolvedType); + ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedTypeNames; + string typeName = ambience.Convert(rr.ResolvedType); editor.Document.Replace(curLine.Offset + t1.col - 1, 1, typeName); editor.ActiveTextAreaControl.Caret.Column += typeName.Length - 1; return true; diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index d9d874d64a..dc5f9b91bb 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -139,7 +139,6 @@ - diff --git a/src/Main/Base/Project/Resources/NewFileDialog.xfrm b/src/Main/Base/Project/Resources/NewFileDialog.xfrm index f74681261d..7e6b6caaa7 100644 --- a/src/Main/Base/Project/Resources/NewFileDialog.xfrm +++ b/src/Main/Base/Project/Resources/NewFileDialog.xfrm @@ -1,97 +1,95 @@ - - - - + + + + - + + + - - - - + + + - - + + - - - - + + + - - - + + + - - + - - - + + + + - - - - + + + - - - + + + - @@ -99,38 +97,35 @@ + - - + - - - + + - - - - - - + + + + + + - - - + @@ -138,4 +133,4 @@ - + \ No newline at end of file diff --git a/src/Main/Base/Project/Resources/NewFileWithNameDialog.xfrm b/src/Main/Base/Project/Resources/NewFileWithNameDialog.xfrm index 4e15c7d2b1..c370f0efc2 100644 --- a/src/Main/Base/Project/Resources/NewFileWithNameDialog.xfrm +++ b/src/Main/Base/Project/Resources/NewFileWithNameDialog.xfrm @@ -1,114 +1,112 @@ - - - + - + + + - - - - - + + + - + + + - + + + - - - - + + + - - + + - - - - + + + - - - + + + - - + - - - + + + + - - - - + + + - - - + + + - @@ -116,38 +114,35 @@ + - - + - - - + + - - - - - - + + + + + + - - - + diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.Designer.cs b/src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.Designer.cs index 568b5d909a..57eedc7926 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.Designer.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.Designer.cs @@ -302,6 +302,7 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs this.Controls.Add(this.bottomPanel); this.MaximizeBox = false; this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(405, 290); this.Name = "NewProjectDialog"; this.ShowIcon = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/SelectReferenceDialog.cs b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/SelectReferenceDialog.cs index 8470636cbb..7a5de0c6ec 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/SelectReferenceDialog.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/SelectReferenceDialog.cs @@ -15,29 +15,6 @@ using ICSharpCode.SharpDevelop.Project; namespace ICSharpCode.SharpDevelop.Gui { - public interface IReferencePanel - { - void AddReference(); - } - - public interface ISelectReferenceDialog - { - /// - /// Project to create references for. - /// - IProject ConfigureProject { get; } - - void AddReference(string referenceName, string referenceType, string referenceLocation, ReferenceProjectItem projectItem); - } - - public enum ReferenceType { - Assembly, - Typelib, - Gac, - - Project - } - /// /// Summary description for Form2. /// @@ -49,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Gui private System.Windows.Forms.TabPage gacTabPage; private System.Windows.Forms.TabPage projectTabPage; private System.Windows.Forms.TabPage browserTabPage; - TabPage comTabPage = new TabPage(); + private System.Windows.Forms.TabPage comTabPage; private System.Windows.Forms.Label referencesLabel; private System.Windows.Forms.ColumnHeader referenceHeader; private System.Windows.Forms.ColumnHeader typeHeader; @@ -86,13 +63,25 @@ namespace ICSharpCode.SharpDevelop.Gui InitializeComponent(); + Translate(this); gacTabPage.Controls.Add(new GacReferencePanel(this)); projectTabPage.Controls.Add(new ProjectReferencePanel(this)); browserTabPage.Controls.Add(new AssemblyReferencePanel(this)); - comTabPage.Controls.Add(new COMReferencePanel(this)); } + void Translate(Control ctl) + { + ctl.Text = StringParser.Parse(ctl.Text); + foreach (Control c in ctl.Controls) + Translate(c); + if (ctl is ListView) { + foreach (ColumnHeader h in ((ListView)ctl).Columns) { + h.Text = StringParser.Parse(h.Text); + } + } + } + public void AddReference(string referenceName, string referenceType, string referenceLocation, ReferenceProjectItem projectItem) { if (projectItem == null) @@ -155,16 +144,17 @@ namespace ICSharpCode.SharpDevelop.Gui private void InitializeComponent() { this.referenceTabControl = new System.Windows.Forms.TabControl(); - this.referencesListView = new System.Windows.Forms.ListView(); - this.selectButton = new System.Windows.Forms.Button(); - this.removeButton = new System.Windows.Forms.Button(); this.gacTabPage = new System.Windows.Forms.TabPage(); this.projectTabPage = new System.Windows.Forms.TabPage(); this.browserTabPage = new System.Windows.Forms.TabPage(); - this.referencesLabel = new System.Windows.Forms.Label(); + this.comTabPage = new System.Windows.Forms.TabPage(); + this.referencesListView = new System.Windows.Forms.ListView(); this.referenceHeader = new System.Windows.Forms.ColumnHeader(); this.typeHeader = new System.Windows.Forms.ColumnHeader(); this.locationHeader = new System.Windows.Forms.ColumnHeader(); + this.selectButton = new System.Windows.Forms.Button(); + this.removeButton = new System.Windows.Forms.Button(); + this.referencesLabel = new System.Windows.Forms.Label(); this.okButton = new System.Windows.Forms.Button(); this.cancelButton = new System.Windows.Forms.Button(); this.helpButton = new System.Windows.Forms.Button(); @@ -173,150 +163,187 @@ namespace ICSharpCode.SharpDevelop.Gui // // referenceTabControl // - this.referenceTabControl.Controls.AddRange(new System.Windows.Forms.Control[] { - this.gacTabPage, - this.projectTabPage, - this.browserTabPage, - this.comTabPage - }); + this.referenceTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.referenceTabControl.Controls.Add(this.gacTabPage); + this.referenceTabControl.Controls.Add(this.projectTabPage); + this.referenceTabControl.Controls.Add(this.browserTabPage); + this.referenceTabControl.Controls.Add(this.comTabPage); this.referenceTabControl.Location = new System.Drawing.Point(8, 8); + this.referenceTabControl.Name = "referenceTabControl"; this.referenceTabControl.SelectedIndex = 0; this.referenceTabControl.Size = new System.Drawing.Size(472, 224); this.referenceTabControl.TabIndex = 0; - // - // referencesListView - // - this.referencesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.referenceHeader, - this.typeHeader, - this.locationHeader}); - this.referencesListView.Location = new System.Drawing.Point(8, 256); - this.referencesListView.Size = new System.Drawing.Size(472, 97); - this.referencesListView.TabIndex = 3; - this.referencesListView.View = System.Windows.Forms.View.Details; - this.referencesListView.FullRowSelect = true; - - - // - // selectButton - // - this.selectButton.Location = new System.Drawing.Point(488, 32); - this.selectButton.TabIndex = 1; - this.selectButton.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.SelectButton"); - this.selectButton.Click += new EventHandler(SelectReference); - this.selectButton.FlatStyle = FlatStyle.System; - - // - // removeButton - // - this.removeButton.Location = new System.Drawing.Point(488, 256); - this.removeButton.TabIndex = 4; - this.removeButton.Text = ResourceService.GetString("Global.RemoveButtonText"); - this.removeButton.Click += new EventHandler(RemoveReference); - this.removeButton.FlatStyle = FlatStyle.System; - // // gacTabPage // this.gacTabPage.Location = new System.Drawing.Point(4, 22); + this.gacTabPage.Name = "gacTabPage"; this.gacTabPage.Size = new System.Drawing.Size(464, 198); this.gacTabPage.TabIndex = 0; - this.gacTabPage.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.GacTabPage"); + this.gacTabPage.Text = "${res:Dialog.SelectReferenceDialog.GacTabPage}"; this.gacTabPage.UseVisualStyleBackColor = true; // // projectTabPage // this.projectTabPage.Location = new System.Drawing.Point(4, 22); + this.projectTabPage.Name = "projectTabPage"; this.projectTabPage.Size = new System.Drawing.Size(464, 198); this.projectTabPage.TabIndex = 1; - this.projectTabPage.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.ProjectTabPage"); + this.projectTabPage.Text = "${res:Dialog.SelectReferenceDialog.ProjectTabPage}"; this.projectTabPage.UseVisualStyleBackColor = true; // // browserTabPage // this.browserTabPage.Location = new System.Drawing.Point(4, 22); + this.browserTabPage.Name = "browserTabPage"; this.browserTabPage.Size = new System.Drawing.Size(464, 198); this.browserTabPage.TabIndex = 2; - this.browserTabPage.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.BrowserTabPage"); + this.browserTabPage.Text = "${res:Dialog.SelectReferenceDialog.BrowserTabPage}"; this.browserTabPage.UseVisualStyleBackColor = true; - + // + // comTabPage + // this.comTabPage.Location = new System.Drawing.Point(4, 22); + this.comTabPage.Name = "comTabPage"; this.comTabPage.Size = new System.Drawing.Size(464, 198); this.comTabPage.TabIndex = 2; this.comTabPage.Text = "COM"; this.comTabPage.UseVisualStyleBackColor = true; - - // - // referencesLabel // - this.referencesLabel.Location = new System.Drawing.Point(8, 240); - this.referencesLabel.Size = new System.Drawing.Size(472, 16); - this.referencesLabel.TabIndex = 2; - this.referencesLabel.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.ReferencesLabel"); + // referencesListView + // + this.referencesListView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.referencesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.referenceHeader, + this.typeHeader, + this.locationHeader}); + this.referencesListView.FullRowSelect = true; + this.referencesListView.Location = new System.Drawing.Point(8, 265); + this.referencesListView.Name = "referencesListView"; + this.referencesListView.Size = new System.Drawing.Size(472, 97); + this.referencesListView.TabIndex = 3; + this.referencesListView.UseCompatibleStateImageBehavior = false; + this.referencesListView.View = System.Windows.Forms.View.Details; // // referenceHeader // - this.referenceHeader.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.ReferenceHeader"); + this.referenceHeader.Text = "${res:Dialog.SelectReferenceDialog.ReferenceHeader}"; this.referenceHeader.Width = 183; // // typeHeader // - this.typeHeader.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.TypeHeader"); + this.typeHeader.Text = "${res:Dialog.SelectReferenceDialog.TypeHeader}"; this.typeHeader.Width = 57; // // locationHeader // - this.locationHeader.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.LocationHeader"); + this.locationHeader.Text = "${res:Dialog.SelectReferenceDialog.LocationHeader}"; this.locationHeader.Width = 228; // + // selectButton + // + this.selectButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.selectButton.Location = new System.Drawing.Point(488, 32); + this.selectButton.Name = "selectButton"; + this.selectButton.Size = new System.Drawing.Size(75, 23); + this.selectButton.TabIndex = 1; + this.selectButton.Text = "${res:Dialog.SelectReferenceDialog.SelectButton}"; + // + // removeButton + // + this.removeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.removeButton.Location = new System.Drawing.Point(488, 256); + this.removeButton.Name = "removeButton"; + this.removeButton.Size = new System.Drawing.Size(75, 23); + this.removeButton.TabIndex = 4; + this.removeButton.Text = "${res:Global.RemoveButtonText}"; + // + // referencesLabel + // + this.referencesLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.referencesLabel.Location = new System.Drawing.Point(8, 240); + this.referencesLabel.Name = "referencesLabel"; + this.referencesLabel.Size = new System.Drawing.Size(472, 16); + this.referencesLabel.TabIndex = 2; + this.referencesLabel.Text = "${res:Dialog.SelectReferenceDialog.ReferencesLabel}"; + // // okButton // + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK; - this.okButton.Location = new System.Drawing.Point(312, 368); + this.okButton.Location = new System.Drawing.Point(395, 368); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(75, 23); this.okButton.TabIndex = 5; - this.okButton.Text = ResourceService.GetString("Global.OKButtonText"); - this.okButton.Click += OkButtonClick; - + this.okButton.Text = "${res:Global.OKButtonText}"; // // cancelButton // + this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancelButton.Location = new System.Drawing.Point(400, 368); + this.cancelButton.Location = new System.Drawing.Point(483, 368); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(75, 23); this.cancelButton.TabIndex = 6; - this.cancelButton.Text = ResourceService.GetString("Global.CancelButtonText"); - this.cancelButton.FlatStyle = FlatStyle.System; - - // + this.cancelButton.Text = "${res:Global.CancelButtonText}"; + // // helpButton // - this.helpButton.Location = new System.Drawing.Point(488, 368); + this.helpButton.Location = new System.Drawing.Point(140, 368); + this.helpButton.Name = "helpButton"; + this.helpButton.Size = new System.Drawing.Size(75, 23); this.helpButton.TabIndex = 7; - this.helpButton.Text = ResourceService.GetString("Global.HelpButtonText"); - this.helpButton.FlatStyle = FlatStyle.System; - - // + this.helpButton.Text = "${res:Global.HelpButtonText}"; + this.helpButton.Visible = false; + // // SelectReferenceDialog // this.AcceptButton = this.okButton; -// this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.CancelButton = this.cancelButton; this.ClientSize = new System.Drawing.Size(570, 399); - this.Controls.AddRange(new System.Windows.Forms.Control[] { - this.helpButton, - this.cancelButton, - this.okButton, - this.referencesLabel, - this.removeButton, - this.selectButton, - this.referencesListView, - this.referenceTabControl}); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Controls.Add(this.helpButton); + this.Controls.Add(this.cancelButton); + this.Controls.Add(this.okButton); + this.Controls.Add(this.referencesLabel); + this.Controls.Add(this.removeButton); + this.Controls.Add(this.selectButton); + this.Controls.Add(this.referencesListView); + this.Controls.Add(this.referenceTabControl); this.MaximizeBox = false; this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(280, 350); + this.Name = "SelectReferenceDialog"; this.ShowInTaskbar = false; - this.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.DialogName"); + this.Text = "${res:Dialog.SelectReferenceDialog.DialogName}"; this.referenceTabControl.ResumeLayout(false); this.ResumeLayout(false); } } + + public interface IReferencePanel + { + void AddReference(); + } + + public interface ISelectReferenceDialog + { + /// + /// Project to create references for. + /// + IProject ConfigureProject { get; } + + void AddReference(string referenceName, string referenceType, string referenceLocation, ReferenceProjectItem projectItem); + } + + public enum ReferenceType { + Assembly, + Typelib, + Gac, + + Project + } } diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs index 088ff950c3..4079dea2af 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs @@ -105,18 +105,17 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser UpdateToolbars(); } - List pending = new List (); + List pending = new List(); // running on main thread, invoked by the parser thread when a compilation unit changed void UpdateThread() { lock (pending) { - foreach (ICompilationUnit[] units in pending) { - ICompilationUnit nonNullUnit = units[1] ?? units[0]; + foreach (ParseInformationEventArgs e in pending) { foreach (TreeNode node in classBrowserTreeView.Nodes) { AbstractProjectNode prjNode = node as AbstractProjectNode; - if (prjNode != null && prjNode.Project.IsFileInProject(nonNullUnit.FileName)) { - prjNode.UpdateParseInformation(units[0], units[1]); + if (e.ProjectContent.Project == prjNode.Project) { + prjNode.UpdateParseInformation(e.OldCompilationUnit, e.NewCompilationUnit); } } } @@ -127,7 +126,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser public void ParserServiceParseInformationUpdated(object sender, ParseInformationEventArgs e) { lock (pending) { - pending.Add(new ICompilationUnit[] { e.OldCompilationUnit, e.NewCompilationUnit}); + pending.Add(e); } WorkbenchSingleton.SafeThreadAsyncCall(UpdateThread); } diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ClassNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ClassNode.cs index 1f270a58a1..a7262dd665 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ClassNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ClassNode.cs @@ -33,7 +33,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser internal static string GetText(IClass c) { if (ICSharpCode.Core.PropertyService.Initialized) { - IAmbience ambience = AmbienceService.CurrentAmbience; + IAmbience ambience = c.ProjectContent.Language.GetAmbience(); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; return ambience.Convert(c); } else { 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 33906d6130..cf50918099 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 @@ -41,20 +41,20 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser if (oldUnit != null) { foreach (IClass c in oldUnit.Classes) { - classDictionary[c.FullyQualifiedName] = c.GetCompoundClass(); - wasUpdatedDictionary[c.FullyQualifiedName] = false; + classDictionary[c.DotNetName] = c.GetCompoundClass(); + wasUpdatedDictionary[c.DotNetName] = false; } } if (unit != null) { foreach (IClass c in unit.Classes) { TreeNode path = GetNodeByPath(c.Namespace, true); - ClassNode node = GetNodeByName(path.Nodes, c.Name) as ClassNode; + ClassNode node = GetNodeByClass(path.Nodes, c); if (node != null) { node.Class = c.GetCompoundClass(); } else { new ClassNode(Project, c.GetCompoundClass()).AddTo(path); } - wasUpdatedDictionary[c.FullyQualifiedName] = true; + wasUpdatedDictionary[c.DotNetName] = true; } } foreach (KeyValuePair entry in wasUpdatedDictionary) { @@ -62,7 +62,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser IClass c = classDictionary[entry.Key]; TreeNode path = GetNodeByPath(c.Namespace, true); - ClassNode node = GetNodeByName(path.Nodes, c.Name) as ClassNode; + ClassNode node = GetNodeByClass(path.Nodes, c); if (node != null) { CompoundClass cc = c as CompoundClass; @@ -99,7 +99,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 as ICompilationUnit); + InsertParseInformation(parseInformation.BestCompilationUnit); } } } @@ -109,7 +109,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser { foreach (IClass c in unit.Classes) { TreeNode path = GetNodeByPath(c.Namespace, true); - TreeNode node = GetNodeByName(path.Nodes, c.Name); + TreeNode node = GetNodeByClass(path.Nodes, c); if (node == null) { new ClassNode(Project, c.GetCompoundClass()).AddTo(path); } @@ -172,5 +172,18 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser } return null; } + + static ClassNode GetNodeByClass(TreeNodeCollection collection, IClass c) + { + string fullyQualifiedName = c.FullyQualifiedName; + foreach (TreeNode node in collection) { + ClassNode cn = node as ClassNode; + if (cn != null) { + if (fullyQualifiedName == cn.Class.FullyQualifiedName && c.TypeParameters.Count == cn.Class.TypeParameters.Count) + return cn; + } + } + return null; + } } } diff --git a/src/Main/Base/Project/Src/Project/AbstractProject.cs b/src/Main/Base/Project/Src/Project/AbstractProject.cs index 8f4b459a39..b4c97da900 100644 --- a/src/Main/Base/Project/Src/Project/AbstractProject.cs +++ b/src/Main/Base/Project/Src/Project/AbstractProject.cs @@ -159,7 +159,7 @@ namespace ICSharpCode.SharpDevelop.Project } #endregion - #region Language Properties / Ambience + #region Language Properties / GetAmbience [Browsable(false)] public virtual ICSharpCode.SharpDevelop.Dom.LanguageProperties LanguageProperties { get { @@ -167,11 +167,9 @@ namespace ICSharpCode.SharpDevelop.Project } } - [Browsable(false)] - public virtual ICSharpCode.SharpDevelop.Dom.IAmbience Ambience { - get { - return null; - } + public virtual ICSharpCode.SharpDevelop.Dom.IAmbience GetAmbience() + { + return null; } #endregion diff --git a/src/Main/Base/Project/Src/Project/IProject.cs b/src/Main/Base/Project/Src/Project/IProject.cs index 0ec6e77c99..837b41f398 100644 --- a/src/Main/Base/Project/Src/Project/IProject.cs +++ b/src/Main/Base/Project/Src/Project/IProject.cs @@ -68,10 +68,9 @@ namespace ICSharpCode.SharpDevelop.Project /// /// Gets the ambience used for the project. This member is thread-safe. + /// Because the IAmbience interface is not thread-safe, every call returns a new instance. /// - ICSharpCode.SharpDevelop.Dom.IAmbience Ambience { - get; - } + ICSharpCode.SharpDevelop.Dom.IAmbience GetAmbience(); /// /// Gets the name of the project file. diff --git a/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs b/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs deleted file mode 100644 index 266b2e5576..0000000000 --- a/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs +++ /dev/null @@ -1,97 +0,0 @@ -// -// -// -// -// $Revision$ -// - -using System; -using ICSharpCode.SharpDevelop.Dom; - -namespace ICSharpCode.SharpDevelop -{ - /// - /// This class wraps a ILanguageConversion to System.Reflection - /// - public class AmbienceReflectionDecorator : IAmbience - { - IAmbience conv; - - public ConversionFlags ConversionFlags { - get { - return conv.ConversionFlags; - } - set { - conv.ConversionFlags = value; - } - } - - public string Convert(IClass c) - { - return conv.Convert(c); - } - - public string ConvertEnd(IClass c) - { - return conv.ConvertEnd(c); - } - - public string Convert(IField field) - { - return conv.Convert(field); - } - - public string Convert(IProperty property) - { - return conv.Convert(property); - } - - public string Convert(IEvent e) - { - return conv.Convert(e); - } - - public string Convert(IMethod m) - { - return conv.Convert(m); - } - - public string ConvertEnd(IMethod m) - { - return conv.ConvertEnd(m); - } - - public string Convert(IParameter param) - { - return conv.Convert(param); - } - - public string Convert(IReturnType returnType) - { - return conv.Convert(returnType); - } - - public AmbienceReflectionDecorator(IAmbience conv) - { - if (conv == null) { - throw new System.ArgumentNullException("conv"); - } - this.conv = conv; - } - - public string WrapAttribute(string attribute) - { - return conv.WrapAttribute(attribute); - } - - public string WrapComment(string comment) - { - return conv.WrapComment(comment); - } - - public string GetIntrinsicTypeName(string dotNetTypeName) - { - return conv.GetIntrinsicTypeName(dotNetTypeName); - } - } -} diff --git a/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs b/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs index 7dd19a4284..d723f2dfc1 100644 --- a/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs +++ b/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs @@ -75,27 +75,22 @@ namespace ICSharpCode.SharpDevelop } } - static AmbienceReflectionDecorator defaultAmbience; + static IAmbience defaultAmbience; - public static AmbienceReflectionDecorator CurrentAmbience { + public static IAmbience CurrentAmbience { get { if (UseProjectAmbienceIfPossible) { ICSharpCode.SharpDevelop.Project.IProject p = ICSharpCode.SharpDevelop.Project.ProjectService.CurrentProject; if (p != null) { - IAmbience ambience = p.Ambience; - if (ambience != null) { - return new AmbienceReflectionDecorator(ambience); - } + return p.GetAmbience(); } } if (defaultAmbience == null) { string language = DefaultAmbienceName; - IAmbience ambience = (IAmbience)AddInTree.BuildItem("/SharpDevelop/Workbench/Ambiences/" + language, null); - if (ambience == null) { + defaultAmbience = (IAmbience)AddInTree.BuildItem("/SharpDevelop/Workbench/Ambiences/" + language, null); + if (defaultAmbience == null) { MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Services.AmbienceService.AmbienceNotFoundError}"); - return null; } - defaultAmbience = new AmbienceReflectionDecorator(ambience); } return defaultAmbience; } diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParseInformationEventHandler.cs b/src/Main/Base/Project/Src/Services/ParserService/ParseInformationEventHandler.cs index 355267ca51..2b21621062 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ParseInformationEventHandler.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ParseInformationEventHandler.cs @@ -15,36 +15,36 @@ namespace ICSharpCode.SharpDevelop public class ParseInformationEventArgs : EventArgs { string fileName; + IProjectContent projectContent; ICompilationUnit oldCompilationUnit; ICompilationUnit newCompilationUnit; public string FileName { - get { - return fileName; - } + get { return fileName; } + } + + public IProjectContent ProjectContent { + get { return projectContent; } } /// /// Gets the old compilation unit. /// public ICompilationUnit OldCompilationUnit { - get { - return oldCompilationUnit; - } + get { return oldCompilationUnit; } } /// /// The new compilation unit. /// public ICompilationUnit NewCompilationUnit { - get { - return newCompilationUnit; - } + get { return newCompilationUnit; } } - public ParseInformationEventArgs(string fileName, ICompilationUnit oldCompilationUnit, ICompilationUnit newCompilationUnit) + public ParseInformationEventArgs(string fileName, IProjectContent projectContent, ICompilationUnit oldCompilationUnit, ICompilationUnit newCompilationUnit) { this.fileName = fileName; + this.projectContent = projectContent; this.oldCompilationUnit = oldCompilationUnit; this.newCompilationUnit = newCompilationUnit; } diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs index 6054907128..c16c3d2b15 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs @@ -593,7 +593,7 @@ namespace ICSharpCode.SharpDevelop TaskService.UpdateCommentTags(fileName, parserOutput.TagComments); } try { - OnParseInformationUpdated(new ParseInformationEventArgs(fileName, oldUnit, parserOutput)); + OnParseInformationUpdated(new ParseInformationEventArgs(fileName, fileProjectContent, oldUnit, parserOutput)); } catch (Exception e) { MessageService.ShowError(e); } @@ -643,7 +643,8 @@ namespace ICSharpCode.SharpDevelop } /// - /// Registers a compilation unit in the parser service. Used by unit tests. + /// Registers a compilation unit in the parser service. + /// Does not fire the OnParseInformationUpdated event, please use this for unit tests only! /// public static ParseInformation RegisterParseInformation(string fileName, ICompilationUnit cu) { @@ -672,9 +673,14 @@ namespace ICSharpCode.SharpDevelop } ICompilationUnit oldUnit = parseInfo.MostRecentCompilationUnit; if (oldUnit != null) { - parseInfo.MostRecentCompilationUnit.ProjectContent.RemoveCompilationUnit(oldUnit); + IProjectContent pc = parseInfo.MostRecentCompilationUnit.ProjectContent; + pc.RemoveCompilationUnit(oldUnit); + try { + OnParseInformationUpdated(new ParseInformationEventArgs(fileName, pc, oldUnit, null)); + } catch (Exception e) { + MessageService.ShowError(e); + } } - OnParseInformationUpdated(new ParseInformationEventArgs(fileName, oldUnit, null)); } public static IExpressionFinder GetExpressionFinder(string fileName) diff --git a/src/Main/Base/Test/GenericResolverTests.cs b/src/Main/Base/Test/GenericResolverTests.cs index 1ef9daa6a3..78b40b0e9b 100644 --- a/src/Main/Base/Test/GenericResolverTests.cs +++ b/src/Main/Base/Test/GenericResolverTests.cs @@ -361,7 +361,7 @@ class D : Program { // overrides T - type arguments are identified by position } }"; - IAmbience ambience = Dom.CSharp.CSharpAmbience.Instance; + IAmbience ambience = new Dom.CSharp.CSharpAmbience(); ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowTypeParameterList; MemberResolveResult mrr; diff --git a/src/Main/Base/Test/Utils/MockProject.cs b/src/Main/Base/Test/Utils/MockProject.cs index 6992ab7253..8d8a8985a0 100644 --- a/src/Main/Base/Test/Utils/MockProject.cs +++ b/src/Main/Base/Test/Utils/MockProject.cs @@ -21,10 +21,9 @@ namespace ICSharpCode.SharpDevelop.Tests.Utils { } - public override IAmbience Ambience { - get { - return new MockAmbience(); - } + public override IAmbience GetAmbience() + { + return null; } } } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs index 58100b790e..468ae6e10b 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs @@ -105,6 +105,19 @@ namespace ICSharpCode.SharpDevelop.Dom public abstract class AbstractAmbience : IAmbience { + #if DEBUG + int ownerThread = System.Threading.Thread.CurrentThread.ManagedThreadId; + #endif + + [System.Diagnostics.Conditional("DEBUG")] + protected void CheckThread() + { + #if DEBUG + if (ownerThread != System.Threading.Thread.CurrentThread.ManagedThreadId) + throw new Exception("Ambience may only be used by the thread that created it"); + #endif + } + ConversionFlags conversionFlags = ConversionFlags.StandardConversionFlags; public ConversionFlags ConversionFlags { diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs index dc77c39820..e48ab4a864 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs @@ -19,12 +19,6 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp get { return ICSharpCode.NRefactory.Ast.TypeReference.PrimitiveTypesCSharpReverse; } } - static CSharpAmbience instance = new CSharpAmbience(); - - public static CSharpAmbience Instance { - get { return instance; } - } - bool ModifierIsSet(ModifierEnum modifier, ModifierEnum query) { return (modifier & query) == query; @@ -79,6 +73,8 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp public override string Convert(IClass c) { + CheckThread(); + StringBuilder builder = new StringBuilder(); builder.Append(ConvertAccessibility(c.Modifiers)); @@ -210,6 +206,8 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp public override string Convert(IField field) { + CheckThread(); + StringBuilder builder = new StringBuilder(); builder.Append(ConvertAccessibility(field.Modifiers)); @@ -266,6 +264,8 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp public override string Convert(IProperty property) { + CheckThread(); + StringBuilder builder = new StringBuilder(); builder.Append(ConvertAccessibility(property.Modifiers)); @@ -333,6 +333,8 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp public override string Convert(IEvent e) { + CheckThread(); + StringBuilder builder = new StringBuilder(); builder.Append(ConvertAccessibility(e.Modifiers)); @@ -371,6 +373,8 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp public override string Convert(IMethod m) { + CheckThread(); + StringBuilder builder = new StringBuilder(); builder.Append(ConvertAccessibility(m.Modifiers)); @@ -453,6 +457,8 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp public override string Convert(IReturnType returnType) { + CheckThread(); + if (returnType == null) { return String.Empty; } @@ -499,6 +505,8 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp public override string Convert(IParameter param) { + CheckThread(); + StringBuilder builder = new StringBuilder(); if (IncludeHtmlMarkup) { diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs index 56247c4162..d0654a9850 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs @@ -56,6 +56,15 @@ namespace ICSharpCode.SharpDevelop.Dom } } + /// + /// Gets the ambience for this language. Because the IAmbience interface is not thread-safe, every call + /// creates a new instance. + /// + public virtual IAmbience GetAmbience() + { + return new CSharp.CSharpAmbience(); + } + /// /// Gets the CodeDomProvider for this language. Can return null! /// @@ -375,6 +384,11 @@ namespace ICSharpCode.SharpDevelop.Dom } } + public override IAmbience GetAmbience() + { + return new VBNet.VBNetAmbience(); + } + public override string IndexerExpressionStartToken { get { return "("; } } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetAmbience.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetAmbience.cs index cfd94b0d51..8c429203af 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetAmbience.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetAmbience.cs @@ -18,12 +18,6 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet get { return ICSharpCode.NRefactory.Ast.TypeReference.PrimitiveTypesVBReverse; } } - static VBNetAmbience instance = new VBNetAmbience(); - - public static VBNetAmbience Instance { - get { return instance; } - } - string GetModifier(IEntity decoration) { StringBuilder builder = new StringBuilder(); @@ -78,6 +72,8 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet public override string Convert(IClass c) { + CheckThread(); + StringBuilder builder = new StringBuilder(); builder.Append(ConvertAccessibility(c.Modifiers)); @@ -241,6 +237,8 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet public override string Convert(IField field) { + CheckThread(); + if (field == null) throw new ArgumentNullException("field"); @@ -285,6 +283,8 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet public override string Convert(IProperty property) { + CheckThread(); + StringBuilder builder = new StringBuilder(); builder.Append(ConvertAccessibility(property.Modifiers)); @@ -348,6 +348,8 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet public override string Convert(IEvent e) { + CheckThread(); + if (e == null) throw new ArgumentNullException("e"); @@ -387,6 +389,8 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet public override string Convert(IMethod m) { + CheckThread(); + StringBuilder builder = new StringBuilder(); if (ShowModifiers && m.IsExtensionMethod) { builder.Append(" "); @@ -467,6 +471,8 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet public override string Convert(IReturnType returnType) { + CheckThread(); + if (returnType == null) { return String.Empty; } @@ -513,6 +519,8 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet public override string Convert(IParameter param) { + CheckThread(); + if (param == null) throw new ArgumentNullException("param");