public void UpdateSignal(Stetic.Signal oldSignal, Stetic.Signal newSignal) { if (targetObject == null) { return; } if (oldSignal.Handler == newSignal.Handler) { return; } IType cls = GetClass(); if (cls == null) { return; } IMethod met = FindSignalHandler(cls, oldSignal); if (met == null) { return; } CodeRefactorer gen = GetCodeGenerator(); gen.RenameMember(new NullProgressMonitor(), cls, met, newSignal.Handler, RefactoryScope.File); }
/// Adds a signal handler to the class public void BindSignal(Stetic.Signal signal) { if (targetObject == null) { return; } var cls = GetClass(); if (cls == null) { return; } if (FindSignalHandler(cls, signal) != null) { return; } var met = SyntaxFactory.MethodDeclaration(SyntaxFactory.ParseTypeName(signal.SignalDescriptor.HandlerReturnTypeName), signal.Handler) .WithBody(SyntaxFactory.Block()) .AddModifiers(SyntaxFactory.Token(SyntaxKind.ProtectedKeyword)); var parameters = new List <ParameterSyntax> (); foreach (Stetic.ParameterDescriptor pinfo in signal.SignalDescriptor.HandlerParameters) { parameters.Add(SyntaxFactory.Parameter(new SyntaxList <AttributeListSyntax> (), new SyntaxTokenList(), SyntaxFactory.ParseTypeName(pinfo.TypeName), SyntaxFactory.Identifier(pinfo.Name), null)); } met = met.AddParameterListParameters(parameters.ToArray()); CodeGenerationService.AddNewMember(project, cls, GetSourceLocation(cls), met); }
public async Task UpdateSignal(Stetic.Signal oldSignal, Stetic.Signal newSignal) { if (targetObject == null) { return; } if (oldSignal.Handler == newSignal.Handler) { return; } var cls = GetClass(); if (cls == null) { return; } var met = FindSignalHandler(cls, oldSignal); if (met == null) { return; } await MonoDevelop.Refactoring.Rename.RenameRefactoring.Rename(met, newSignal.Handler); }
/// Adds a signal handler to the class public void BindSignal(Stetic.Signal signal) { if (targetObject == null) { return; } IType cls = GetClass(); if (cls == null) { return; } if (FindSignalHandler(cls, signal) != null) { return; } CodeMemberMethod met = new CodeMemberMethod(); met.Name = signal.Handler; met.Attributes = MemberAttributes.Family; met.ReturnType = new CodeTypeReference(signal.SignalDescriptor.HandlerReturnTypeName); foreach (Stetic.ParameterDescriptor pinfo in signal.SignalDescriptor.HandlerParameters) { met.Parameters.Add(new CodeParameterDeclarationExpression(pinfo.TypeName, pinfo.Name)); } CodeRefactorer gen = GetCodeGenerator(); gen.AddMember(cls, met); }
public void UpdateSignal(Stetic.Signal oldSignal, Stetic.Signal newSignal) { if (targetObject == null) { return; } if (oldSignal.Handler == newSignal.Handler) { return; } var cls = GetClass(); if (cls == null) { return; } IMethod met = FindSignalHandler(cls.Resolve(project), oldSignal); if (met == null) { return; } MonoDevelop.Refactoring.Rename.RenameRefactoring.Rename(met, newSignal.Handler); }
/// Adds a signal handler to the class public void BindSignal(Stetic.Signal signal) { if (targetObject == null) { return; } var cls = GetClass(); if (cls == null) { return; } if (FindSignalHandler(cls.Resolve(project), signal) != null) { return; } var met = new DefaultUnresolvedMethod(cls, signal.Handler) { Accessibility = Accessibility.Protected, ReturnType = ReflectionHelper.ParseReflectionName(signal.SignalDescriptor.HandlerReturnTypeName) }; foreach (Stetic.ParameterDescriptor pinfo in signal.SignalDescriptor.HandlerParameters) { met.Parameters.Add(new DefaultUnresolvedParameter(ReflectionHelper.ParseReflectionName(pinfo.TypeName), pinfo.Name)); } var resolvedCls = cls.Resolve(cls.ParsedFile.GetTypeResolveContext(TypeSystemService.GetCompilation(project), cls.Region.Begin)).GetDefinition(); CodeGenerationService.AddNewMember(resolvedCls, cls, met); }
void UpdateBindings(Stetic.Component obj, ITypeSymbol cls) { if (targetObject == null || cls == null) { return; } // Remove signals for which there isn't a handler in the class Stetic.SignalCollection objectSignals = obj.GetSignals(); if (objectSignals != null) { Stetic.Signal[] signals = new Stetic.Signal [objectSignals.Count]; objectSignals.CopyTo(signals, 0); foreach (Stetic.Signal signal in signals) { if (FindSignalHandler(cls, signal) == null) { obj.RemoveSignal(signal); } } } // Update children foreach (Stetic.Component ob in obj.GetChildren()) { UpdateBindings(ob, cls); } }
IMethod FindSignalHandler(IType cls, Stetic.Signal signal) { foreach (IMethod met in cls.Methods) { if (met.Name == signal.Handler) { return(met); } } return(null); }
public override void JumpToSignalHandler(Stetic.Signal signal) { var cls = codeBinder.GetClass(); var met = cls.GetMembers(signal.Handler).OfType <IMethodSymbol> ().FirstOrDefault(); if (met != null) { ShowPage(1); IdeApp.ProjectOperations.JumpToDeclaration(met); } }
public override void JumpToSignalHandler(Stetic.Signal signal) { var cls = codeBinder.GetClass(); var met = cls.GetMembers(signal.Handler).OfType <IMethodSymbol> ().FirstOrDefault(); if (met != null) { ShowPage(1); RefactoringService.RoslynJumpToDeclaration(met).Ignore(); } }
internal static void JumpToSignalHandler(Stetic.Signal signal) { if (IdeApp.Workbench.ActiveDocument != null) { CombinedDesignView view = IdeApp.Workbench.ActiveDocument.GetContent <CombinedDesignView> (); if (view != null) { view.JumpToSignalHandler(signal); } } }
public override void JumpToSignalHandler(Stetic.Signal signal) { IType cls = codeBinder.GetClass(); foreach (IMethod met in cls.Methods) { if (met.Name == signal.Handler) { ShowPage(1); JumpTo(met.Location.Line, met.Location.Column); break; } } }
public override void JumpToSignalHandler(Stetic.Signal signal) { var cls = codeBinder.GetClass(); foreach (var met in cls.Methods) { if (met.Name == signal.Handler) { ShowPage(1); JumpTo(met.Region.BeginLine, met.Region.BeginColumn); break; } } }
/// Adds a signal handler to the class public void BindSignal(Stetic.Signal signal) { if (targetObject == null) { return; } IType cls = GetClass(); if (cls == null) { return; } if (FindSignalHandler(cls, signal) != null) { return; } var met = new DomMethod() { Name = signal.Handler, Modifiers = Modifiers.Protected, ReturnType = new DomReturnType(signal.SignalDescriptor.HandlerReturnTypeName) }; foreach (Stetic.ParameterDescriptor pinfo in signal.SignalDescriptor.HandlerParameters) { met.Add(new DomParameter() { Name = pinfo.Name, ReturnType = new DomReturnType(pinfo.TypeName) }); } CodeGenerationService.AddNewMember(cls, met); }
public virtual void JumpToSignalHandler(Stetic.Signal signal) { }
void UpdateBindings (Stetic.Component obj, IType cls) { if (targetObject == null) return; // Remove signals for which there isn't a handler in the class Stetic.SignalCollection objectSignals = obj.GetSignals (); if (objectSignals != null) { Stetic.Signal[] signals = new Stetic.Signal [objectSignals.Count]; objectSignals.CopyTo (signals, 0); foreach (Stetic.Signal signal in signals) { if (FindSignalHandler (cls, signal) == null) { obj.RemoveSignal (signal); } } } // Update children foreach (Stetic.Component ob in obj.GetChildren ()) UpdateBindings (ob, cls); }
static IMethodSymbol FindSignalHandler(ITypeSymbol cls, Stetic.Signal signal) { return(cls.GetMembers(signal.Handler).OfType <IMethodSymbol> ().FirstOrDefault()); }