Skip to content

Commit f0b3aee

Browse files
authored
Merge pull request #2335 from retailcoder/next
Source Control component disposal
2 parents f677d60 + 8115fac commit f0b3aee

22 files changed

+108
-128
lines changed

RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerViewModel.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
using Rubberduck.VBEditor;
1515
using Rubberduck.VBEditor.SafeComWrappers;
1616
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
17-
using Rubberduck.VBEditor.SafeComWrappers.VBA;
1817

1918
// ReSharper disable CanBeReplacedWithTryCastAndCheckForNull
2019

RetailCoder.VBE/Root/RubberduckModule.cs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
using Rubberduck.UI.UnitTesting;
2727
using Rubberduck.Parsing.Preprocessing;
2828
using System.Globalization;
29-
using Ninject.Activation;
3029
using Ninject.Extensions.Interception.Infrastructure.Language;
3130
using Ninject.Extensions.NamedScope;
3231
using Rubberduck.Parsing.Symbols;
@@ -94,6 +93,7 @@ public override void Load()
9493

9594
Rebind<ISearchResultsWindowViewModel>().To<SearchResultsWindowViewModel>().InSingletonScope();
9695

96+
Bind<SourceControlViewViewModel>().ToSelf().InSingletonScope();
9797
Bind<IControlView>().To<ChangesView>().InCallScope();
9898
Bind<IControlView>().To<BranchesView>().InCallScope();
9999
Bind<IControlView>().To<UnsyncedCommitsView>().InCallScope();
@@ -108,27 +108,26 @@ public override void Load()
108108
.ToSelf()
109109
.InSingletonScope();
110110

111-
Bind<ISourceControlProviderFactory>()
112-
.To<SourceControlProviderFactory>()
113-
.WhenInjectedInto<SourceControlViewViewModel>();
114-
115-
Bind<IPresenter>().To<SourceControlDockablePresenter>()
116-
.WhenInjectedInto<ShowSourceControlPanelCommand>()
111+
Bind<IDockablePresenter>().To<SourceControlDockablePresenter>()
112+
.WhenInjectedInto(
113+
typeof(ShowSourceControlPanelCommand),
114+
typeof(CommitCommand),
115+
typeof(UndoCommand))
117116
.InSingletonScope();
118117

119-
Bind<IPresenter>().To<TestExplorerDockablePresenter>()
118+
Bind<IDockablePresenter>().To<TestExplorerDockablePresenter>()
120119
.WhenInjectedInto<TestExplorerCommand>()
121120
.InSingletonScope();
122121

123-
Bind<IPresenter>().To<CodeInspectionsDockablePresenter>()
122+
Bind<IDockablePresenter>().To<CodeInspectionsDockablePresenter>()
124123
.WhenInjectedInto<InspectionResultsCommand>()
125124
.InSingletonScope();
126125

127-
Bind<IPresenter>().To<CodeExplorerDockablePresenter>()
126+
Bind<IDockablePresenter>().To<CodeExplorerDockablePresenter>()
128127
.WhenInjectedInto<CodeExplorerCommand>()
129128
.InSingletonScope();
130129

131-
Bind<IPresenter>().To<ToDoExplorerDockablePresenter>()
130+
Bind<IDockablePresenter>().To<ToDoExplorerDockablePresenter>()
132131
.WhenInjectedInto<ToDoExplorerCommand>()
133132
.InSingletonScope();
134133

