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);
        }
Example #2
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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();
        }