@ -19,6 +19,7 @@
using System ;
using System ;
using System.Linq ;
using System.Linq ;
using System.Threading ;
using System.Threading ;
using System.Windows.Controls ;
using ICSharpCode.SharpDevelop ;
using ICSharpCode.SharpDevelop ;
using CSharpBinding.Parser ;
using CSharpBinding.Parser ;
using CSharpBinding.Refactoring ;
using CSharpBinding.Refactoring ;
@ -35,46 +36,27 @@ namespace CSharpBinding.Completion
/// </summary>
/// </summary>
class EventCreationCompletionData : CompletionData
class EventCreationCompletionData : CompletionData
{
{
IEvent eventDefinition ;
readonly string handlerName ;
string varName ;
readonly ITypeReference delegateTypeReference ;
IType delegateType ;
readonly bool isStatic ;
string parameterList ;
IUnresolvedMember callingMember ;
IUnresolvedTypeDefinition declaringType ;
CSharpResolver contextAtCaret ;
public EventCreationCompletionData ( string va rName, IType delegateType , IEvent evt , string parameterList , IUnresolvedMember callingMember , IUnresolvedTypeDefinition declaringType , CSharpResolver contextAtCaret )
public EventCreationCompletionData ( string handlerName , IType delegateType , IEvent evt , string parameterList , IUnresolvedMember callingMember , IUnresolvedTypeDefinition declaringType , CSharpResolver contextAtCaret )
{
{
if ( string . IsNullOrEmpty ( va rName) ) {
if ( string . IsNullOrEmpty ( handlerName ) ) {
this . DisplayText = "<Create handler for " + ( evt ! = null ? evt . Name : "" ) + ">" ;
handlerName = ( evt ! = null ? evt . Name : "Handle " ) ;
}
}
else {
this . handlerName = handlerName ;
this . DisplayText = "Handle" + char . ToUpper ( varName [ 0 ] ) + varName . Substring ( 1 ) + ( evt ! = null ? evt . Name : "" ) ;
this . DisplayText = "<Create " + handlerName + ">" ;
}
this . delegateTypeReference = delegateType . ToTypeReference ( ) ;
this . isStatic = callingMember ! = null & & callingMember . IsStatic ;
this . varName = varName ;
this . eventDefinition = evt ;
this . delegateType = delegateType ;
this . parameterList = parameterList ;
this . callingMember = callingMember ;
this . declaringType = declaringType ;
this . contextAtCaret = contextAtCaret ;
}
}
public override void Complete ( CompletionContext context )
public override void Complete ( CompletionContext context )
{
{
var invokeSignature = delegateType . GetMethods ( m = > m . Name = = "Invoke" ) . Single ( ) ;
var refactoringContext = SDRefactoringContext . Create ( context . Editor , CancellationToken . None ) ;
var refactoringContext = SDRefactoringContext . Create ( context . Editor , CancellationToken . None ) ;
var delegateType = delegateTypeReference . Resolve ( refactoringContext . Compilation ) ;
var invokeSignature = delegateType . GetMethods ( m = > m . Name = = "Invoke" ) . Single ( ) ;
var builder = refactoringContext . CreateTypeSystemAstBuilder ( ) ;
var builder = refactoringContext . CreateTypeSystemAstBuilder ( ) ;
string handlerName ;
bool isStatic ;
if ( eventDefinition ! = null ) {
handlerName = eventDefinition . Name ;
isStatic = eventDefinition . IsStatic ;
} else {
handlerName = varName ;
isStatic = callingMember . IsStatic ;
}
var throwStatement = new ThrowStatement ( ) ;
var throwStatement = new ThrowStatement ( ) ;
var decl = new MethodDeclaration {
var decl = new MethodDeclaration {