From 954260adb307ece395b3a23ddf863c597182e4e0 Mon Sep 17 00:00:00 2001 From: Hosch250 Date: Sun, 19 Jul 2015 23:29:30 -0500 Subject: [PATCH 1/6] Move cursor set out of finally to keep wait cursor from not turning off. Re: http://stackoverflow.com/questions/31118912/finally-is-not-executed-when-in-a-thread-running-in-a-windows-service --- .../CodeInspectionsDockablePresenter.cs | 10 ++++------ .../UI/ToDoItems/ToDoExplorerDockablePresenter.cs | 15 +++++---------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/RetailCoder.VBE/UI/CodeInspections/CodeInspectionsDockablePresenter.cs b/RetailCoder.VBE/UI/CodeInspections/CodeInspectionsDockablePresenter.cs index 22c1322ff0..f9c4f6d94a 100644 --- a/RetailCoder.VBE/UI/CodeInspections/CodeInspectionsDockablePresenter.cs +++ b/RetailCoder.VBE/UI/CodeInspections/CodeInspectionsDockablePresenter.cs @@ -191,12 +191,10 @@ private async void Refresh() catch (TaskCanceledException) { } - finally - { - Control.SetIssuesStatus(_issues, true); - Control.EnableRefresh(); - Control.Cursor = Cursors.Default; - } + + Control.SetIssuesStatus(_issues, true); + Control.EnableRefresh(); + Control.Cursor = Cursors.Default; } private async Task RefreshAsync(CancellationToken token) diff --git a/RetailCoder.VBE/UI/ToDoItems/ToDoExplorerDockablePresenter.cs b/RetailCoder.VBE/UI/ToDoItems/ToDoExplorerDockablePresenter.cs index 528bc9b33a..21b94cbb5e 100644 --- a/RetailCoder.VBE/UI/ToDoItems/ToDoExplorerDockablePresenter.cs +++ b/RetailCoder.VBE/UI/ToDoItems/ToDoExplorerDockablePresenter.cs @@ -48,16 +48,11 @@ public override void Show() public async void Refresh() { - try - { - Cursor.Current = Cursors.WaitCursor; - var results = await GetItems(); - _view.TodoItems = _gridViewSort.Sort(results, _gridViewSort.ColumnName, _gridViewSort.SortedAscending); - } - finally - { - Cursor.Current = Cursors.Default; - } + Cursor.Current = Cursors.WaitCursor; + var results = await GetItems(); + _view.TodoItems = _gridViewSort.Sort(results, _gridViewSort.ColumnName, _gridViewSort.SortedAscending); + + Cursor.Current = Cursors.Default; } private void RefreshToDoList(object sender, EventArgs e) From 9f143ff7b9e2394f0655f5eef269afde2786033a Mon Sep 17 00:00:00 2001 From: Hosch250 Date: Sun, 19 Jul 2015 23:31:34 -0500 Subject: [PATCH 2/6] Remove utterly unnecessary catch --- .../CodeInspectionsDockablePresenter.cs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/RetailCoder.VBE/UI/CodeInspections/CodeInspectionsDockablePresenter.cs b/RetailCoder.VBE/UI/CodeInspections/CodeInspectionsDockablePresenter.cs index f9c4f6d94a..18939d118d 100644 --- a/RetailCoder.VBE/UI/CodeInspections/CodeInspectionsDockablePresenter.cs +++ b/RetailCoder.VBE/UI/CodeInspections/CodeInspectionsDockablePresenter.cs @@ -176,20 +176,14 @@ private async void Refresh() Control.EnableRefresh(false); Control.Cursor = Cursors.WaitCursor; - try + await Task.Run(() => RefreshAsync(token), token); + if (_results != null) { - await Task.Run(() => RefreshAsync(token), token); - if (_results != null) - { - var results = _results.Select(item => new CodeInspectionResultGridViewItem(item)); + var results = _results.Select(item => new CodeInspectionResultGridViewItem(item)); - Control.SetContent(new BindingList( - _gridViewSort.Sort(results, _gridViewSort.ColumnName, - _gridViewSort.SortedAscending).ToList())); - } - } - catch (TaskCanceledException) - { + Control.SetContent(new BindingList( + _gridViewSort.Sort(results, _gridViewSort.ColumnName, + _gridViewSort.SortedAscending).ToList())); } Control.SetIssuesStatus(_issues, true); From 0ceceed4fa4ad658bf59403e6875ace702a59553 Mon Sep 17 00:00:00 2001 From: Hosch250 Date: Tue, 21 Jul 2015 20:41:43 -0500 Subject: [PATCH 3/6] Create FindAllImplementations class and interface. Rename IMessageBox to IRubberduckMessageBox to fool Ninject. --- RetailCoder.VBE/App.cs | 17 +- .../FindAllImplementations.cs | 161 ++++++++++++++++++ .../IFindAllImplementations.cs | 12 ++ .../RemoveParameters/RemoveParametersModel.cs | 4 +- .../RemoveParametersPresenter.cs | 4 +- .../RemoveParametersPresenterFactory.cs | 4 +- .../Refactorings/Rename/RenameModel.cs | 4 +- .../Rename/RenamePresenterFactory.cs | 4 +- .../Refactorings/Rename/RenameRefactoring.cs | 4 +- .../ReorderParametersModel.cs | 4 +- .../ReorderParametersPresenter.cs | 4 +- .../ReorderParametersPresenterFactory.cs | 4 +- .../ReorderParametersRefactoring.cs | 4 +- RetailCoder.VBE/Rubberduck.csproj | 4 +- ...MessageBox.cs => IRubberduckMessageBox.cs} | 4 +- RetailCoder.VBE/UI/RefactorMenu.cs | 137 +-------------- RetailCoder.VBE/UI/RubberduckMenu.cs | 9 +- .../Refactoring/RemoveParametersTests.cs | 6 +- RubberduckTests/Refactoring/RenameTests.cs | 8 +- .../Refactoring/ReorderParametersTests.cs | 16 +- 20 files changed, 234 insertions(+), 180 deletions(-) create mode 100644 RetailCoder.VBE/FindAllImplementations/FindAllImplementations.cs create mode 100644 RetailCoder.VBE/FindAllImplementations/IFindAllImplementations.cs rename RetailCoder.VBE/UI/{IMessageBox.cs => IRubberduckMessageBox.cs} (98%) diff --git a/RetailCoder.VBE/App.cs b/RetailCoder.VBE/App.cs index ddc3b6de98..2cf56801d1 100644 --- a/RetailCoder.VBE/App.cs +++ b/RetailCoder.VBE/App.cs @@ -3,6 +3,7 @@ using System.Globalization; using System.Windows.Forms; using Microsoft.Vbe.Interop; +using Rubberduck.FindAllImplementations; using Rubberduck.Inspections; using Rubberduck.Parsing; using Rubberduck.Parsing.VBA; @@ -23,8 +24,9 @@ public class App : IDisposable private IParserErrorsPresenter _parserErrorsPresenter; private readonly IConfigurationLoader _configService = new ConfigurationLoader(); private readonly IActiveCodePaneEditor _editor; - private readonly IRubberduckCodePaneFactory _factory; + private readonly IRubberduckCodePaneFactory _codePaneFactory; private readonly IRubberduckParser _parser; + private readonly IFindAllImplementations _findAllImplementations; private Configuration _config; private RubberduckMenu _menu; @@ -33,12 +35,13 @@ public class App : IDisposable private bool _displayToolbar = false; private Point _toolbarCoords = new Point(-1, -1); - public App(VBE vbe, AddIn addIn, IParserErrorsPresenter presenter, IRubberduckParser parser, IRubberduckCodePaneFactory factory, IActiveCodePaneEditor editor) + public App(VBE vbe, AddIn addIn, IParserErrorsPresenter presenter, IRubberduckParser parser, IRubberduckCodePaneFactory factory, IActiveCodePaneEditor editor, IFindAllImplementations findAllImplementations) { _vbe = vbe; _addIn = addIn; - _factory = factory; + _codePaneFactory = factory; _parser = parser; + _findAllImplementations = findAllImplementations; _parserErrorsPresenter = presenter; _configService.SettingsChanged += _configService_SettingsChanged; @@ -47,7 +50,7 @@ public App(VBE vbe, AddIn addIn, IParserErrorsPresenter presenter, IRubberduckPa // could it be that the VBE type in the two assemblies is actually different? // aren't the two assemblies using the exact same Microsoft.Vbe.Interop assemby? - _editor = editor; // */ new ActiveCodePaneEditor(vbe, _factory); + _editor = editor; // */ new ActiveCodePaneEditor(vbe, _codePaneFactory); LoadConfig(); @@ -84,7 +87,7 @@ private void LoadConfig() private void Setup() { - //_parser = new RubberduckParser(_factory); + //_parser = new RubberduckParser(_codePaneFactory); _parser.ParseStarted += _parser_ParseStarted; _parser.ParserError += _parser_ParserError; @@ -92,10 +95,10 @@ private void Setup() _parserErrorsPresenter = new ParserErrorsPresenter(_vbe, _addIn); - _menu = new RubberduckMenu(_vbe, _addIn, _configService, _parser, _editor, _inspector, _factory); + _menu = new RubberduckMenu(_vbe, _addIn, _configService, _parser, _editor, _inspector, _findAllImplementations, _codePaneFactory); _menu.Initialize(); - _formContextMenu = new FormContextMenu(_vbe, _parser, _editor, _factory); + _formContextMenu = new FormContextMenu(_vbe, _parser, _editor, _codePaneFactory); _formContextMenu.Initialize(); _codeInspectionsToolbar = new CodeInspectionsToolbar(_vbe, _inspector); diff --git a/RetailCoder.VBE/FindAllImplementations/FindAllImplementations.cs b/RetailCoder.VBE/FindAllImplementations/FindAllImplementations.cs new file mode 100644 index 0000000000..acd5035525 --- /dev/null +++ b/RetailCoder.VBE/FindAllImplementations/FindAllImplementations.cs @@ -0,0 +1,161 @@ +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Windows.Forms; +using Microsoft.Vbe.Interop; +using Rubberduck.Parsing; +using Rubberduck.Parsing.Grammar; +using Rubberduck.Parsing.Symbols; +using Rubberduck.UI; +using Rubberduck.UI.IdentifierReferences; +using Rubberduck.VBEditor; +using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; + +namespace Rubberduck.FindAllImplementations +{ + public class FindAllImplementations : IFindAllImplementations + { + private readonly VBE _vbe; + private readonly AddIn _addIn; + private readonly IRubberduckParser _parser; + private readonly IRubberduckCodePaneFactory _codePaneFactory; + private readonly IRubberduckMessageBox _messageBox; + + public FindAllImplementations(VBE vbe, AddIn addIn, IRubberduckParser parser, IRubberduckCodePaneFactory codePaneFactory, IRubberduckMessageBox messageBox) + { + _vbe = vbe; + _addIn = addIn; + _parser = parser; + _codePaneFactory = codePaneFactory; + _messageBox = messageBox; + } + + public void Find() + { + var codePane = _codePaneFactory.Create(_vbe.ActiveCodePane); + var selection = new QualifiedSelection(new QualifiedModuleName(codePane.CodeModule.Parent), codePane.Selection); + var progress = new ParsingProgressPresenter(); + var parseResult = progress.Parse(_parser, _vbe.ActiveVBProject); + + var implementsStatement = parseResult.Declarations.FindInterfaces() + .SelectMany(i => i.References.Where(reference => reference.Context.Parent is VBAParser.ImplementsStmtContext)) + .SingleOrDefault(r => r.QualifiedModuleName == selection.QualifiedName && r.Selection.Contains(selection.Selection)); + + if (implementsStatement != null) + { + Find(implementsStatement.Declaration, parseResult); + } + + var member = parseResult.Declarations.FindInterfaceImplementationMembers() + .SingleOrDefault(m => m.Project == selection.QualifiedName.Project + && m.ComponentName == selection.QualifiedName.ComponentName + && m.Selection.Contains(selection.Selection)) ?? + parseResult.Declarations.FindInterfaceMembers() + .SingleOrDefault(m => m.Project == selection.QualifiedName.Project + && m.ComponentName == selection.QualifiedName.ComponentName + && m.Selection.Contains(selection.Selection)); + + if (member == null) + { + return; + } + + Find(member, parseResult); + } + + public void Find(Declaration target) + { + var progress = new ParsingProgressPresenter(); + var parseResult = progress.Parse(_parser, _vbe.ActiveVBProject); + Find(target, parseResult); + } + + public void Find(Declaration target, VBProjectParseResult parseResult) + { + string name; + var implementations = (target.DeclarationType == DeclarationType.Class + ? FindAllImplementationsOfClass(target, parseResult, out name) + : FindAllImplementationsOfMember(target, parseResult, out name)) ?? + new List(); + + var declarations = implementations as IList ?? implementations.ToList(); + var implementationsCount = declarations.Count(); + + if (implementationsCount == 1) + { + // if there's only 1 implementation, just jump to it: + ImplementationsListDockablePresenter.OnNavigateImplementation(_vbe, declarations.First()); + } + else if (implementationsCount > 1) + { + // if there's more than one implementation, show the dockable navigation window: + try + { + ShowImplementationsToolwindow(declarations, name); + } + catch (COMException) + { + // the exception is related to the docked control host instance, + // trying again will work (I know, that's bad bad bad code) + ShowImplementationsToolwindow(declarations, name); + } + } + else + { + var message = string.Format(RubberduckUI.AllImplementations_NoneFound, name); + var caption = string.Format(RubberduckUI.AllImplementations_Caption, name); + _messageBox.Show(message, caption, MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + + private IEnumerable FindAllImplementationsOfClass(Declaration target, VBProjectParseResult parseResult, out string name) + { + if (target.DeclarationType != DeclarationType.Class) + { + name = string.Empty; + return null; + } + + var result = target.References + .Where(reference => reference.Context.Parent is VBAParser.ImplementsStmtContext) + .SelectMany(reference => parseResult.Declarations[reference.QualifiedModuleName.ComponentName]) + .ToList(); + + name = target.ComponentName; + return result; + } + + private IEnumerable FindAllImplementationsOfMember(Declaration target, VBProjectParseResult parseResult, out string name) + { + if (!target.DeclarationType.HasFlag(DeclarationType.Member)) + { + name = string.Empty; + return null; + } + + var isInterface = parseResult.Declarations.FindInterfaces() + .Select(i => i.QualifiedName.QualifiedModuleName.ToString()) + .Contains(target.QualifiedName.QualifiedModuleName.ToString()); + + if (isInterface) + { + name = target.ComponentName + "." + target.IdentifierName; + return parseResult.Declarations.FindInterfaceImplementationMembers(target.IdentifierName) + .Where(item => item.IdentifierName == target.ComponentName + "_" + target.IdentifierName); + } + + var member = parseResult.Declarations.FindInterfaceMember(target); + name = member.ComponentName + "." + member.IdentifierName; + return parseResult.Declarations.FindInterfaceImplementationMembers(member.IdentifierName) + .Where(item => item.IdentifierName == member.ComponentName + "_" + member.IdentifierName); + } + + private void ShowImplementationsToolwindow(IEnumerable implementations, string name) + { + // throws a COMException if toolwindow was already closed + var window = new SimpleListControl(string.Format(RubberduckUI.AllImplementations_Caption, name)); + var presenter = new ImplementationsListDockablePresenter(_vbe, _addIn, window, implementations, _codePaneFactory); + presenter.Show(); + } + } +} \ No newline at end of file diff --git a/RetailCoder.VBE/FindAllImplementations/IFindAllImplementations.cs b/RetailCoder.VBE/FindAllImplementations/IFindAllImplementations.cs new file mode 100644 index 0000000000..d4b7aefc17 --- /dev/null +++ b/RetailCoder.VBE/FindAllImplementations/IFindAllImplementations.cs @@ -0,0 +1,12 @@ +using Rubberduck.Parsing; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.FindAllImplementations +{ + public interface IFindAllImplementations + { + void Find(); + void Find(Declaration target); + void Find(Declaration target, VBProjectParseResult parseResult); + } +} \ No newline at end of file diff --git a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersModel.cs b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersModel.cs index bdf808d698..a9c647f596 100644 --- a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersModel.cs +++ b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersModel.cs @@ -19,9 +19,9 @@ public class RemoveParametersModel public Declaration TargetDeclaration { get; private set; } public List Parameters { get; set; } - private readonly IMessageBox _messageBox; + private readonly IRubberduckMessageBox _messageBox; - public RemoveParametersModel(VBProjectParseResult parseResult, QualifiedSelection selection, IMessageBox messageBox) + public RemoveParametersModel(VBProjectParseResult parseResult, QualifiedSelection selection, IRubberduckMessageBox messageBox) { _parseResult = parseResult; _declarations = parseResult.Declarations; diff --git a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs index 08a27bdf08..38b29d3a46 100644 --- a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs +++ b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs @@ -12,9 +12,9 @@ public class RemoveParametersPresenter : IRemoveParametersPresenter { private readonly IRemoveParametersView _view; private readonly RemoveParametersModel _model; - private readonly IMessageBox _messageBox; + private readonly IRubberduckMessageBox _messageBox; - public RemoveParametersPresenter(IRemoveParametersView view, RemoveParametersModel model, IMessageBox messageBox) + public RemoveParametersPresenter(IRemoveParametersView view, RemoveParametersModel model, IRubberduckMessageBox messageBox) { _view = view; _model = model; diff --git a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs index f92f509362..9f985af8e9 100644 --- a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs @@ -9,10 +9,10 @@ public class RemoveParametersPresenterFactory : IRefactoringPresenterFactory _factory; private readonly IActiveCodePaneEditor _editor; - private readonly IMessageBox _messageBox; + private readonly IRubberduckMessageBox _messageBox; private RenameModel _model; - public RenameRefactoring(IRefactoringPresenterFactory factory, IActiveCodePaneEditor editor, IMessageBox messageBox) + public RenameRefactoring(IRefactoringPresenterFactory factory, IActiveCodePaneEditor editor, IRubberduckMessageBox messageBox) { _factory = factory; _editor = editor; diff --git a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersModel.cs b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersModel.cs index 74e05bc6c8..89f50b6044 100644 --- a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersModel.cs +++ b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersModel.cs @@ -21,9 +21,9 @@ public class ReorderParametersModel public Declaration TargetDeclaration { get; private set; } public List Parameters { get; set; } - private readonly IMessageBox _messageBox; + private readonly IRubberduckMessageBox _messageBox; - public ReorderParametersModel(VBProjectParseResult parseResult, QualifiedSelection selection, IMessageBox messageBox) + public ReorderParametersModel(VBProjectParseResult parseResult, QualifiedSelection selection, IRubberduckMessageBox messageBox) { _parseResult = parseResult; _declarations = parseResult.Declarations; diff --git a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs index f64cb8df00..8d83bc0628 100644 --- a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs +++ b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs @@ -12,9 +12,9 @@ public class ReorderParametersPresenter : IReorderParametersPresenter { private readonly IReorderParametersView _view; private readonly ReorderParametersModel _model; - private readonly IMessageBox _messageBox; + private readonly IRubberduckMessageBox _messageBox; - public ReorderParametersPresenter(IReorderParametersView view, ReorderParametersModel model, IMessageBox messageBox) + public ReorderParametersPresenter(IReorderParametersView view, ReorderParametersModel model, IRubberduckMessageBox messageBox) { _view = view; _model = model; diff --git a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs index fa617b3844..05cfc83e5a 100644 --- a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs @@ -9,10 +9,10 @@ public class ReorderParametersPresenterFactory : IRefactoringPresenterFactory _factory; private readonly IActiveCodePaneEditor _editor; private ReorderParametersModel _model; - private readonly IMessageBox _messageBox; + private readonly IRubberduckMessageBox _messageBox; - public ReorderParametersRefactoring(IRefactoringPresenterFactory factory, IActiveCodePaneEditor editor, IMessageBox messageBox) + public ReorderParametersRefactoring(IRefactoringPresenterFactory factory, IActiveCodePaneEditor editor, IRubberduckMessageBox messageBox) { _factory = factory; _editor = editor; diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index b1d2990bce..6d08de0763 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -239,6 +239,8 @@ + + @@ -294,7 +296,7 @@ - + Form diff --git a/RetailCoder.VBE/UI/IMessageBox.cs b/RetailCoder.VBE/UI/IRubberduckMessageBox.cs similarity index 98% rename from RetailCoder.VBE/UI/IMessageBox.cs rename to RetailCoder.VBE/UI/IRubberduckMessageBox.cs index 91eefb01ed..f1ebf48737 100644 --- a/RetailCoder.VBE/UI/IMessageBox.cs +++ b/RetailCoder.VBE/UI/IRubberduckMessageBox.cs @@ -2,7 +2,7 @@ namespace Rubberduck.UI { - public interface IMessageBox + public interface IRubberduckMessageBox { DialogResult Show(string text); DialogResult Show(IWin32Window owner, string text); @@ -27,7 +27,7 @@ public interface IMessageBox DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, string helpFilePath, HelpNavigator navigator, object param); } - public class RubberduckMessageBox : IMessageBox + public class RubberduckMessageBox : IRubberduckMessageBox { public DialogResult Show(string text) { diff --git a/RetailCoder.VBE/UI/RefactorMenu.cs b/RetailCoder.VBE/UI/RefactorMenu.cs index 281a5e9db8..9f2d3fbcd9 100644 --- a/RetailCoder.VBE/UI/RefactorMenu.cs +++ b/RetailCoder.VBE/UI/RefactorMenu.cs @@ -1,13 +1,12 @@ using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Runtime.InteropServices; using System.Windows.Forms; using Microsoft.Office.Core; using Microsoft.Vbe.Interop; +using Rubberduck.FindAllImplementations; using Rubberduck.Parsing; -using Rubberduck.Parsing.Grammar; using Rubberduck.Parsing.Symbols; using Rubberduck.Properties; using Rubberduck.Refactorings.ExtractMethod; @@ -26,15 +25,17 @@ public class RefactorMenu : Menu { private readonly IRubberduckParser _parser; private readonly IActiveCodePaneEditor _editor; + private readonly IFindAllImplementations _findAllImplementations; private readonly IRubberduckCodePaneFactory _factory; private readonly SearchResultIconCache _iconCache; - public RefactorMenu(VBE vbe, AddIn addin, IRubberduckParser parser, IActiveCodePaneEditor editor, IRubberduckCodePaneFactory factory) + public RefactorMenu(VBE vbe, AddIn addin, IRubberduckParser parser, IActiveCodePaneEditor editor, IFindAllImplementations findAllImplementations, IRubberduckCodePaneFactory factory) : base(vbe, addin) { _parser = parser; _editor = editor; + _findAllImplementations = findAllImplementations; _factory = factory; _iconCache = new SearchResultIconCache(); @@ -233,14 +234,6 @@ public void FindAllReferences(Declaration target) } } - private void ShowImplementationsToolwindow(IEnumerable implementations, string name) - { - // throws a COMException if toolwindow was already closed - var window = new SimpleListControl(string.Format(RubberduckUI.AllImplementations_Caption, name)); - var presenter = new ImplementationsListDockablePresenter(IDE, AddIn, window, implementations, _factory); - presenter.Show(); - } - private void ShowReferencesToolwindow(Declaration target) { // throws a COMException if toolwindow was already closed @@ -252,127 +245,7 @@ private void ShowReferencesToolwindow(Declaration target) [SuppressMessage("ReSharper", "InconsistentNaming")] private void FindAllImplementationsContextMenu_Click(CommandBarButton Ctrl, ref bool CancelDefault) { - FindAllImplementations(); - } - - public void FindAllImplementations() - { - var codePane = _factory.Create(IDE.ActiveCodePane); - var selection = new QualifiedSelection(new QualifiedModuleName(codePane.CodeModule.Parent), codePane.Selection); - var progress = new ParsingProgressPresenter(); - var parseResult = progress.Parse(_parser, IDE.ActiveVBProject); - - var implementsStatement = parseResult.Declarations.FindInterfaces() - .SelectMany(i => i.References.Where(reference => reference.Context.Parent is VBAParser.ImplementsStmtContext)) - .SingleOrDefault(r => r.QualifiedModuleName == selection.QualifiedName && r.Selection.Contains(selection.Selection)); - - if (implementsStatement != null) - { - FindAllImplementations(implementsStatement.Declaration, parseResult); - } - - var member = parseResult.Declarations.FindInterfaceImplementationMembers() - .SingleOrDefault(m => m.Project == selection.QualifiedName.Project - && m.ComponentName == selection.QualifiedName.ComponentName - && m.Selection.Contains(selection.Selection)) ?? - parseResult.Declarations.FindInterfaceMembers() - .SingleOrDefault(m => m.Project == selection.QualifiedName.Project - && m.ComponentName == selection.QualifiedName.ComponentName - && m.Selection.Contains(selection.Selection)); - - if (member == null) - { - return; - } - - FindAllImplementations(member, parseResult); - } - - public void FindAllImplementations(Declaration target) - { - var progress = new ParsingProgressPresenter(); - var parseResult = progress.Parse(_parser, IDE.ActiveVBProject); - FindAllImplementations(target, parseResult); - } - - private void FindAllImplementations(Declaration target, VBProjectParseResult parseResult) - { - string name; - var implementations = (target.DeclarationType == DeclarationType.Class - ? FindAllImplementationsOfClass(target, parseResult, out name) - : FindAllImplementationsOfMember(target, parseResult, out name)) ?? - new List(); - - var declarations = implementations as IList ?? implementations.ToList(); - var implementationsCount = declarations.Count(); - - if (implementationsCount == 1) - { - // if there's only 1 implementation, just jump to it: - ImplementationsListDockablePresenter.OnNavigateImplementation(IDE, declarations.First()); - } - else if (implementationsCount > 1) - { - // if there's more than one implementation, show the dockable navigation window: - try - { - ShowImplementationsToolwindow(declarations, name); - } - catch (COMException) - { - // the exception is related to the docked control host instance, - // trying again will work (I know, that's bad bad bad code) - ShowImplementationsToolwindow(declarations, name); - } - } - else - { - var message = string.Format(RubberduckUI.AllImplementations_NoneFound, name); - var caption = string.Format(RubberduckUI.AllImplementations_Caption, name); - MessageBox.Show(message, caption, MessageBoxButtons.OK, MessageBoxIcon.Information); - } - } - - private IEnumerable FindAllImplementationsOfClass(Declaration target, VBProjectParseResult parseResult, out string name) - { - if (target.DeclarationType != DeclarationType.Class) - { - name = string.Empty; - return null; - } - - var result = target.References - .Where(reference => reference.Context.Parent is VBAParser.ImplementsStmtContext) - .SelectMany(reference => parseResult.Declarations[reference.QualifiedModuleName.ComponentName]) - .ToList(); - - name = target.ComponentName; - return result; - } - - private IEnumerable FindAllImplementationsOfMember(Declaration target, VBProjectParseResult parseResult, out string name) - { - if (!target.DeclarationType.HasFlag(DeclarationType.Member)) - { - name = string.Empty; - return null; - } - - var isInterface = parseResult.Declarations.FindInterfaces() - .Select(i => i.QualifiedName.QualifiedModuleName.ToString()) - .Contains(target.QualifiedName.QualifiedModuleName.ToString()); - - if (isInterface) - { - name = target.ComponentName + "." + target.IdentifierName; - return parseResult.Declarations.FindInterfaceImplementationMembers(target.IdentifierName) - .Where(item => item.IdentifierName == target.ComponentName + "_" + target.IdentifierName); - } - - var member = parseResult.Declarations.FindInterfaceMember(target); - name = member.ComponentName + "." + member.IdentifierName; - return parseResult.Declarations.FindInterfaceImplementationMembers(member.IdentifierName) - .Where(item => item.IdentifierName == member.ComponentName + "_" + member.IdentifierName); + _findAllImplementations.Find(); } [SuppressMessage("ReSharper", "InconsistentNaming")] diff --git a/RetailCoder.VBE/UI/RubberduckMenu.cs b/RetailCoder.VBE/UI/RubberduckMenu.cs index dc937743d8..9647372f83 100644 --- a/RetailCoder.VBE/UI/RubberduckMenu.cs +++ b/RetailCoder.VBE/UI/RubberduckMenu.cs @@ -4,6 +4,7 @@ using Microsoft.Vbe.Interop; using Ninject; using Ninject.Parameters; +using Rubberduck.FindAllImplementations; using Rubberduck.Inspections; using Rubberduck.Parsing; using Rubberduck.Parsing.Symbols; @@ -33,6 +34,7 @@ internal class RubberduckMenu : Menu private readonly IActiveCodePaneEditor _editor; private readonly IRubberduckCodePaneFactory _factory; private readonly AddIn _addIn; + private readonly IFindAllImplementations _findAllImplementations; private CommandBarButton _about; private CommandBarButton _settings; @@ -40,7 +42,7 @@ internal class RubberduckMenu : Menu private ProjectExplorerContextMenu _projectExplorerContextMenu; - public RubberduckMenu(VBE vbe, AddIn addIn, IConfigurationLoader configService, IRubberduckParser parser, IActiveCodePaneEditor editor, IInspector inspector, IRubberduckCodePaneFactory factory) + public RubberduckMenu(VBE vbe, AddIn addIn, IConfigurationLoader configService, IRubberduckParser parser, IActiveCodePaneEditor editor, IInspector inspector, IFindAllImplementations findAllImplementations, IRubberduckCodePaneFactory factory) : base(vbe, addIn) { _addIn = addIn; @@ -48,6 +50,7 @@ public RubberduckMenu(VBE vbe, AddIn addIn, IConfigurationLoader configService, _editor = editor; _factory = factory; _configService = configService; + _findAllImplementations = findAllImplementations; var testExplorer = new TestExplorerWindow(); var testEngine = new TestEngine(); @@ -75,7 +78,7 @@ public RubberduckMenu(VBE vbe, AddIn addIn, IConfigurationLoader configService, var inspectionPresenter = new CodeInspectionsDockablePresenter(inspector, vbe, addIn, inspectionExplorer, inspectionGridViewSort, _factory); _codeInspectionsMenu = new CodeInspectionsMenu(vbe, addIn, inspectionExplorer, inspectionPresenter); - _refactorMenu = new RefactorMenu(IDE, AddIn, parser, editor, _factory); + _refactorMenu = new RefactorMenu(IDE, AddIn, parser, editor, _findAllImplementations, _factory); } private void codePresenter_FindAllReferences(object sender, NavigateCodeEventArgs e) @@ -85,7 +88,7 @@ private void codePresenter_FindAllReferences(object sender, NavigateCodeEventArg private void codePresenter_FindAllImplementations(object sender, NavigateCodeEventArgs e) { - _refactorMenu.FindAllImplementations(e.Declaration); + _findAllImplementations.Find(e.Declaration); } private void codePresenter_Rename(object sender, TreeNodeNavigateCodeEventArgs e) diff --git a/RubberduckTests/Refactoring/RemoveParametersTests.cs b/RubberduckTests/Refactoring/RemoveParametersTests.cs index 2a0fdec479..b97e807650 100644 --- a/RubberduckTests/Refactoring/RemoveParametersTests.cs +++ b/RubberduckTests/Refactoring/RemoveParametersTests.cs @@ -1392,7 +1392,7 @@ Private Sub IClass1_DoSomething(ByVal a As Integer ) var module1 = project.VBComponents.Item(0).CodeModule; var module2 = project.VBComponents.Item(1).CodeModule; - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(DialogResult.Yes); @@ -1440,7 +1440,7 @@ Private Sub IClass1_DoSomething(ByVal a As Integer, ByVal b As String) var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(DialogResult.No); @@ -1681,7 +1681,7 @@ public void Presenter_ParameterlessTargetReturnsNullModel() var editor = new Mock(); editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())).Returns(DialogResult.OK); var factory = new RemoveParametersPresenterFactory(editor.Object, null, parseResult, messageBox.Object); diff --git a/RubberduckTests/Refactoring/RenameTests.cs b/RubberduckTests/Refactoring/RenameTests.cs index 8ac4d4fe4b..0e7762a167 100644 --- a/RubberduckTests/Refactoring/RenameTests.cs +++ b/RubberduckTests/Refactoring/RenameTests.cs @@ -636,7 +636,7 @@ Private Sub IClass1_DoNothing(ByVal a As Integer, ByVal b As String) var module1 = project.VBComponents.Item(0).CodeModule; var module2 = project.VBComponents.Item(1).CodeModule; - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup( m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(DialogResult.Yes); @@ -684,7 +684,7 @@ Private Sub IClass1_DoSomething(ByVal a As Integer, ByVal b As String) var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup( m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(DialogResult.No); @@ -1067,7 +1067,7 @@ Dim Goo As Integer //SetupFactory var factory = SetupFactory(model); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup( m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), @@ -1113,7 +1113,7 @@ Dim Goo As Integer //SetupFactory var factory = SetupFactory(model); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup( m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), diff --git a/RubberduckTests/Refactoring/ReorderParametersTests.cs b/RubberduckTests/Refactoring/ReorderParametersTests.cs index 918f228c60..ad796afb8e 100644 --- a/RubberduckTests/Refactoring/ReorderParametersTests.cs +++ b/RubberduckTests/Refactoring/ReorderParametersTests.cs @@ -709,7 +709,7 @@ End Sub //SetupFactory var factory = SetupFactory(model); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), MessageBoxButtons.OK, MessageBoxIcon.Warning)).Returns(DialogResult.OK); //Act @@ -783,7 +783,7 @@ End Sub //SetupFactory var factory = SetupFactory(model); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), MessageBoxButtons.OK, MessageBoxIcon.Warning)).Returns(DialogResult.OK); //Act @@ -871,7 +871,7 @@ End Sub //SetupFactory var factory = SetupFactory(model); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), MessageBoxButtons.OK, MessageBoxIcon.Warning)).Returns(DialogResult.OK); //Act @@ -915,7 +915,7 @@ public void ReorderParams_MoveOptionalParamBeforeNonOptionalParamFails() var factory = SetupFactory(model); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), MessageBoxButtons.OK, MessageBoxIcon.Warning)).Returns(DialogResult.OK); //act @@ -1330,7 +1330,7 @@ Private Sub IClass1_DoSomething(ByVal b As String, ByVal a As Integer) var module1 = project.VBComponents.Item(0).CodeModule; var module2 = project.VBComponents.Item(1).CodeModule; - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup( m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(DialogResult.Yes); @@ -1379,7 +1379,7 @@ Private Sub IClass1_DoSomething(ByVal a As Integer, ByVal b As String) var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(DialogResult.No); @@ -1669,7 +1669,7 @@ public void Presenter_ParameterlessMemberCreatesNullModel() var editor = new Mock(); editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(DialogResult.OK); @@ -1705,7 +1705,7 @@ public void Presenter_SingleParameterMemberCreatesNullModel() var editor = new Mock(); editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection); - var messageBox = new Mock(); + var messageBox = new Mock(); messageBox.Setup(m => m.Show(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(DialogResult.OK); From 101783e1de1f5b2621c39b08c7a879e41a30af83 Mon Sep 17 00:00:00 2001 From: Hosch250 Date: Tue, 21 Jul 2015 20:54:48 -0500 Subject: [PATCH 4/6] Rename namespace --- RetailCoder.VBE/App.cs | 2 +- .../FindAllImplementations.cs | 2 +- .../IFindAllImplementations.cs | 2 +- RetailCoder.VBE/Rubberduck.csproj | 4 ++-- RetailCoder.VBE/UI/RefactorMenu.cs | 2 +- RetailCoder.VBE/UI/RubberduckMenu.cs | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) rename RetailCoder.VBE/{FindAllImplementations => Navigations}/FindAllImplementations.cs (99%) rename RetailCoder.VBE/{FindAllImplementations => Navigations}/IFindAllImplementations.cs (85%) diff --git a/RetailCoder.VBE/App.cs b/RetailCoder.VBE/App.cs index 2cf56801d1..23b87951cf 100644 --- a/RetailCoder.VBE/App.cs +++ b/RetailCoder.VBE/App.cs @@ -3,7 +3,7 @@ using System.Globalization; using System.Windows.Forms; using Microsoft.Vbe.Interop; -using Rubberduck.FindAllImplementations; +using Rubberduck.Navigations; using Rubberduck.Inspections; using Rubberduck.Parsing; using Rubberduck.Parsing.VBA; diff --git a/RetailCoder.VBE/FindAllImplementations/FindAllImplementations.cs b/RetailCoder.VBE/Navigations/FindAllImplementations.cs similarity index 99% rename from RetailCoder.VBE/FindAllImplementations/FindAllImplementations.cs rename to RetailCoder.VBE/Navigations/FindAllImplementations.cs index acd5035525..52aef10880 100644 --- a/RetailCoder.VBE/FindAllImplementations/FindAllImplementations.cs +++ b/RetailCoder.VBE/Navigations/FindAllImplementations.cs @@ -11,7 +11,7 @@ using Rubberduck.VBEditor; using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; -namespace Rubberduck.FindAllImplementations +namespace Rubberduck.Navigations { public class FindAllImplementations : IFindAllImplementations { diff --git a/RetailCoder.VBE/FindAllImplementations/IFindAllImplementations.cs b/RetailCoder.VBE/Navigations/IFindAllImplementations.cs similarity index 85% rename from RetailCoder.VBE/FindAllImplementations/IFindAllImplementations.cs rename to RetailCoder.VBE/Navigations/IFindAllImplementations.cs index d4b7aefc17..ccf8bae51b 100644 --- a/RetailCoder.VBE/FindAllImplementations/IFindAllImplementations.cs +++ b/RetailCoder.VBE/Navigations/IFindAllImplementations.cs @@ -1,7 +1,7 @@ using Rubberduck.Parsing; using Rubberduck.Parsing.Symbols; -namespace Rubberduck.FindAllImplementations +namespace Rubberduck.Navigations { public interface IFindAllImplementations { diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index 6d08de0763..f5ecfddf4f 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -239,8 +239,8 @@ - - + + diff --git a/RetailCoder.VBE/UI/RefactorMenu.cs b/RetailCoder.VBE/UI/RefactorMenu.cs index 9f2d3fbcd9..811b9e6780 100644 --- a/RetailCoder.VBE/UI/RefactorMenu.cs +++ b/RetailCoder.VBE/UI/RefactorMenu.cs @@ -5,7 +5,7 @@ using System.Windows.Forms; using Microsoft.Office.Core; using Microsoft.Vbe.Interop; -using Rubberduck.FindAllImplementations; +using Rubberduck.Navigations; using Rubberduck.Parsing; using Rubberduck.Parsing.Symbols; using Rubberduck.Properties; diff --git a/RetailCoder.VBE/UI/RubberduckMenu.cs b/RetailCoder.VBE/UI/RubberduckMenu.cs index 9647372f83..c05a2a86dc 100644 --- a/RetailCoder.VBE/UI/RubberduckMenu.cs +++ b/RetailCoder.VBE/UI/RubberduckMenu.cs @@ -4,7 +4,7 @@ using Microsoft.Vbe.Interop; using Ninject; using Ninject.Parameters; -using Rubberduck.FindAllImplementations; +using Rubberduck.Navigations; using Rubberduck.Inspections; using Rubberduck.Parsing; using Rubberduck.Parsing.Symbols; From 4781a657a0521ec15d5be43346bc3d03e9fccb0c Mon Sep 17 00:00:00 2001 From: retailcoder Date: Fri, 24 Jul 2015 00:58:18 -0400 Subject: [PATCH 5/6] renamed INavigateImplementations and implementation --- RetailCoder.VBE/App.cs | 27 ++++++++----------- ...tations.cs => INavigateImplementations.cs} | 2 +- ...ntations.cs => NavigateImplementations.cs} | 4 +-- RetailCoder.VBE/Rubberduck.csproj | 4 +-- RetailCoder.VBE/UI/RefactorMenu.cs | 8 +++--- RetailCoder.VBE/UI/RubberduckMenu.cs | 10 +++---- 6 files changed, 25 insertions(+), 30 deletions(-) rename RetailCoder.VBE/Navigations/{IFindAllImplementations.cs => INavigateImplementations.cs} (84%) rename RetailCoder.VBE/Navigations/{FindAllImplementations.cs => NavigateImplementations.cs} (96%) diff --git a/RetailCoder.VBE/App.cs b/RetailCoder.VBE/App.cs index 23b87951cf..f2541f8fa4 100644 --- a/RetailCoder.VBE/App.cs +++ b/RetailCoder.VBE/App.cs @@ -26,7 +26,7 @@ public class App : IDisposable private readonly IActiveCodePaneEditor _editor; private readonly IRubberduckCodePaneFactory _codePaneFactory; private readonly IRubberduckParser _parser; - private readonly IFindAllImplementations _findAllImplementations; + private readonly INavigateImplementations _navigateImplementations; private Configuration _config; private RubberduckMenu _menu; @@ -35,36 +35,31 @@ public class App : IDisposable private bool _displayToolbar = false; private Point _toolbarCoords = new Point(-1, -1); - public App(VBE vbe, AddIn addIn, IParserErrorsPresenter presenter, IRubberduckParser parser, IRubberduckCodePaneFactory factory, IActiveCodePaneEditor editor, IFindAllImplementations findAllImplementations) + public App(VBE vbe, AddIn addIn, IParserErrorsPresenter presenter, IRubberduckParser parser, IRubberduckCodePaneFactory factory, IActiveCodePaneEditor editor, INavigateImplementations navigateImplementations) { _vbe = vbe; _addIn = addIn; _codePaneFactory = factory; _parser = parser; - _findAllImplementations = findAllImplementations; + _navigateImplementations = navigateImplementations; _parserErrorsPresenter = presenter; _configService.SettingsChanged += _configService_SettingsChanged; - // todo: figure out why Ninject can't seem to resolve the VBE dependency to ActiveCodePaneEditor if it's in the VBEDitor assembly. - // could it be that the VBE type in the two assemblies is actually different? - // aren't the two assemblies using the exact same Microsoft.Vbe.Interop assemby? - - _editor = editor; // */ new ActiveCodePaneEditor(vbe, _codePaneFactory); + _editor = editor; - LoadConfig(); - - CleanUp(); - - Setup(); + CleanReloadConfiguration(); } private void _configService_SettingsChanged(object sender, EventArgs e) { - LoadConfig(); + CleanReloadConfiguration(); + } + private void CleanReloadConfiguration() + { + LoadConfig(); CleanUp(); - Setup(); } @@ -95,7 +90,7 @@ private void Setup() _parserErrorsPresenter = new ParserErrorsPresenter(_vbe, _addIn); - _menu = new RubberduckMenu(_vbe, _addIn, _configService, _parser, _editor, _inspector, _findAllImplementations, _codePaneFactory); + _menu = new RubberduckMenu(_vbe, _addIn, _configService, _parser, _editor, _inspector, _navigateImplementations, _codePaneFactory); _menu.Initialize(); _formContextMenu = new FormContextMenu(_vbe, _parser, _editor, _codePaneFactory); diff --git a/RetailCoder.VBE/Navigations/IFindAllImplementations.cs b/RetailCoder.VBE/Navigations/INavigateImplementations.cs similarity index 84% rename from RetailCoder.VBE/Navigations/IFindAllImplementations.cs rename to RetailCoder.VBE/Navigations/INavigateImplementations.cs index ccf8bae51b..01c57058da 100644 --- a/RetailCoder.VBE/Navigations/IFindAllImplementations.cs +++ b/RetailCoder.VBE/Navigations/INavigateImplementations.cs @@ -3,7 +3,7 @@ namespace Rubberduck.Navigations { - public interface IFindAllImplementations + public interface INavigateImplementations { void Find(); void Find(Declaration target); diff --git a/RetailCoder.VBE/Navigations/FindAllImplementations.cs b/RetailCoder.VBE/Navigations/NavigateImplementations.cs similarity index 96% rename from RetailCoder.VBE/Navigations/FindAllImplementations.cs rename to RetailCoder.VBE/Navigations/NavigateImplementations.cs index 52aef10880..fc1ba7b1f1 100644 --- a/RetailCoder.VBE/Navigations/FindAllImplementations.cs +++ b/RetailCoder.VBE/Navigations/NavigateImplementations.cs @@ -13,7 +13,7 @@ namespace Rubberduck.Navigations { - public class FindAllImplementations : IFindAllImplementations + public class NavigateImplementations : INavigateImplementations { private readonly VBE _vbe; private readonly AddIn _addIn; @@ -21,7 +21,7 @@ public class FindAllImplementations : IFindAllImplementations private readonly IRubberduckCodePaneFactory _codePaneFactory; private readonly IRubberduckMessageBox _messageBox; - public FindAllImplementations(VBE vbe, AddIn addIn, IRubberduckParser parser, IRubberduckCodePaneFactory codePaneFactory, IRubberduckMessageBox messageBox) + public NavigateImplementations(VBE vbe, AddIn addIn, IRubberduckParser parser, IRubberduckCodePaneFactory codePaneFactory, IRubberduckMessageBox messageBox) { _vbe = vbe; _addIn = addIn; diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index d86e61cbd7..da773e8973 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -239,8 +239,8 @@ - - + + diff --git a/RetailCoder.VBE/UI/RefactorMenu.cs b/RetailCoder.VBE/UI/RefactorMenu.cs index 811b9e6780..11a5b45a7f 100644 --- a/RetailCoder.VBE/UI/RefactorMenu.cs +++ b/RetailCoder.VBE/UI/RefactorMenu.cs @@ -25,17 +25,17 @@ public class RefactorMenu : Menu { private readonly IRubberduckParser _parser; private readonly IActiveCodePaneEditor _editor; - private readonly IFindAllImplementations _findAllImplementations; + private readonly INavigateImplementations _navigateImplementations; private readonly IRubberduckCodePaneFactory _factory; private readonly SearchResultIconCache _iconCache; - public RefactorMenu(VBE vbe, AddIn addin, IRubberduckParser parser, IActiveCodePaneEditor editor, IFindAllImplementations findAllImplementations, IRubberduckCodePaneFactory factory) + public RefactorMenu(VBE vbe, AddIn addin, IRubberduckParser parser, IActiveCodePaneEditor editor, INavigateImplementations navigateImplementations, IRubberduckCodePaneFactory factory) : base(vbe, addin) { _parser = parser; _editor = editor; - _findAllImplementations = findAllImplementations; + _navigateImplementations = navigateImplementations; _factory = factory; _iconCache = new SearchResultIconCache(); @@ -245,7 +245,7 @@ private void ShowReferencesToolwindow(Declaration target) [SuppressMessage("ReSharper", "InconsistentNaming")] private void FindAllImplementationsContextMenu_Click(CommandBarButton Ctrl, ref bool CancelDefault) { - _findAllImplementations.Find(); + _navigateImplementations.Find(); } [SuppressMessage("ReSharper", "InconsistentNaming")] diff --git a/RetailCoder.VBE/UI/RubberduckMenu.cs b/RetailCoder.VBE/UI/RubberduckMenu.cs index c05a2a86dc..faa3d77797 100644 --- a/RetailCoder.VBE/UI/RubberduckMenu.cs +++ b/RetailCoder.VBE/UI/RubberduckMenu.cs @@ -34,7 +34,7 @@ internal class RubberduckMenu : Menu private readonly IActiveCodePaneEditor _editor; private readonly IRubberduckCodePaneFactory _factory; private readonly AddIn _addIn; - private readonly IFindAllImplementations _findAllImplementations; + private readonly INavigateImplementations _navigateImplementations; private CommandBarButton _about; private CommandBarButton _settings; @@ -42,7 +42,7 @@ internal class RubberduckMenu : Menu private ProjectExplorerContextMenu _projectExplorerContextMenu; - public RubberduckMenu(VBE vbe, AddIn addIn, IConfigurationLoader configService, IRubberduckParser parser, IActiveCodePaneEditor editor, IInspector inspector, IFindAllImplementations findAllImplementations, IRubberduckCodePaneFactory factory) + public RubberduckMenu(VBE vbe, AddIn addIn, IConfigurationLoader configService, IRubberduckParser parser, IActiveCodePaneEditor editor, IInspector inspector, INavigateImplementations navigateImplementations, IRubberduckCodePaneFactory factory) : base(vbe, addIn) { _addIn = addIn; @@ -50,7 +50,7 @@ public RubberduckMenu(VBE vbe, AddIn addIn, IConfigurationLoader configService, _editor = editor; _factory = factory; _configService = configService; - _findAllImplementations = findAllImplementations; + _navigateImplementations = navigateImplementations; var testExplorer = new TestExplorerWindow(); var testEngine = new TestEngine(); @@ -78,7 +78,7 @@ public RubberduckMenu(VBE vbe, AddIn addIn, IConfigurationLoader configService, var inspectionPresenter = new CodeInspectionsDockablePresenter(inspector, vbe, addIn, inspectionExplorer, inspectionGridViewSort, _factory); _codeInspectionsMenu = new CodeInspectionsMenu(vbe, addIn, inspectionExplorer, inspectionPresenter); - _refactorMenu = new RefactorMenu(IDE, AddIn, parser, editor, _findAllImplementations, _factory); + _refactorMenu = new RefactorMenu(IDE, AddIn, parser, editor, _navigateImplementations, _factory); } private void codePresenter_FindAllReferences(object sender, NavigateCodeEventArgs e) @@ -88,7 +88,7 @@ private void codePresenter_FindAllReferences(object sender, NavigateCodeEventArg private void codePresenter_FindAllImplementations(object sender, NavigateCodeEventArgs e) { - _findAllImplementations.Find(e.Declaration); + _navigateImplementations.Find(e.Declaration); } private void codePresenter_Rename(object sender, TreeNodeNavigateCodeEventArgs e) From 191fa7d787fe2344813f8acd6b7a3555df230663 Mon Sep 17 00:00:00 2001 From: retailcoder Date: Fri, 24 Jul 2015 17:39:23 -0400 Subject: [PATCH 6/6] included RubberduckUI.de.resx in solution --- RetailCoder.VBE/UI/RubberduckUI.de.resx | 73 +++++++++++++------------ 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/RetailCoder.VBE/UI/RubberduckUI.de.resx b/RetailCoder.VBE/UI/RubberduckUI.de.resx index 340cd8726e..6a413fe69b 100644 --- a/RetailCoder.VBE/UI/RubberduckUI.de.resx +++ b/RetailCoder.VBE/UI/RubberduckUI.de.resx @@ -1,4 +1,4 @@ - + - + @@ -1012,100 +1012,103 @@ Warnung: Alle eigenen Einstellungen gehen dabei verloren. Nicht verfolgte Dateien - + {0} efolgreich mit {1} zusammengeführt - + Umbe&nennen - + Bitte wählen Sie Quell- und Zielzweig - + Zweig löschen - + NIcht anzeigen - + Neuer Zweig - + &Neu - + Rubberduck - Zweig löschen - + {0} Problem - + Warnung - + {0} ({1} Probleme) - + Text: - + Wichtigkeit - + Bitte geben Sie einen Zweignamen an. - + Tipp - + Rubberduck - Zweig erstellen - + Rubberduck Code Untersuchungen - {0} {1} Problem gefunden. - + Kein Repository gefunden. - + Zweige zusammenführen - + Text - + Bitte geben sie einen Zweignamen an. - + &Inspizieren - + {0} Probleme - + Aktualisieren - + Na&vigieren - + {0} ({1} Problem) - + Vorschlag - + Rubberduck Code Untersuchungen - {0} {1} Probleme gefunden - + Mittel - + Hoch - + Gering - + Fehler - + + Deutsch + + \ No newline at end of file