From 6490c0c38b8aa24999239d68e9147eda5b1256e8 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 16 Jul 2005 19:28:57 +0000 Subject: [PATCH] Small improvements. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@189 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- data/resources/layouts/Debug.xml | Bin 16180 -> 17932 bytes data/resources/layouts/Default.xml | Bin 16174 -> 16896 bytes data/resources/layouts/Plain.xml | Bin 16162 -> 16876 bytes .../NUnitPad/Project/Src/Gui/TestTreeView.cs | 2 +- .../Visitors/VBNetToCSharpConvertVisitor.cs | 3 +- .../Src/Commands/ClassMemberMenuBuilder.cs | 60 ++++++++++++++++++ .../Pads/ProjectBrowser/ProjectBrowserPad.cs | 5 +- .../Project/Src/Services/File/FileService.cs | 12 ++-- .../Bookmarks/ClassMemberBookmark.cs | 30 +++++++++ .../AbstractPropertyCodeGenerator.cs | 2 +- .../Commands/CodeGenerators/CodeGenerator.cs | 9 +-- .../Gui/Editor/TextEditorDisplayBinding.cs | 12 +++- 12 files changed, 117 insertions(+), 18 deletions(-) diff --git a/data/resources/layouts/Debug.xml b/data/resources/layouts/Debug.xml index fe8344fd4b6002d4a396c6945588937384426a36..a70cec9d94bafc5f8f17fe2141f3f3fba08301a7 100644 GIT binary patch delta 580 zcmX|;&ubG=5XawZU=5+9`JHsL*(FVBl19^ZTgj%zphdBVm=+3c5EP?{M%1KQt(t?B zBEdrsg)j8rX~iFSkPum^B0WS8UhJjPKOm<-FQI=ya1xP;-{xbMIi=wQiqd6>#dY0(i51x$c8`_Go{&{& zw@kjso*{4jz%`=oDwo-FcAH|WC(JxCYjmnm#TP_gg>K2w0Lfm}&=M<_Ne&p-cXj@;{bQJj7@;*hR@r7w3rpHk6F9JN%dPX>jom9EyZh={(*gLPG>6c(jM~w98PaOJL0V%%>OMINBs2cTn&Grv(j=K{8 delta 382 zcmYLDOGv^10Nt#Hjc`lX$T@9JjUpIxQZ5)GRv;wdL84RCZJ<$vCy9_w5gw!$5)opT z=vXYOgNKOl*g-mWlJFRwqeEteyxaSiO62YSb=w9dLZf3#4uy#*A>+nAjiN+Zxq(-j zNf6szWQi?elh`G)SRT8F%B-W{xI>0Damv(@A2m^DA8_t8@izL1hRejD>k04ND%4>b zWyTJLt03(*(A1n()qO^y=GW1P^C-_~*b@Xuq7NMp4|a*drKq7i$zg5ckC!=A17go( z1XQFI9WTPTmGCu5=pG#@se+m){0m6=GvpjD{85}N_9iSz)<{sIj-vpNmh{`3_wq2j z{TLlQ=vF0>llAVG{!T13V#lEp$8*RDMU(KU$k+%uz|RZ#G72!mZL|dqMNPnm`twIT cUYN4@$Q6kdEr=aI+w-&&A`%KMU2Lrqo6=~475@z- z4XudNCEpHC(M50wrR5+Xh&Y5&9K=Z+Ty*HFIEsib9pv$T-`{(D`NHF~vtHkncH15! zMQO@XigNts=`2@&V^fCGc;ngd<|&5eu~RM0hl;m@tG;=>G<@hPMYlK5IF8itFANPY zpf2|ilgsD?x|j--@nPg0Zj6-ibM!r)j+UVXx8W%F1CvzcTBX~xM0Z)&Fza9J$9g9y zhdt$*F-0Z1MJsfN`yO|de{-xQdVn7Tuh=Kpw`^Xdhjf#-wg0XHyViKBa`Gd*khk1U z@K8ecf`*!ENqIEYY3yi%FHm6XVK`A6UsS!NNAWwV;JS7WmrNCZ*wP58xEvDr#QK~y zs;f9;^$+>*IV4L0-$bM}cExS$gC1DMHojUF%tvM*yb9{!xcfbll#Y&SS~-qY;5T*b z#*5fD8*tPD9P4Oy3nvZ+@$vj)_gTW0ASVRJgGf(7y2&s?I delta 397 zcmZ{gze@sP7{}i;ky9j3y-Z&3>eLX5et7xoxXGM?ni|4EthOVqq`^TVO2RRsFEolY zM+gT}4&l%s5he|d(IC$L3B3x9@qy?0^5Nlm;JLWs9?zR~OCUxxqLL&@kr+c`J;7>X zobhbA#GB$lTA*k|Y$#4WpybV>PpxLz`e}D%$O)rBj>rKyB?WBF>`exAS02^rC*%YJ z_pUZ7ZUe7E3k{EfsA$E|-A31IfcJJV5O>jc`w$mz%&33JaVj=av-nX$sI7ajPm_oS zG?eBAoByXY_9{V_)%ArXYx;(B| pHFVM$GqDe0TvEQr}IANJw5N+>32>yKenawV_A<;lF}5Tem*nQ$MMri zP>PbcmPe%&T5NG!hN5_Obm7x$w-#-61x8x~UycbJXbRTV8>p&@s&uwlv%4niX$Jm-KFPq-3_Ql@ R1+O7aDV#(jRIw2lZb*tX#Jw2Ln*q6Na1xZ zD9$3iQqZ9|mm>ZEhq@Oj4$j`X%LC_m;lO#}3@;|`>W?kK$P$mNkOFZ@mg8~f`OJ?q zo`o%hmPIUB5(=qgz$Feor{_RzkyQdcDZD{WI8|~)_DPLYVaK8<#_o{}@8USr!KUov zD*S?jh>r)kgGf>8^#hY5jKvAHpH%yCD0kw>RwBzsw6>-DEz|t^U7jbB0 z(3}#{wL_@u9!iFWC%$iS3#Nx5cZqw|)X?Jol0;maGWxm>nU+{NAqiM=O`MwXzvFa9 zXEF^6plc$U^C}uf4nI}}@6I{)tRforxV^z9lf585yfe^Qk!>%wg+!kJDEA+@O(igL K9k!EhMt%XXplizj diff --git a/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs index cf650654f2..ac07a81828 100644 --- a/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs +++ b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs @@ -223,7 +223,7 @@ namespace ICSharpCode.NUnitPad // If any tasks bring task view to front. if (TaskService.TaskCount > 0) { IWorkbench Workbench = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.Workbench; - PadDescriptor padDescriptor = Workbench.GetPad(typeof(OpenTaskView)); + PadDescriptor padDescriptor = Workbench.GetPad(typeof(ErrorList)); if (padDescriptor != null) { padDescriptor.BringPadToFront(); diff --git a/src/Libraries/NRefactory/Project/Src/Parser/Visitors/VBNetToCSharpConvertVisitor.cs b/src/Libraries/NRefactory/Project/Src/Parser/Visitors/VBNetToCSharpConvertVisitor.cs index b859fbced9..549d6f3c03 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/Visitors/VBNetToCSharpConvertVisitor.cs +++ b/src/Libraries/NRefactory/Project/Src/Parser/Visitors/VBNetToCSharpConvertVisitor.cs @@ -41,12 +41,13 @@ namespace ICSharpCode.NRefactory.Parser if (fre != null && "New".Equals(fre.FieldName, StringComparison.InvariantCultureIgnoreCase)) { if (fre.TargetObject is BaseReferenceExpression || fre.TargetObject is ClassReferenceExpression) { body.Children.RemoveAt(0); - ConstructorInitializer ci = constructorDeclaration.ConstructorInitializer; + ConstructorInitializer ci = new ConstructorInitializer(); ci.Arguments = ie.Parameters; if (fre.TargetObject is BaseReferenceExpression) ci.ConstructorInitializerType = ConstructorInitializerType.Base; else ci.ConstructorInitializerType = ConstructorInitializerType.This; + constructorDeclaration.ConstructorInitializer = ci; } } } diff --git a/src/Main/Base/Project/Src/Commands/ClassMemberMenuBuilder.cs b/src/Main/Base/Project/Src/Commands/ClassMemberMenuBuilder.cs index a49117e699..f097c04185 100644 --- a/src/Main/Base/Project/Src/Commands/ClassMemberMenuBuilder.cs +++ b/src/Main/Base/Project/Src/Commands/ClassMemberMenuBuilder.cs @@ -18,6 +18,7 @@ using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Gui; using SearchAndReplace; +using ICSharpCode.SharpDevelop.DefaultEditor.Commands; namespace ICSharpCode.SharpDevelop.Commands { @@ -54,9 +55,68 @@ namespace ICSharpCode.SharpDevelop.Commands cmd.Tag = member; list.Add(cmd); + if (member is IField) { + string propertyName = AbstractPropertyCodeGenerator.GetPropertyName(member.Name); + LanguageProperties language = member.DeclaringType.ProjectContent.Language; + bool found = false; + foreach (IProperty prop in member.DeclaringType.Properties) { + if (language.NameComparer.Equals(propertyName, prop.Name)) { + found = true; + break; + } + } + if (!found) { + cmd = new MenuCommand("Create &getter", CreateGetter); + cmd.Tag = member; + list.Add(cmd); + cmd = new MenuCommand("Create &property", CreateProperty); + cmd.Tag = member; + list.Add(cmd); + } + } + return list.ToArray(); } + TextEditorControl JumpBehindDefinition(IMember member) + { + IViewContent viewContent; + viewContent = FileService.JumpToFilePosition(member.DeclaringType.CompilationUnit.FileName, + member.Region.EndLine, 0); + ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.ITextEditorControlProvider tecp = viewContent as ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.ITextEditorControlProvider; + return (tecp == null) ? null : tecp.TextEditorControl; + } + + void CreateProperty(object sender, EventArgs e) + { + CreateProperty(sender, e, true); + } + + void CreateGetter(object sender, EventArgs e) + { + CreateProperty(sender, e, false); + } + + void CreateProperty(object sender, EventArgs e, bool includeSetter) + { + MenuCommand item = (MenuCommand)sender; + IMember member = (IMember)item.Tag; + TextEditorControl textEditor = JumpBehindDefinition(member); + AbstractPropertyCodeGenerator generator; + if (includeSetter) + generator = new GetterAndSetterCodeGenerator(member.DeclaringType); + else + generator = new GetterCodeGenerator(member.DeclaringType); + List list = new List(); + foreach (AbstractFieldCodeGenerator.FieldWrapper fw in generator.Content) { + if (fw.Field == member) { + list.Add(fw); + } + } + + generator.GenerateCode(textEditor.ActiveTextAreaControl.TextArea, list); + } + void GoToBase(object sender, EventArgs e) { MenuCommand item = (MenuCommand)sender; diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs index d05fd820be..b59bc12094 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs @@ -69,19 +69,22 @@ namespace ICSharpCode.SharpDevelop.Project projectBrowserPanel.Clear(); } + string lastFileName; + void ActiveWindowChanged(object sender, EventArgs e) { if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null) { return; } string fileName = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.FileName; - if (fileName == null) { + if (fileName == null || lastFileName == fileName) { return; } if (!FileUtility.IsValidFileName(fileName)) { return; } + lastFileName = fileName; projectBrowserPanel.SelectFile(fileName); } diff --git a/src/Main/Base/Project/Src/Services/File/FileService.cs b/src/Main/Base/Project/Src/Services/File/FileService.cs index 09b0ab6218..5f9cf9c936 100644 --- a/src/Main/Base/Project/Src/Services/File/FileService.cs +++ b/src/Main/Base/Project/Src/Services/File/FileService.cs @@ -1,4 +1,4 @@ -// +// // // // @@ -232,15 +232,15 @@ namespace ICSharpCode.Core OnFileRenamed(new FileRenameEventArgs(oldName, newName, isDirectory)); } - public static void JumpToFilePosition(string fileName, int line, int column) + public static IViewContent JumpToFilePosition(string fileName, int line, int column) { if (fileName == null || fileName.Length == 0) { - return; + return null; } OpenFile(fileName); IWorkbenchWindow window = GetOpenFile(fileName); if (window == null) { - return; + return null; } IViewContent content = window.ViewContent; if (content.WorkbenchWindow.SubViewContents == null) { @@ -248,6 +248,7 @@ namespace ICSharpCode.Core window.SwitchView(0); ((IPositionable)content).JumpTo(Math.Max(0, line), Math.Max(0, column)); } + return content; } else { @@ -261,6 +262,7 @@ namespace ICSharpCode.Core window.SwitchView(i); ((IPositionable)viewContent).JumpTo(Math.Max(0, line), Math.Max(0, column)); } + return viewContent; } } catch (Exception) { } @@ -268,7 +270,7 @@ namespace ICSharpCode.Core i++; } } - + return null; } static void OnFileRemoved(FileEventArgs e) diff --git a/src/Main/Base/Project/Src/TextEditor/Bookmarks/ClassMemberBookmark.cs b/src/Main/Base/Project/Src/TextEditor/Bookmarks/ClassMemberBookmark.cs index 98733fae67..6714e9d352 100644 --- a/src/Main/Base/Project/Src/TextEditor/Bookmarks/ClassMemberBookmark.cs +++ b/src/Main/Base/Project/Src/TextEditor/Bookmarks/ClassMemberBookmark.cs @@ -79,4 +79,34 @@ namespace ICSharpCode.SharpDevelop.Bookmarks DrawIcon(ClassBrowserIconService.GetIcon(method), g, p); } } + + public class FieldBookmark : ClassMemberBookmark + { + IField field; + + public FieldBookmark(IDocument document, IField field) : base(document, field) + { + this.field = field; + } + + public override void Draw(IconBarMargin margin, Graphics g, Point p) + { + DrawIcon(ClassBrowserIconService.GetIcon(field), g, p); + } + } + + public class EventBookmark : ClassMemberBookmark + { + IEvent @event; + + public EventBookmark(IDocument document, IEvent @event) : base(document, @event) + { + this.@event = @event; + } + + public override void Draw(IconBarMargin margin, Graphics g, Point p) + { + DrawIcon(ClassBrowserIconService.GetIcon(@event), g, p); + } + } } diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractPropertyCodeGenerator.cs b/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractPropertyCodeGenerator.cs index bfe855ed07..752b3ced64 100644 --- a/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractPropertyCodeGenerator.cs +++ b/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractPropertyCodeGenerator.cs @@ -27,7 +27,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands } } - string GetPropertyName(string fieldName) + public static string GetPropertyName(string fieldName) { if (fieldName.StartsWith("_") && fieldName.Length > 1) return Char.ToUpper(fieldName[1]) + fieldName.Substring(2); diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerator.cs b/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerator.cs index 2438fe6bae..c1a0177c51 100644 --- a/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerator.cs +++ b/src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerator.cs @@ -1,4 +1,4 @@ -// +// // // // @@ -142,12 +142,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands protected void IndentLine() { - int delta = editActionHandler.Document.FormattingStrategy.IndentLine(editActionHandler, editActionHandler.Document.GetLineNumberForOffset(editActionHandler.Caret.Offset)); - if (delta != 0) { - ++numOps; - LineSegment caretLine = editActionHandler.Document.GetLineSegmentForOffset(editActionHandler.Caret.Offset); - editActionHandler.Caret.Position = editActionHandler.Document.OffsetToPosition(Math.Min(editActionHandler.Caret.Offset + delta, caretLine.Offset + caretLine.Length)); - } + editActionHandler.Document.FormattingStrategy.IndentLine(editActionHandler, editActionHandler.Caret.Line); } } } diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs index ef4d4ee481..d02819b7c2 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs @@ -1,4 +1,4 @@ -// +// // // // @@ -443,8 +443,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor { try { textAreaControl.Document.FoldingManager.UpdateFoldings(TitleName, parseInfo); - textAreaControl.ActiveTextAreaControl.TextArea.Refresh(textAreaControl.ActiveTextAreaControl.TextArea.FoldMargin); UpdateClassMemberBookmarks(parseInfo); + textAreaControl.ActiveTextAreaControl.TextArea.Refresh(textAreaControl.ActiveTextAreaControl.TextArea.FoldMargin); } catch (Exception ex) { MessageService.ShowError(ex); } @@ -464,6 +464,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor if (m.Region == null || m.Region.BeginLine <= 0) continue; bm.AddMark(new Bookmarks.PropertyBookmark(textAreaControl.Document, m)); } + foreach (IField f in c.Fields) { + if (f.Region == null || f.Region.BeginLine <= 0) continue; + bm.AddMark(new Bookmarks.FieldBookmark(textAreaControl.Document, f)); + } + foreach (IEvent e in c.Events) { + if (e.Region == null || e.Region.BeginLine <= 0) continue; + bm.AddMark(new Bookmarks.EventBookmark(textAreaControl.Document, e)); + } } }