コード例 #1
0
        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);
                }
            };
        }
コード例 #2
0
        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);
                }
            };
        }
コード例 #3
0
		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));
				}
			};
		}