@ -2,6 +2,7 @@
@@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System ;
using System.Collections.Generic ;
using ICSharpCode.SharpDevelop ;
using ICSharpCode.SharpDevelop.Dom ;
using ICSharpCode.SharpDevelop.Dom.NRefactoryResolver ;
@ -31,10 +32,32 @@ namespace ICSharpCode.AspNet.Mvc.Completion
@@ -31,10 +32,32 @@ namespace ICSharpCode.AspNet.Mvc.Completion
ParseInformation CreateParseInformationWithWebViewPageClass ( ParseInformation parseInfo )
{
var compilationUnit = new DefaultCompilationUnit ( parseInfo . CompilationUnit . ProjectContent ) ;
AddDefaultUsings ( compilationUnit ) ;
AddWebViewPageClass ( compilationUnit ) ;
return new ParseInformation ( compilationUnit ) ;
}
void AddDefaultUsings ( ICompilationUnit compilationUnit )
{
AddUsing ( "System.Web.Mvc" , compilationUnit ) ;
AddUsing ( "System.Web.Mvc.Ajax" , compilationUnit ) ;
AddUsing ( "System.Web.Mvc.Html" , compilationUnit ) ;
AddUsing ( "System.Web.Routing" , compilationUnit ) ;
}
void AddUsing ( string name , ICompilationUnit compilationUnit )
{
DefaultUsing defaultUsing = CreateUsing ( name , compilationUnit . ProjectContent ) ;
compilationUnit . UsingScope . Usings . Add ( defaultUsing ) ;
}
DefaultUsing CreateUsing ( string namespaceName , IProjectContent projectContent )
{
var defaultUsing = new DefaultUsing ( projectContent ) ;
defaultUsing . Usings . Add ( namespaceName ) ;
return defaultUsing ;
}
void AddWebViewPageClass ( DefaultCompilationUnit compilationUnit )
{
DefaultClass webViewPageClass = CreateWebViewPageClass ( compilationUnit ) ;
@ -52,12 +75,20 @@ namespace ICSharpCode.AspNet.Mvc.Completion
@@ -52,12 +75,20 @@ namespace ICSharpCode.AspNet.Mvc.Completion
void AddWebViewPageBaseClass ( DefaultClass webViewPageClass )
{
IClass webViewPageBaseClass = webViewPageClass . ProjectContent . GetClass ( "System.Web.Mvc.WebViewPage" , 0 ) ;
IClass webViewPageBaseClass = webViewPageClass . ProjectContent . GetClass ( "System.Web.Mvc.WebViewPage" , 1 ) ;
if ( webViewPageBaseClass ! = null ) {
webViewPageClass . BaseTypes . Add ( webViewPageBaseClass . DefaultReturnType ) ;
IReturnType returnType = GetWebViewPageBaseClassReturnType ( webViewPageBaseClass ) ;
webViewPageClass . BaseTypes . Add ( returnType ) ;
}
}
IReturnType GetWebViewPageBaseClassReturnType ( IClass webViewPageBaseClass )
{
var typeArguments = new List < IReturnType > ( ) ;
typeArguments . Add ( new DynamicReturnType ( webViewPageBaseClass . ProjectContent ) ) ;
return new ConstructedReturnType ( webViewPageBaseClass . DefaultReturnType , typeArguments ) ;
}
DomRegion GetRegionInMiddleOfWebViewPageClass ( )
{
return new DomRegion ( 2 , 0 , 2 , 0 ) ;