Skip to content

Commit

Permalink
Replace Extract Interface dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
Hosch250 committed Mar 16, 2017
1 parent a41b932 commit 79ef63c
Show file tree
Hide file tree
Showing 17 changed files with 435 additions and 453 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public ExtractInterfaceModel(RubberduckParserState state, QualifiedSelection sel
&& MemberTypes.Contains(item.DeclarationType))
.OrderBy(o => o.Selection.StartLine)
.ThenBy(t => t.Selection.StartColumn)
.Select(d => new InterfaceMember(d, declarations))
.Select(d => new InterfaceMember(d))
.ToList();
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using System.Linq;
using System.Windows.Forms;
using Rubberduck.UI.Refactorings;
using Rubberduck.UI.Refactorings.ExtractInterface;

namespace Rubberduck.Refactorings.ExtractInterface
{
Expand All @@ -10,10 +12,10 @@ public interface IExtractInterfacePresenter

public class ExtractInterfacePresenter : IExtractInterfacePresenter
{
private readonly IExtractInterfaceDialog _view;
private readonly IRefactoringDialog<ExtractInterfaceViewModel> _view;
private readonly ExtractInterfaceModel _model;

public ExtractInterfacePresenter(IExtractInterfaceDialog view, ExtractInterfaceModel model)
public ExtractInterfacePresenter(IRefactoringDialog<ExtractInterfaceViewModel> view, ExtractInterfaceModel model)
{
_view = view;
_model = model;
Expand All @@ -26,18 +28,18 @@ public ExtractInterfaceModel Show()
return null;
}

_view.ComponentNames =
_model.TargetDeclaration.Project.VBComponents.Select(c => c.Name).ToList();
_view.InterfaceName = _model.InterfaceName;
_view.Members = _model.Members;
_view.ViewModel.ComponentNames = _model.TargetDeclaration.Project.VBComponents.Select(c => c.Name).ToList();
_view.ViewModel.InterfaceName = _model.InterfaceName;
_view.ViewModel.Members = _model.Members.ToList();

if (_view.ShowDialog() != DialogResult.OK)
_view.ShowDialog();
if (_view.DialogResult != DialogResult.OK)
{
return null;
}

_model.InterfaceName = _view.InterfaceName;
_model.Members = _view.Members;
_model.InterfaceName = _view.ViewModel.InterfaceName;
_model.Members = _view.ViewModel.Members;
return _model;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
using System.Linq;
using Rubberduck.Parsing.VBA;
using Rubberduck.UI.Refactorings;
using Rubberduck.UI.Refactorings.ExtractInterface;
using Rubberduck.VBEditor.SafeComWrappers.Abstract;

namespace Rubberduck.Refactorings.ExtractInterface
{
public class ExtractInterfacePresenterFactory : IRefactoringPresenterFactory<ExtractInterfacePresenter>
{
private readonly IVBE _vbe;
private readonly IExtractInterfaceDialog _view;
private readonly IRefactoringDialog<ExtractInterfaceViewModel> _view;
private readonly RubberduckParserState _state;

public ExtractInterfacePresenterFactory(IVBE vbe, RubberduckParserState state, IExtractInterfaceDialog view)
public ExtractInterfacePresenterFactory(IVBE vbe, RubberduckParserState state, IRefactoringDialog<ExtractInterfaceViewModel> view)
{
_vbe = vbe;
_view = view;
Expand Down

This file was deleted.

35 changes: 21 additions & 14 deletions RetailCoder.VBE/Refactorings/ExtractInterface/InterfaceMember.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Linq;
using Rubberduck.Parsing.Grammar;
using Rubberduck.Parsing.Symbols;
using Rubberduck.UI;

namespace Rubberduck.Refactorings.ExtractInterface
{
Expand All @@ -18,15 +19,26 @@ public override string ToString()
}
}

public class InterfaceMember
public class InterfaceMember : ViewModelBase
{
private Declaration Member { get; set; }
private IEnumerable<Parameter> MemberParams { get; set; }
private string Type { get; set; }
private Declaration Member { get; }
private IEnumerable<Parameter> MemberParams { get; }
private string Type { get; }

private string MemberType { get; set; }

public bool IsSelected { get; set; }
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
OnPropertyChanged();
}
}

public string Identifier { get; }

public string FullMemberSignature
{
Expand All @@ -39,9 +51,10 @@ public string FullMemberSignature
}
}

public InterfaceMember(Declaration member, IEnumerable<Declaration> declarations)
public InterfaceMember(Declaration member)
{
Member = member;
Identifier = member.IdentifierName;
Type = member.AsTypeName;

GetMethodType();
Expand Down Expand Up @@ -109,13 +122,7 @@ private void GetMethodType()
}
}

public string Body
{
get
{
return "Public " + FullMemberSignature + Environment.NewLine +
"End " + MemberType.Split(' ').First() + Environment.NewLine;
}
}
public string Body => "Public " + FullMemberSignature + Environment.NewLine +
"End " + MemberType.Split(' ').First() + Environment.NewLine;
}
}
15 changes: 11 additions & 4 deletions RetailCoder.VBE/Rubberduck.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,10 @@
<DependentUpon>EncapsulateFieldView.xaml</DependentUpon>
</Compile>
<Compile Include="UI\Refactorings\EncapsulateField\EncapsulateFieldViewModel.cs" />
<Compile Include="UI\Refactorings\ExtractInterface\ExtractInterfaceView.xaml.cs">
<DependentUpon>ExtractInterfaceView.xaml</DependentUpon>
</Compile>
<Compile Include="UI\Refactorings\ExtractInterface\ExtractInterfaceViewModel.cs" />
<Compile Include="UI\Refactorings\IAssignedByValParameterQuickFixDialog.cs" />
<Compile Include="UI\Refactorings\IAssignedByValParameterQuickFixDialogFactory.cs" />
<Compile Include="UI\Refactorings\IRefactoringDialog.cs" />
Expand Down Expand Up @@ -589,7 +593,6 @@
<Compile Include="Refactorings\ExtractInterface\ExtractInterfaceModel.cs" />
<Compile Include="Refactorings\ExtractInterface\ExtractInterfacePresenter.cs" />
<Compile Include="Refactorings\ExtractInterface\ExtractInterfacePresenterFactory.cs" />
<Compile Include="Refactorings\ExtractInterface\IExtractInterfaceDialog.cs" />
<Compile Include="Refactorings\ExtractInterface\InterfaceMember.cs" />
<Compile Include="Refactorings\ImplementInterface\ImplementInterfaceRefactoring.cs" />
<Compile Include="Refactorings\ImplementInterface\Parameter.cs" />
Expand Down Expand Up @@ -768,10 +771,10 @@
<Compile Include="UI\Refactorings\EncapsulateField\EncapsulateFieldDialog.Designer.cs">
<DependentUpon>EncapsulateFieldDialog.cs</DependentUpon>
</Compile>
<Compile Include="UI\Refactorings\ExtractInterfaceDialog.cs">
<Compile Include="UI\Refactorings\ExtractInterface\ExtractInterfaceDialog.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\Refactorings\ExtractInterfaceDialog.Designer.cs">
<Compile Include="UI\Refactorings\ExtractInterface\ExtractInterfaceDialog.Designer.cs">
<DependentUpon>ExtractInterfaceDialog.cs</DependentUpon>
</Compile>
<Compile Include="UI\RegexAssistant\RegexAssistant.xaml.cs">
Expand Down Expand Up @@ -1111,7 +1114,7 @@
<EmbeddedResource Include="UI\Refactorings\EncapsulateField\EncapsulateFieldDialog.resx">
<DependentUpon>EncapsulateFieldDialog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\Refactorings\ExtractInterfaceDialog.resx">
<EmbeddedResource Include="UI\Refactorings\ExtractInterface\ExtractInterfaceDialog.resx">
<DependentUpon>ExtractInterfaceDialog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\RegexAssistant\RegexAssistantDialog.resx">
Expand Down Expand Up @@ -1498,6 +1501,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="UI\Refactorings\ExtractInterface\ExtractInterfaceView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="UI\Refactorings\RemoveParameters\RemoveParametersView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
Expand Down
3 changes: 2 additions & 1 deletion RetailCoder.VBE/Rubberduck.csproj.DotSettings
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp60</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp60</s:String>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=ui_005Crefactorings_005Cextractinterface/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Rubberduck.Parsing.VBA;
using Rubberduck.Refactorings.ExtractInterface;
using Rubberduck.UI.Refactorings;
using Rubberduck.UI.Refactorings.ExtractInterface;
using Rubberduck.VBEditor.SafeComWrappers.Abstract;

