Exemple #1
0
        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);
        }
Exemple #2
0
        /// 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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        /// 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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        /// 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);
        }
Exemple #7
0
        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);
            }
        }
Exemple #8
0
 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);
            }
        }
Exemple #10
0
        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);
         }
     }
 }
Exemple #12
0
        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;
                }
            }
        }
Exemple #13
0
        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;
                }
            }
        }
Exemple #14
0
        /// 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);
        }
Exemple #15
0
 public virtual void JumpToSignalHandler(Stetic.Signal signal)
 {
 }
Exemple #16
0
		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);
		}
Exemple #17
0
 static IMethodSymbol FindSignalHandler(ITypeSymbol cls, Stetic.Signal signal)
 {
     return(cls.GetMembers(signal.Handler).OfType <IMethodSymbol> ().FirstOrDefault());
 }