private void Rename() { var progress = new ParsingProgressPresenter(); var result = progress.Parse(_parser, _vbe.ActiveVBProject); var designer = (dynamic)_vbe.SelectedVBComponent.Designer; foreach (var control in designer.Controls) { if (!control.InSelection) { continue; } var controlToRename = result.Declarations.Items .FirstOrDefault(item => item.IdentifierName == control.Name && item.ComponentName == _vbe.SelectedVBComponent.Name && _vbe.ActiveVBProject.Equals(item.Project)); using (var view = new RenameDialog()) { var factory = new RenamePresenterFactory(_vbe, view, result); var refactoring = new RenameRefactoring(factory); refactoring.Refactor(controlToRename); } } }
protected override void OnExecute(object parameter) { if (Vbe.ActiveCodePane == null) { return; } Declaration target; if (parameter != null) { target = parameter as Declaration; } else { target = _state.FindSelectedDeclaration(Vbe.ActiveCodePane); } if (target == null || !target.IsUserDefined) { return; } using (var view = new RenameDialog(new RenameViewModel(_state))) { var factory = new RenamePresenterFactory(Vbe, view, _state); var refactoring = new RenameRefactoring(Vbe, factory, _messageBox, _state); refactoring.Refactor(target); } }
protected override void OnExecute(object parameter) { Declaration target; using (var activePane = Vbe.ActiveCodePane) { if (activePane == null || activePane.IsWrappingNullReference) { return; } if (parameter != null) { target = parameter as Declaration; } else { target = _state.FindSelectedDeclaration(activePane); } } if (target == null || !target.IsUserDefined) { return; } using (var view = new RenameDialog(new RenameViewModel(_state))) { var factory = new RenamePresenterFactory(Vbe, view, _state); var refactoring = new RenameRefactoring(Vbe, factory, _messageBox, _state, _state.ProjectsProvider, _rewritingManager); refactoring.Refactor(target); } }
public void Rename_PresenterIsNull() { //Input const string inputCode = @"Private Sub Foo() End Sub"; IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component); var state = MockParser.CreateAndParse(vbe.Object); var codePaneMock = new Mock <ICodePane>(); codePaneMock.Setup(c => c.CodeModule).Returns(component.CodeModule); codePaneMock.Setup(c => c.Selection); vbe.Setup(v => v.ActiveCodePane).Returns(codePaneMock.Object); var vbeWrapper = vbe.Object; var factory = new RenamePresenterFactory(vbeWrapper, null, state, null); var refactoring = new RenameRefactoring(vbeWrapper, factory, null, state); refactoring.Refactor(); Assert.AreEqual(inputCode, component.CodeModule.Content()); }
protected override void ExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { return; } Declaration target; if (parameter != null) { target = parameter as Declaration; } else { target = _state.FindSelectedDeclaration(Vbe.ActiveCodePane); } if (target == null) { return; } using (var view = new RenameDialog()) { var factory = new RenamePresenterFactory(Vbe, view, _state, new MessageBox()); var refactoring = new RenameRefactoring(Vbe, factory, new MessageBox(), _state); refactoring.Refactor(target); } }
protected override void OnExecute(object parameter) { var factory = new RenamePresenterFactory(_vbe, _view, _state); var refactoring = new RenameRefactoring(_vbe, factory, _msgBox, _state); refactoring.Refactor(((ICodeExplorerDeclarationViewModel)parameter).Declaration); }
public void RenameRefactoring_InterfaceRenamed_AcceptPrompt() { //Input const string inputCode1 = @"Implements IClass1 Private Sub IClass1_DoSomething(ByVal a As Integer, ByVal b As String) End Sub"; const string inputCode2 = @"Public Sub DoSomething(ByVal a As Integer, ByVal b As String) End Sub"; var selection = new Selection(3, 27, 3, 27); //Expectation const string expectedCode1 = @"Implements IClass1 Private Sub IClass1_DoNothing(ByVal a As Integer, ByVal b As String) End Sub"; const string expectedCode2 = @"Public Sub DoNothing(ByVal a As Integer, ByVal b As String) End Sub"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected) .AddComponent("Class1", ComponentType.ClassModule, inputCode1) .AddComponent("IClass1", ComponentType.ClassModule, inputCode2) .Build(); var vbe = builder.AddProject(project).Build(); var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(project.Object.VBComponents[0]), selection); var module1 = project.Object.VBComponents[0].CodeModule; var module2 = project.Object.VBComponents[1].CodeModule; var messageBox = new Mock <IMessageBox>(); messageBox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>())) .Returns(DialogResult.Yes); var vbeWrapper = vbe.Object; var model = new RenameModel(vbeWrapper, state, qualifiedSelection, messageBox.Object) { NewName = "DoNothing" }; //SetupFactory var factory = SetupFactory(model); var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, messageBox.Object, state); refactoring.Refactor(model.Selection); Assert.AreEqual(expectedCode1, module1.Content()); Assert.AreEqual(expectedCode2, module2.Content()); }
public void RenameRefactoring_RenameLastPropertyParameter_UpdatesRelatedParametersWithSameName() { //Input const string inputCode = @"Property Get Foo(ByVal index As Integer) As Variant End Property Property Let Foo(ByVal index As Integer, ByVal value As Variant) Dim d As Variant d = value End Property Property Set Foo(ByVal index As Integer, ByVal fizz As Variant) Dim d As Variant d = fizz End Property"; var selection = new Selection(4, 50, 4, 50); //Expectation const string expectedCode = @"Property Get Foo(ByVal index As Integer) As Variant End Property Property Let Foo(ByVal index As Integer, ByVal renamed As Variant) Dim d As Variant d = renamed End Property Property Set Foo(ByVal index As Integer, ByVal fizz As Variant) Dim d As Variant d = fizz End Property"; IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); var msgbox = new Mock <IMessageBox>(); msgbox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>())) .Returns(DialogResult.Yes); var vbeWrapper = vbe.Object; var model = new RenameModel(vbeWrapper, state, qualifiedSelection, msgbox.Object) { NewName = "renamed" }; //SetupFactory var factory = SetupFactory(model); var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, msgbox.Object, state); refactoring.Refactor(qualifiedSelection); Assert.AreEqual(expectedCode, component.CodeModule.Content()); }
public FormDesignerRefactorRenameCommand(RenameRefactoring refactoring, RenameFailedNotifier renameFailedNotifier, IVBE vbe, RubberduckParserState state) : base(refactoring, renameFailedNotifier, state) { _state = state; _vbe = vbe; AddToCanExecuteEvaluation(SpecializedEvaluateCanExecute); }
//FIXME: why is this invalid on the parseddocuments loaded when the doc is first loaded? //maybe the item's type's SourceProject is null? public IEnumerable <IAnalysisFixAction> GetFixes(MonoDevelop.Ide.Gui.Document doc, object fix) { var renameFix = (RenameMemberFix)fix; var refactoring = new RenameRefactoring(); var options = new RefactoringOptions(doc) { SelectedItem = renameFix.Item, }; if (renameFix.Item == null) { ResolveResult resolveResult; options.SelectedItem = CurrentRefactoryOperationsHandler.GetItem(options.Document, out resolveResult); } if (!refactoring.IsValid(options)) { yield break; } var prop = new RenameRefactoring.RenameProperties() { NewName = renameFix.NewName, }; if (string.IsNullOrEmpty(renameFix.NewName)) { yield return(new RenameFixAction() { Label = GettextCatalog.GetString("Rename '{0}'...", renameFix.OldName), Refactoring = refactoring, Options = options, Properties = prop, Preview = false, }); yield break; } yield return(new RenameFixAction() { Label = GettextCatalog.GetString("Rename '{0}' to '{1}'", renameFix.OldName, renameFix.NewName), Refactoring = refactoring, Options = options, Properties = prop, Preview = false, }); yield return(new RenameFixAction() { Label = GettextCatalog.GetString("Rename '{0}' to '{1}' with preview", renameFix.OldName, renameFix.NewName), Refactoring = refactoring, Options = options, Properties = prop, Preview = true, }); }
public void RenameRefactoring_RenameEvent() { //Input const string inputCode1 = @"Public Event Foo(ByVal arg1 As Integer, ByVal arg2 As String)"; const string inputCode2 = @"Private WithEvents abc As Class1 Private Sub abc_Foo(ByVal i As Integer, ByVal s As String) End Sub"; var selection = new Selection(1, 16, 1, 16); //Expectation const string expectedCode1 = @"Public Event Goo(ByVal arg1 As Integer, ByVal arg2 As String)"; const string expectedCode2 = @"Private WithEvents abc As Class1 Private Sub abc_Goo(ByVal i As Integer, ByVal s As String) End Sub"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected) .AddComponent("Class1", ComponentType.ClassModule, inputCode1) .AddComponent("Class2", ComponentType.ClassModule, inputCode2) .Build(); var vbe = builder.AddProject(project).Build(); var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(project.Object.VBComponents[0]), selection); var module1 = project.Object.VBComponents[0].CodeModule; var module2 = project.Object.VBComponents[1].CodeModule; var msgbox = new Mock <IMessageBox>(); msgbox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>())) .Returns(DialogResult.Yes); var vbeWrapper = vbe.Object; var model = new RenameModel(vbeWrapper, state, qualifiedSelection, msgbox.Object) { NewName = "Goo" }; //SetupFactory var factory = SetupFactory(model); var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, msgbox.Object, state); refactoring.Refactor(qualifiedSelection); Assert.AreEqual(expectedCode1, module1.Content()); Assert.AreEqual(expectedCode2, module2.Content()); }
public override void Fix(IInspectionResult result) { using (var view = new RenameDialog(new RenameViewModel(_state))) { var factory = new RenamePresenterFactory(_vbe, view, _state); var refactoring = new RenameRefactoring(_vbe, factory, _messageBox, _state); refactoring.Refactor(result.Target); } }
//The rewriteSession is optional since it is not used in this particular quickfix because it is a refactoring quickfix. public override void Fix(IInspectionResult result, IRewriteSession rewriteSession = null) { using (var view = new RenameDialog(new RenameViewModel(_state))) { var factory = new RenamePresenterFactory(_vbe, view, _state); var refactoring = new RenameRefactoring(_vbe, factory, _messageBox, _state, _state.ProjectsProvider, _rewritingManager); refactoring.Refactor(result.Target); } }
public RenameDeclarationQuickFix(RenameRefactoring refactoring) : base(refactoring, typeof(HungarianNotationInspection), typeof(UseMeaningfulNameInspection), typeof(DefaultProjectNameInspection), typeof(UnderscoreInPublicClassModuleMemberInspection), typeof(ExcelUdfNameIsValidCellReferenceInspection)) { }
protected override void OnExecute(object parameter) { var refactoring = new RenameRefactoring(_factory, _msgBox, _state, _state.ProjectsProvider, RewritingManager, SelectionService); var target = GetTarget(); if (target != null) { refactoring.Refactor(target); } }
private void RenameProject() { var vbe = QualifiedSelection.QualifiedName.Project.VBE; using (var view = new RenameDialog()) { var factory = new RenamePresenterFactory(vbe, view, _parseResult); var refactoring = new RenameRefactoring(factory); refactoring.Refactor(Target); } }
public override void Fix() { var vbe = _target.Project.VBE; using (var view = new RenameDialog(new RenameViewModel(_state))) { var factory = new RenamePresenterFactory(vbe, view, _state, _messageBox); var refactoring = new RenameRefactoring(vbe, factory, _messageBox, _state); refactoring.Refactor(_target); IsCancelled = view.DialogResult == DialogResult.Cancel; } }
public void Rename(Declaration target) { var progress = new ParsingProgressPresenter(); var result = progress.Parse(_parser, IDE.ActiveVBProject); using (var view = new RenameDialog()) { var factory = new RenamePresenterFactory(IDE, view, result); var refactoring = new RenameRefactoring(factory); refactoring.Refactor(target); } }
public override void Fix() { var vbe = Selection.QualifiedName.Project.VBE; using (var view = new RenameDialog()) { var factory = new RenamePresenterFactory(vbe, view, _state, new MessageBox()); var refactoring = new RenameRefactoring(vbe, factory, new MessageBox(), _state); refactoring.Refactor(_target); IsCancelled = view.DialogResult == DialogResult.Cancel; } }
public void RenameRefactoring_RenameFunction_UpdatesReferences() { //Input const string inputCode = @"Private Function Foo() As Boolean Foo = True End Function Private Sub Goo() Dim var1 As Boolean var1 = Foo() End Sub "; var selection = new Selection(1, 21, 1, 21); //Expectation const string expectedCode = @"Private Function Hoo() As Boolean Hoo = True End Function Private Sub Goo() Dim var1 As Boolean var1 = Hoo() End Sub "; IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); var msgbox = new Mock <IMessageBox>(); msgbox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>())) .Returns(DialogResult.Yes); var vbeWrapper = vbe.Object; var model = new RenameModel(vbeWrapper, state, qualifiedSelection, msgbox.Object) { NewName = "Hoo" }; //SetupFactory var factory = SetupFactory(model); var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, msgbox.Object, state); refactoring.Refactor(qualifiedSelection); Assert.AreEqual(expectedCode, component.CodeModule.Content()); }
protected override void OnExecute(object parameter) { if (!EvaluateCanExecute(parameter) || !(parameter is CodeExplorerItemViewModel node) || node.Declaration == null) { return; } var refactoring = new RenameRefactoring(_factory, _msgBox, _state, _state.ProjectsProvider, _rewritingManager, _selectionService); refactoring.Refactor(node.Declaration); }
public CodePaneRefactorRenameCommand( RenameRefactoring refactoring, RenameFailedNotifier renameFailedNotifier, RubberduckParserState state, ISelectionProvider selectionProvider, ISelectedDeclarationProvider selectedDeclarationProvider) : base(refactoring, renameFailedNotifier, selectionProvider, state) { _state = state; _selectedDeclarationProvider = selectedDeclarationProvider; AddToCanExecuteEvaluation(SpecializedEvaluateCanExecute); }
public RenameCommand( RenameRefactoring refactoring, RenameFailedNotifier renameFailedNotifier, IParserStatusProvider parserStatusProvider, IVbeEvents vbeEvents) : base(vbeEvents) { _refactoring = refactoring; _failureNotifier = renameFailedNotifier; _parserStatusProvider = parserStatusProvider; AddToCanExecuteEvaluation(SpecialEvaluateCanExecute); }
protected override void OnExecute(object parameter) { using (var view = new RenameDialog(new RenameViewModel(_state))) { var factory = new RenamePresenterFactory(Vbe, view, _state); var refactoring = new RenameRefactoring(Vbe, factory, _msgBox, _state, _state.ProjectsProvider, _rewritingManager); var target = GetTarget(); if (target != null) { refactoring.Refactor(target); } } }
protected override void ExecuteImpl(object parameter) { using (var view = new RenameDialog(new RenameViewModel(_state))) { var factory = new RenamePresenterFactory(Vbe, view, _state, _messageBox); var refactoring = new RenameRefactoring(Vbe, factory, _messageBox, _state); var target = GetTarget(); if (target != null) { refactoring.Refactor(target); } } }
public override void Execute(object parameter) { using (var view = new RenameDialog()) { var factory = new RenamePresenterFactory(Vbe, view, _state, new MessageBox(), _wrapperWrapperFactory); var refactoring = new RenameRefactoring(factory, Editor, new MessageBox(), _state); var target = GetTarget(); if (target != null) { refactoring.Refactor(target); } } }
public override void Execute(object parameter) { using (var view = new RenameDialog()) { var factory = new RenamePresenterFactory(Vbe, view, _state, _msgBox); var refactoring = new RenameRefactoring(Vbe, factory, _msgBox, _state); var target = GetTarget(); if (target != null) { refactoring.Refactor(target); } } }
protected override void Update(RefactoringOptions options, CommandInfo info) { info.Enabled = true; /* * LoggingService.LogDebug ("-------------------------------"); * LoggingService.LogDebug (options.SelectedItem.GetType().ToString()); * LoggingService.LogDebug ("-------------------------------"); */ RenameRefactoring renameRefactoring = new RenameRefactoring(); if (!renameRefactoring.IsValid(options)) { LoggingService.LogDebug("inside if"); } }
private void Rename_Click(CommandBarButton Ctrl, ref bool CancelDefault) { VBProjectParseResult results; var declaration = FindSelectedDeclaration(out results); if (declaration == null) { return; } using (var view = new RenameDialog()) { var factory = new RenamePresenterFactory(_vbe, view, results); var refactoring = new RenameRefactoring(factory); refactoring.Refactor(declaration); } }
public void RenameRefactoring_RenameGetterAndLetter() { //Input const string inputCode = @"Private Property Get Foo() End Property Private Property Let Foo(ByVal arg1 As String) End Property"; var selection = new Selection(1, 25, 1, 25); //Expectation const string expectedCode = @"Private Property Get Goo() End Property Private Property Let Goo(ByVal arg1 As String) End Property"; IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); var msgbox = new Mock <IMessageBox>(); msgbox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>())) .Returns(DialogResult.Yes); var vbeWrapper = vbe.Object; var model = new RenameModel(vbeWrapper, state, qualifiedSelection, msgbox.Object) { NewName = "Goo" }; //SetupFactory var factory = SetupFactory(model); var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, msgbox.Object, state); refactoring.Refactor(qualifiedSelection); Assert.AreEqual(expectedCode, component.CodeModule.Content()); }
public override void Rename(RenameRefactoring executer, IProgressIndicator pi, bool hasConflictsWithDeclarations, IRefactoringDriver driver) { BuildDeclarations(); //Logger.Assert(myDeclarations.Count > 0, "myDeclarations.Count > 0"); IDeclaredElement declaredElement = myOriginalElementPointer.FindDeclaredElement(); if (declaredElement == null) { return; } IPsiServices psiServices = declaredElement.GetPsiServices(); IList<IReference> primaryReferences = executer.Workflow.GetElementReferences(PrimaryDeclaredElement); List<Pair<IDeclaredElement, IList<IReference>>> secondaryElementWithReferences = SecondaryDeclaredElements.Select(x => Pair.Of(x, executer.Workflow.GetElementReferences(x))).ToList(); pi.Start(myDeclarations.Count + primaryReferences.Count); foreach (IDeclaration declaration in myDeclarations) { InterruptableActivityCookie.CheckAndThrow(pi); declaration.SetName(myNewName); pi.Advance(); } psiServices.PsiManager.UpdateCaches(); IDeclaredElement newDeclaredElement = null; if (myDeclarations.Count > 0) { newDeclaredElement = myDeclarations[0].DeclaredElement; } Assertion.Assert(newDeclaredElement != null, "The condition (newDeclaredElement != null) is false."); myNewElementPointer = newDeclaredElement.CreateElementPointer(); Assertion.Assert(newDeclaredElement.IsValid(), "myNewDeclaredElement.IsValid()"); myNewReferences.Clear(); OneToSetMap<PsiLanguageType, IReference> references = LanguageUtil.SortReferences(primaryReferences.Where(x => x.IsValid())); IList<IReference> referencesToRename = new List<IReference>(); foreach (var pair in references) { List<IReference> sortedReferences = LanguageUtil.GetSortedReferences(pair.Value); foreach (IReference reference in sortedReferences) { IReference oldReferenceForConflict = reference; InterruptableActivityCookie.CheckAndThrow(pi); if (reference.IsValid()) // reference may invalidate during additional reference processing { RenameHelperBase rename = executer.Workflow.LanguageSpecific[reference.GetTreeNode().Language]; IReference reference1 = rename.TransformProjectedInitializer(reference); DeclaredElementInstance subst = GetSubst(newDeclaredElement, executer); IReference newReference; if (subst != null) { if (subst.Substitution.Domain.IsEmpty()) { newReference = reference1.BindTo(subst.Element); } else { newReference = reference1.BindTo(subst.Element, subst.Substitution); } } else { newReference = reference1.BindTo(newDeclaredElement); } if (!(newReference is IImplicitReference)) { IDeclaredElement element = newReference.Resolve().DeclaredElement; if (!hasConflictsWithDeclarations && !myDoNotShowBindingConflicts && (element == null || !element.Equals(newDeclaredElement)) && !rename.IsAlias(newDeclaredElement)) { driver.AddLateConflict(() => new Conflict(newReference.GetTreeNode().GetSolution(), "Usage {0} can not be updated correctly.", ConflictSeverity.Error, oldReferenceForConflict), "not bound"); } referencesToRename.Add(newReference); } myNewReferences.Insert(0, newReference); rename.AdditionalReferenceProcessing(newDeclaredElement, newReference, myNewReferences); } pi.Advance(); } } foreach (var pair in secondaryElementWithReferences) { IDeclaredElement element = pair.First; IList<IReference> secondaryReferences = pair.Second; foreach (IReference reference in secondaryReferences) { InterruptableActivityCookie.CheckAndThrow(pi); if (reference.IsValid()) { reference.BindTo(element); } } } }
private static DeclaredElementInstance GetSubst(IDeclaredElement element, RenameRefactoring executer) { return executer.Workflow.LanguageSpecific[element.PresentationLanguage].GetSubst(element); }