From f2145433b6886a82165b87378e75ab084683fbbb Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 8 Dec 2006 17:45:10 +0000 Subject: [PATCH] Added warning for SD2-763: Resources not found with multiple types in source file git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2134 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Designer/BooDesignerLoader.cs | 3 ++- .../Src/DesignerLoader/NRefactoryDesignerLoader.cs | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) 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 ddd8c93173..24b461f495 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs @@ -111,7 +111,8 @@ namespace Grunwald.BooBinding.Designer Module mainModule = Parse(textEditorControl.FileName, lastTextContent); IClass formClass; - IList parts = NRefactoryDesignerLoader.FindFormClassParts(parseInfo, out formClass); + bool isFirstClassInFile; + IList parts = NRefactoryDesignerLoader.FindFormClassParts(parseInfo, out formClass, out isFirstClassInFile); IMethod initMethod = FormsDesignerSecondaryDisplayBinding.GetInitializeComponents(formClass); diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs index f760762f28..2402f92cf6 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs @@ -127,7 +127,7 @@ namespace ICSharpCode.FormsDesigner string lastTextContent; - public static IList FindFormClassParts(ParseInformation parseInfo, out IClass formClass) + public static IList FindFormClassParts(ParseInformation parseInfo, out IClass formClass, out bool isFirstClassInFile) { #if DEBUG if ((Control.ModifierKeys & (Keys.Alt | Keys.Control)) == (Keys.Alt | Keys.Control)) { @@ -136,11 +136,13 @@ namespace ICSharpCode.FormsDesigner #endif formClass = null; + isFirstClassInFile = true; foreach (IClass c in parseInfo.BestCompilationUnit.Classes) { if (FormsDesignerSecondaryDisplayBinding.BaseClassIsFormOrControl(c)) { formClass = c; break; } + isFirstClassInFile = false; } if (formClass == null) throw new FormsDesignerLoadException("No class derived from Form or UserControl was found."); @@ -170,7 +172,8 @@ namespace ICSharpCode.FormsDesigner ParseInformation parseInfo = ParserService.GetParseInformation(textEditorControl.FileName); IClass formClass; - IList parts = FindFormClassParts(parseInfo, out formClass); + bool isFirstClassInFile; + IList parts = FindFormClassParts(parseInfo, out formClass, out isFirstClassInFile); List> compilationUnits = new List>(); bool foundInitMethod = false; @@ -243,9 +246,16 @@ namespace ICSharpCode.FormsDesigner #endif LoggingService.Debug("NRefactoryDesignerLoader.Parse() finished"); + + if (!isFirstClassInFile) { + MessageService.ShowWarning("The form must be the first class in the file in order for form resources be compiled correctly.\n" + + "Please move other classes below the form class definition or move them to other files."); + } + return visitor.codeCompileUnit; } + /// /// Fix type names and remove unused methods. ///