RetailCoder.VBE/UI/CodeExplorer/CodeExplorerDockablePresenter.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ namespace Rubberduck.UI.CodeExplorer
44
{
55
public class CodeExplorerDockablePresenter : DockableToolwindowPresenter
66
{
7-
private CodeExplorerWindow Control { get { return UserControl as CodeExplorerWindow; } }
8-
97
public CodeExplorerDockablePresenter(IVBE vbe, IAddIn addIn, CodeExplorerWindow view)
108
: base(vbe, addIn, view)
119
{

RetailCoder.VBE/UI/CodeExplorer/Commands/CommitCommand.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Diagnostics;
12
using NLog;
23
using Rubberduck.Navigation.CodeExplorer;
34
using Rubberduck.UI.Command;
@@ -8,9 +9,9 @@ namespace Rubberduck.UI.CodeExplorer.Commands
89
[CodeExplorerCommand]
910
public class CommitCommand : CommandBase
1011
{
11-
private readonly SourceControlDockablePresenter _presenter;
12+
private readonly IDockablePresenter _presenter;
1213

13-
public CommitCommand(SourceControlDockablePresenter presenter) : base(LogManager.GetCurrentClassLogger())
14+
public CommitCommand(IDockablePresenter presenter) : base(LogManager.GetCurrentClassLogger())
1415
{
1516
_presenter = presenter;
1617
}
@@ -24,14 +25,13 @@ protected override void ExecuteImpl(object parameter)
2425
{
2526
_presenter.Show();
2627

27-
var panel = _presenter.Window() as SourceControlPanel;
28-
if (panel != null)
28+
var panel = _presenter.UserControl as SourceControlPanel;
29+
Debug.Assert(panel != null);
30+
31+
var vm = panel.ViewModel;
32+
if (vm != null)
2933
{
30-
var vm = panel.ViewModel as SourceControlViewViewModel;
31-
if (vm != null)
32-
{
33-
vm.SetTab(SourceControlTab.Changes);
34-
}
34+
vm.SetTab(SourceControlTab.Changes);
3535
}
3636
}
3737
}

RetailCoder.VBE/UI/CodeExplorer/Commands/UndoCommand.cs

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
using System.Collections.Generic;
2+
using System.Diagnostics;
23
using System.Linq;
34
using NLog;
45
using Rubberduck.Navigation.CodeExplorer;
56
using Rubberduck.SourceControl;
67
using Rubberduck.UI.Command;
78
using Rubberduck.UI.SourceControl;
89
using Rubberduck.VBEditor.SafeComWrappers;
9-
using Rubberduck.VBEditor.SafeComWrappers.VBA;
1010

1111
namespace Rubberduck.UI.CodeExplorer.Commands
1212
{
1313
[CodeExplorerCommand]
1414
public class UndoCommand : CommandBase
1515
{
16-
private readonly SourceControlDockablePresenter _presenter;
16+
private readonly IDockablePresenter _presenter;
1717
private readonly IMessageBox _messageBox;
1818

19-
public UndoCommand(SourceControlDockablePresenter presenter, IMessageBox messageBox) : base(LogManager.GetCurrentClassLogger())
19+
public UndoCommand(IDockablePresenter presenter, IMessageBox messageBox) : base(LogManager.GetCurrentClassLogger())
2020
{
2121
_presenter = presenter;
2222
_messageBox = messageBox;
@@ -30,11 +30,8 @@ protected override bool CanExecuteImpl(object parameter)
3030
return false;
3131
}
3232

33-
var panel = _presenter.Window() as SourceControlPanel;
34-
if (panel == null)
35-
{
36-
return false;
37-
}
33+
var panel = _presenter.UserControl as SourceControlPanel;
34+
Debug.Assert(panel != null);
3835

3936
var panelViewModel = panel.ViewModel;
4037
if (panelViewModel == null)
@@ -51,11 +48,8 @@ protected override bool CanExecuteImpl(object parameter)
5148

5249
protected override void ExecuteImpl(object parameter)
5350
{
54-
var panel = _presenter.Window() as SourceControlPanel;
55-
if (panel == null)
56-
{
57-
return;
58-
}
51+
var panel = _presenter.UserControl as SourceControlPanel;
52+
Debug.Assert(panel != null);
5953

6054
var panelViewModel = panel.ViewModel;
6155
if (panelViewModel == null)
@@ -70,7 +64,7 @@ protected override void ExecuteImpl(object parameter)
7064
return;
7165
}
7266

73-
var fileName = GetFileName((CodeExplorerComponentViewModel) parameter);
67+
var fileName = GetFileName((ICodeExplorerDeclarationViewModel)parameter);
7468
var result = _messageBox.Show(string.Format(RubberduckUI.SourceControl_UndoPrompt, fileName),
7569
RubberduckUI.SourceControl_UndoTitle, System.Windows.Forms.MessageBoxButtons.OKCancel,
7670
System.Windows.Forms.MessageBoxIcon.Warning, System.Windows.Forms.MessageBoxDefaultButton.Button2);
@@ -84,7 +78,7 @@ protected override void ExecuteImpl(object parameter)
8478
_presenter.Show();
8579
}
8680

87-
private string GetFileName(CodeExplorerComponentViewModel node)
81+
private string GetFileName(ICodeExplorerDeclarationViewModel node)
8882
{
8983
var component = node.Declaration.QualifiedName.QualifiedModuleName.Component;
9084

RetailCoder.VBE/UI/Command/CodeExplorerCommand.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ namespace Rubberduck.UI.Command
1010
[ComVisible(false)]
1111
public class CodeExplorerCommand : CommandBase
1212
{
13-
private readonly IPresenter _presenter;
13+
private readonly IDockablePresenter _presenter;
1414

15-
public CodeExplorerCommand(IPresenter presenter) : base(LogManager.GetCurrentClassLogger())
15+
public CodeExplorerCommand(IDockablePresenter presenter)
16+
: base(LogManager.GetCurrentClassLogger())
1617
{
1718
_presenter = presenter;
1819
}

RetailCoder.VBE/UI/Command/InspectionResultsCommand.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ namespace Rubberduck.UI.Command
1010
[ComVisible(false)]
1111
public class InspectionResultsCommand : CommandBase
1212
{
13-
private readonly IPresenter _presenter;
13+
private readonly IDockablePresenter _presenter;
1414

15-
public InspectionResultsCommand(IPresenter presenter) : base(LogManager.GetCurrentClassLogger())
15+
public InspectionResultsCommand(IDockablePresenter presenter)
16+
: base(LogManager.GetCurrentClassLogger())
1617
{
1718
_presenter = presenter;
1819
}

RetailCoder.VBE/UI/Command/MenuItems/CodeExplorerCommandMenuItem.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.Windows.Input;
21
using Rubberduck.UI.Command.MenuItems.ParentMenus;
32

43
namespace Rubberduck.UI.Command.MenuItems

RetailCoder.VBE/UI/Command/ShowSourceControlPanelCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ namespace Rubberduck.UI.Command
1010
[ComVisible(false)]
1111
public class ShowSourceControlPanelCommand : CommandBase
1212
{
13-
private readonly IPresenter _presenter;
13+
private readonly IDockablePresenter _presenter;
1414

15-
public ShowSourceControlPanelCommand(IPresenter presenter) : base(LogManager.GetCurrentClassLogger())
15+
public ShowSourceControlPanelCommand(IDockablePresenter presenter) : base(LogManager.GetCurrentClassLogger())
1616
{
1717
_presenter = presenter;
1818
}

RetailCoder.VBE/UI/Command/TestExplorerCommand.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ namespace Rubberduck.UI.Command
77
[ComVisible(false)]
88
public class TestExplorerCommand : CommandBase
99
{
10-
private readonly IPresenter _presenter;
10+
private readonly IDockablePresenter _presenter;
1111

12-
public TestExplorerCommand(IPresenter presenter) : base(LogManager.GetCurrentClassLogger())
12+
public TestExplorerCommand(IDockablePresenter presenter)
13+
: base(LogManager.GetCurrentClassLogger())
1314
{
1415
_presenter = presenter;
1516
}

0 commit comments

Comments
 (0)