public override void Run(Document document, TextLocation loc) { var context = new MDRefactoringContext(document, loc); using (var script = context.StartScript()) act.Run(script); }
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); } })); }