private void Generate() { String propertyName = this.entryName.Text; String propertyTypeName = this.entryType.Text; Document document = this.Options.Document; TextEditor editor = document.Editor.Parent; var loc = document.Editor.Caret.Location; var declaringType = document.ParsedDocument.GetInnermostTypeDefinition (loc); var type = this.Options.ResolveResult.Type; // Generate the code String indent = this.Options.GetIndent(type.GetDefinition()); String generatedCode = this.Generate (propertyName, propertyTypeName, indent); var mode = new InsertionCursorEditMode (editor, MonoDevelop.Ide.TypeSystem.CodeGenerationService.GetInsertionPoints (document, declaringType)); if (mode.InsertionPoints.Count == 0) { MessageService.ShowError (GettextCatalog.GetString ("No valid insertion point can be found in type '{0}'.", declaringType.Name)); return; } ModeHelpWindow helpWindow = new InsertionCursorLayoutModeHelpWindow (); //helpWindow.TransientFor = IdeApp.Workbench.RootWindow; helpWindow.TitleText = GettextCatalog.GetString ("Create Instance Variable"); mode.HelpWindow = helpWindow; mode.CurIndex = mode.InsertionPoints.Count - 1; mode.StartMode (); mode.Exited += delegate(object s, InsertionCursorEventArgs args) { if (args.Success) { args.InsertionPoint.Insert (document.Editor, generatedCode); } }; }
void CreateTestMethod(string className, string methodName) { var methodText = TestMethodTemplate.Replace("METHODNAME", "Test_" + methodName); var document = IdeApp.Workbench.ActiveDocument; var editor = document.Editor; var declaringType = MemberExtensionsHelper.Instance.GetDeclaringTypeWithName(className); if (declaringType == null) { return; } var mode = new InsertionCursorEditMode( editor.Parent, CodeGenerationService.GetInsertionPoints(document, declaringType)); if (mode.InsertionPoints.Count == 0) { MessageService.ShowError( GettextCatalog.GetString("No valid insertion point can be found in type '{0}'.", declaringType.Name) ); return; } var helpWindow = new Mono.TextEditor.PopupWindow.InsertionCursorLayoutModeHelpWindow(); // helpWindow.Window = MonoDevelop.Ide.IdeApp.Workbench.RootWindow; helpWindow.TitleText = "Insert test method"; mode.HelpWindow = helpWindow; mode.CurIndex = 0; mode.StartMode(); mode.Exited += delegate(object s, InsertionCursorEventArgs iCArgs) { if (iCArgs.Success) { iCArgs.InsertionPoint.Insert(document.Editor, methodText); editor.SetCaretTo(iCArgs.InsertionPoint.Location.Line, iCArgs.InsertionPoint.Location.Column, true, false); } }; }
internal static void InternalRun (RefactoringOptions options, bool implementExplicit) { IType interfaceType; if (!InternalIsValid (options, out interfaceType)) return; var loc = options.Document.Editor.Caret.Location; var declaringType = options.Document.ParsedDocument.GetInnermostTypeDefinition (loc); if (declaringType == null) return; var editor = options.GetTextEditorData ().Parent; var mode = new InsertionCursorEditMode ( editor, CodeGenerationService.GetInsertionPoints (options.Document, declaringType)); if (mode.InsertionPoints.Count == 0) { MessageService.ShowError ( GettextCatalog.GetString ("No valid insertion point can be found in type '{0}'.", declaringType.Name) ); return; } var helpWindow = new InsertionCursorLayoutModeHelpWindow (); helpWindow.TransientFor = IdeApp.Workbench.RootWindow; helpWindow.TitleText = GettextCatalog.GetString ("Implement Interface"); mode.HelpWindow = helpWindow; mode.CurIndex = mode.InsertionPoints.Count - 1; mode.StartMode (); mode.Exited += delegate(object s, InsertionCursorEventArgs args) { if (args.Success) { var generator = options.CreateCodeGenerator (); if (generator == null) return; var type = declaringType.Resolve (options.Document.ParsedDocument.GetTypeResolveContext (options.Document.Compilation, loc)).GetDefinition (); args.InsertionPoint.Insert (options.GetTextEditorData (), generator.CreateInterfaceImplementation (type, declaringType, interfaceType, implementExplicit)); } }; }