Skip to content

Commit 8571952

Browse files
committed
Clean up ExtractInterface objects
1 parent 51ea7df commit 8571952

File tree

4 files changed

+26
-28
lines changed

4 files changed

+26
-28
lines changed

Rubberduck.Core/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33

44
namespace Rubberduck.UI.Refactorings
55
{
6-
internal sealed class ExtractInterfaceDialog : RefactoringDialogBase<ExtractInterfaceModel, ExtractInterfaceView, ExtractInterfaceViewModel>
6+
public sealed class ExtractInterfaceDialog : RefactoringDialogBase<ExtractInterfaceModel, ExtractInterfaceView, ExtractInterfaceViewModel>
77
{
88
protected override int MinHeight => 339;
99
protected override int MinWidth => 459;
1010

11-
private ExtractInterfaceDialog(ExtractInterfaceModel model, ExtractInterfaceView view, ExtractInterfaceViewModel viewModel) : base(model, view, viewModel)
11+
public ExtractInterfaceDialog(ExtractInterfaceModel model, ExtractInterfaceView view, ExtractInterfaceViewModel viewModel) : base(model, view, viewModel)
1212
{
1313
Text = RubberduckUI.ExtractInterface_Caption;
1414
}
Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
using System.Linq;
2-
using Rubberduck.Parsing.Symbols;
3-
using Rubberduck.Refactorings;
1+
using Rubberduck.Refactorings;
42
using Rubberduck.Refactorings.ExtractInterface;
53

64
namespace Rubberduck.UI.Refactorings.ExtractInterface
75
{
8-
internal class ExtractInterfacePresenter : RefactoringPresenterBase<ExtractInterfaceModel, ExtractInterfaceDialog, ExtractInterfaceView, ExtractInterfaceViewModel>, IExtractInterfacePresenter
6+
internal class ExtractInterfacePresenter : RefactoringPresenterBase<ExtractInterfaceModel, IRefactoringDialog<ExtractInterfaceModel, IRefactoringView<ExtractInterfaceModel>, IRefactoringViewModel<ExtractInterfaceModel>>, IRefactoringView<ExtractInterfaceModel>, IRefactoringViewModel<ExtractInterfaceModel>>, IExtractInterfacePresenter
97
{
108
public ExtractInterfacePresenter(ExtractInterfaceModel model,
119
IRefactoringDialogFactory dialogFactory) : base(model, dialogFactory) { }
@@ -17,23 +15,8 @@ public override ExtractInterfaceModel Show()
1715
return null;
1816
}
1917

20-
ViewModel.ComponentNames = Model.State.DeclarationFinder
21-
.UserDeclarations(DeclarationType.Module)
22-
.Where(moduleDeclaration => moduleDeclaration.ProjectId == Model.TargetDeclaration.ProjectId)
23-
.Select(module => module.ComponentName)
24-
.ToList();
25-
ViewModel.InterfaceName = Model.InterfaceName;
26-
ViewModel.Members = Model.Members.Select(m => m.ToViewModel()).ToList();
27-
28-
Show();
29-
if (DialogResult != RefactoringDialogResult.Execute)
30-
{
31-
return null;
32-
}
33-
34-
Model.InterfaceName = ViewModel.InterfaceName;
35-
Model.Members = ViewModel.Members.Where(m => m.IsSelected).Select(vm => vm.ToModel()).ToList();
36-
return Model;
18+
var model = base.Show();
19+
return DialogResult != RefactoringDialogResult.Execute ? null : model;
3720
}
3821
}
3922
}

Rubberduck.Core/UI/Refactorings/ExtractInterface/ExtractInterfaceViewModel.cs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,32 @@
33
using System.Linq;
44
using NLog;
55
using Rubberduck.Parsing.Grammar;
6+
using Rubberduck.Parsing.Symbols;
67
using Rubberduck.Refactorings.ExtractInterface;
78
using Rubberduck.UI.Command;
89
using Rubberduck.UI.Refactorings.ExtractInterface;
910

1011
namespace Rubberduck.UI.Refactorings
1112
{
12-
internal class ExtractInterfaceViewModel : RefactoringViewModelBase<ExtractInterfaceModel>
13+
public class ExtractInterfaceViewModel : RefactoringViewModelBase<ExtractInterfaceModel>
1314
{
1415
public ExtractInterfaceViewModel(ExtractInterfaceModel model) : base(model)
1516
{
1617
SelectAllCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => ToggleSelection(true));
1718
DeselectAllCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => ToggleSelection(false));
19+
20+
ComponentNames = Model.State.DeclarationFinder
21+
.UserDeclarations(DeclarationType.Module)
22+
.Where(moduleDeclaration => moduleDeclaration.ProjectId == Model.TargetDeclaration.ProjectId)
23+
.Select(module => module.ComponentName)
24+
.ToList();
25+
_members = Model.Members.Select(m => m.ToViewModel()).ToList();
26+
UpdateModelMembers();
27+
}
28+
29+
private void UpdateModelMembers()
30+
{
31+
Model.Members = _members.Where(m => m.IsSelected).Select(vm => vm.ToModel()).ToList();
1832
}
1933

2034
private List<InterfaceMemberViewModel> _members;
@@ -24,19 +38,19 @@ public List<InterfaceMemberViewModel> Members
2438
set
2539
{
2640
_members = value;
41+
UpdateModelMembers();
2742
OnPropertyChanged();
2843
}
2944
}
3045

3146
public List<string> ComponentNames { get; set; }
3247

33-
private string _interfaceName;
3448
public string InterfaceName
3549
{
36-
get => _interfaceName;
50+
get => Model.InterfaceName;
3751
set
3852
{
39-
_interfaceName = value;
53+
Model.InterfaceName = value;
4054
OnPropertyChanged();
4155
OnPropertyChanged(nameof(IsValidInterfaceName));
4256
}
@@ -62,6 +76,7 @@ private void ToggleSelection(bool value)
6276
{
6377
item.IsSelected = value;
6478
}
79+
UpdateModelMembers();
6580
}
6681

6782
public CommandBase SelectAllCommand { get; }

Rubberduck.Core/UI/Refactorings/ExtractInterface/InterfaceMemberViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Rubberduck.UI.Refactorings.ExtractInterface
44
{
5-
internal class InterfaceMemberViewModel : ViewModelBase
5+
public class InterfaceMemberViewModel : ViewModelBase
66
{
77
public InterfaceMemberViewModel(InterfaceMember model)
88
{

0 commit comments

Comments
 (0)