public override void Run(Document document, TextLocation loc)
        {
            var context = new MDRefactoringContext(document, loc);

            using (var script = context.StartScript())
                act.Run(script);
        }
Esempio n. 2
0
        protected IEnumerable <MonoDevelop.CodeActions.CodeAction> GetActions(MDRefactoringContext context)
        {
            if (context.IsInvalid)
            {
                yield break;
            }
            var type = GetTypeDeclaration(context);

            if (type == null)
            {
                yield break;
            }
            if (Path.GetFileNameWithoutExtension(context.Document.FileName) == type.Name)
            {
                yield break;
            }
            string title;

            if (IsSingleType(context))
            {
                title = String.Format(GettextCatalog.GetString("_Rename file to '{0}'"), Path.GetFileName(GetCorrectFileName(context, type)));
            }
            else
            {
                title = String.Format(GettextCatalog.GetString("_Move type to file '{0}'"), Path.GetFileName(GetCorrectFileName(context, type)));
            }
            yield return(new MonoDevelop.CodeActions.DefaultCodeAction(title, (d, l) => {
                var ctx = new MDRefactoringContext(d, l);
                string correctFileName = GetCorrectFileName(ctx, type);
                if (IsSingleType(ctx))
                {
                    FileService.RenameFile(ctx.Document.FileName, correctFileName);
                    if (ctx.Document.Project != null)
                    {
                        ctx.Document.Project.Save(new NullProgressMonitor());
                    }
                    return;
                }

                CreateNewFile(ctx, type, correctFileName);
                using (var script = ctx.StartScript()) {
                    script.Remove(type);
                }
            }));
        }