namespace Rubberduck.UI.Command.Refactorings
Expand Down Expand Up @@ -58,7 +59,7 @@ protected override void ExecuteImpl(object parameter)
return;
}

using (var view = new ExtractInterfaceDialog())
using (var view = new ExtractInterfaceDialog(new ExtractInterfaceViewModel()))
{
var factory = new ExtractInterfacePresenterFactory(Vbe, _state, view);
var refactoring = new ExtractInterfaceRefactoring(Vbe, _state, _messageBox, factory);
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System.Windows.Forms;

namespace Rubberduck.UI.Refactorings.ExtractInterface
{
public partial class ExtractInterfaceDialog : Form, IRefactoringDialog<ExtractInterfaceViewModel>
{
public ExtractInterfaceViewModel ViewModel { get; }

private ExtractInterfaceDialog()
{
InitializeComponent();
Text = RubberduckUI.ExtractInterface_Caption;
}

public ExtractInterfaceDialog(ExtractInterfaceViewModel vm) : this()
{
ViewModel = vm;
ExtractInterfaceViewElement.DataContext = vm;
vm.OnWindowClosed += ViewModel_OnWindowClosed;
}

void ViewModel_OnWindowClosed(object sender, DialogResult result)
{
DialogResult = result;
Close();
}
}
}

0 comments on commit 79ef63c

Please sign in to comment.