public virtual string constructLinesOfProc(ICodeModuleWrapper codeModule, IExtractMethodModel model) { var newLine = Environment.NewLine; var method = model.Method; var keyword = Tokens.Sub; var asTypeClause = string.Empty; var selection = model.RowsToRemove; var access = method.Accessibility.ToString(); var extractedParams = method.Parameters.Select(p => ExtractedParameter.PassedBy.ByRef + " " + p.Name + " " + Tokens.As + " " + p.TypeName); var parameters = "(" + string.Join(", ", extractedParams) + ")"; //method signature var result = access + ' ' + keyword + ' ' + method.MethodName + parameters + ' ' + asTypeClause + newLine; // method body string textToMove = ""; foreach (var item in selection) { textToMove += codeModule.get_Lines(item.StartLine, item.EndLine - item.StartLine + 1); textToMove += Environment.NewLine; } // method end; result += textToMove; result += Tokens.End + " " + Tokens.Sub; return(result); }
public bool Show(IExtractMethodModel methodModel, IExtractMethodProc extractMethodProc) { PrepareView(methodModel, extractMethodProc); if (_view.ShowDialog() != DialogResult.OK) { return(false); } return(true); }
public void apply(ICodeModuleWrapper codeModule, IExtractMethodModel model, Selection selection) { var newMethodCall = model.Method.NewMethodCall(); var positionToInsertNewMethod = model.PositionForNewMethod; var positionForMethodCall = model.PositionForMethodCall; var selectionToRemove = model.RowsToRemove; // The next 4 lines are dependent on the positions of the various parts, // so have to be applied in the correct order. var newMethod = constructLinesOfProc(codeModule, model); codeModule.InsertLines(positionToInsertNewMethod.StartLine, newMethod); removeSelection(codeModule, selectionToRemove); codeModule.InsertLines(selection.StartLine, newMethodCall); }
private void GeneratePreview(IExtractMethodModel extractMethodModel, IExtractMethodProc extractMethodProc) { extractMethodModel.Method.MethodName = _view.MethodName; extractMethodModel.Method.Accessibility = _view.Accessibility; extractMethodModel.Method.Parameters = _view.Parameters; /* * extractMethodModel.Method.ReturnValue = _view.ReturnValue; * extractMethodModel.Method.SetReturnValue = _view.SetReturnValue; */ var extractedMethod = extractMethodProc.createProc(extractMethodModel); var code = extractedMethod.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); code = _indenter.Indent(code).ToArray(); _view.Preview = string.Join(Environment.NewLine, code); }
private void PrepareView(IExtractMethodModel extractedMethodModel, IExtractMethodProc extractMethodProc) { _view.OldMethodName = extractedMethodModel.SourceMember.IdentifierName; _view.MethodName = extractedMethodModel.SourceMember.IdentifierName + "_1"; _view.Inputs = extractedMethodModel.Inputs; _view.Outputs = extractedMethodModel.Outputs; _view.Locals = extractedMethodModel.Locals.Select( variable => new ExtractedParameter(variable.AsTypeName, ExtractedParameter.PassedBy.ByVal, variable.IdentifierName)) .ToList(); var returnValues = new[] { new ExtractedParameter(string.Empty, ExtractedParameter.PassedBy.ByVal) } .Union(_view.Outputs) .Union(_view.Inputs) .ToList(); _view.ReturnValues = returnValues; _view.RefreshPreview += (object sender, EventArgs e) => { GeneratePreview(extractedMethodModel, extractMethodProc); }; _view.OnRefreshPreview(); }