Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
761871a
Removed function already available in Declaration class
BZngr Mar 13, 2017
2d80a08
Reworked to simplify tests
BZngr Mar 14, 2017
a8b3624
Catch up with changes to RD. Merge remote-tracking branch 'rubberduc…
BZngr Mar 14, 2017
a6986fa
Fix ByVal RaiseEvent arguments. Closes #2870
comintern Mar 15, 2017
dd3565d
Remove ByRef from RaiseEvent, add unit tests.
comintern Mar 15, 2017
f805000
Merge branch 'next' into next
comintern Mar 15, 2017
7cc7629
Merge pull request #2871 from comintern/next
retailcoder Mar 15, 2017
8d6664f
Modifed to handle name conflicts in any reference's scope. Refactore…
BZngr Mar 15, 2017
9b97570
Some Minor cleanup
BZngr Mar 15, 2017
03ed9a6
Updated from RD latest merge. Merge remote-tracking branch 'rubberdu…
BZngr Mar 15, 2017
1dd9d64
Minor tweak
BZngr Mar 15, 2017
3d4f567
UI is mostly done
Hosch250 Mar 15, 2017
e57e665
New Encapsulate Field dialog
Hosch250 Mar 16, 2017
1aba356
Remove a couple UI tests
Hosch250 Mar 16, 2017
90462bd
Add field to preview
Hosch250 Mar 16, 2017
bd5ee3e
Resize window when pane is collapsed
Hosch250 Mar 16, 2017
cf20f00
Make dialog implement interface
Hosch250 Mar 16, 2017
641c99d
Revert "Remove a couple UI tests"
Hosch250 Mar 16, 2017
2b9f3d6
Merge pull request #2875 from Hosch250/EncapsulateFieldDialog
retailcoder Mar 16, 2017
b73906e
Merge branch 'next' into next
retailcoder Mar 16, 2017
972c864
Remove a couple tests relying on the mocking behavior
Hosch250 Mar 16, 2017
9564bc6
Make other replaced dialogs implement new interface
Hosch250 Mar 16, 2017
6e57e22
Merge branch 'next' into EncapsulateFieldDialog
Hosch250 Mar 16, 2017
e0ff608
Merge pull request #2876 from Hosch250/EncapsulateFieldDialog
Hosch250 Mar 16, 2017
9bba100
Fix binding issue
Hosch250 Mar 16, 2017
a1d7768
Merge branch 'EncapsulateFieldDialog' of https://github.com/Hosch250/…
Hosch250 Mar 16, 2017
f8d0f02
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
Hosch250 Mar 16, 2017
a41b932
Merge pull request #2877 from Hosch250/EncapsulateFieldDialog
Hosch250 Mar 16, 2017
4bc4fd4
Updated to latest RD/next. Merge remote-tracking branch 'rubberduck-…
BZngr Mar 16, 2017
b788f27
Merge branch 'next' of https://github.com/BZngr/Rubberduck into next
BZngr Mar 16, 2017
2cf9c4f
Removed Built-in declarations from names to avoid list to improve res…
BZngr Mar 16, 2017
5360369
Removed Option Explicit module options from test cases to avoid false…
BZngr Mar 16, 2017
79ef63c
Replace Extract Interface dialog
Hosch250 Mar 16, 2017
a3a0dc5
Merge pull request #2880 from Hosch250/ExtractInterfaceDialog
retailcoder Mar 17, 2017
2d44b1b
Merge branch 'next' into next
retailcoder Mar 17, 2017
63785c4
Merge pull request #2872 from BZngr/next
retailcoder Mar 17, 2017
9a41a66
Merge branch 'rd-next' into next
retailcoder Mar 17, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
using Rubberduck.Parsing.VBA;
using Rubberduck.Refactorings.EncapsulateField;
using Rubberduck.SmartIndenter;
using Rubberduck.UI.Refactorings;
using Rubberduck.UI.Refactorings.EncapsulateField;
using Rubberduck.VBEditor;

namespace Rubberduck.Inspections.QuickFixes
Expand All @@ -32,7 +32,7 @@ public override void Fix()
{
var vbe = _target.Project.VBE;

using (var view = new EncapsulateFieldDialog(_state, _indenter))
using (var view = new EncapsulateFieldDialog(new EncapsulateFieldViewModel(_state, _indenter)))
{
var factory = new EncapsulateFieldPresenterFactory(vbe, _state, view);
var refactoring = new EncapsulateFieldRefactoring(vbe, _indenter, factory);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
using Rubberduck.Parsing;
using Rubberduck.Parsing.Grammar;
using Rubberduck.Parsing.Symbols;
using Rubberduck.UI.Refactorings;
using Rubberduck.UI.Refactorings.EncapsulateField;

namespace Rubberduck.Refactorings.EncapsulateField
{
Expand All @@ -14,10 +16,10 @@ public interface IEncapsulateFieldPresenter

public class EncapsulateFieldPresenter : IEncapsulateFieldPresenter
{
private readonly IEncapsulateFieldDialog _view;
private readonly IRefactoringDialog<EncapsulateFieldViewModel> _view;
private readonly EncapsulateFieldModel _model;

public EncapsulateFieldPresenter(IEncapsulateFieldDialog view, EncapsulateFieldModel model)
public EncapsulateFieldPresenter(IRefactoringDialog<EncapsulateFieldViewModel> view, EncapsulateFieldModel model)
{
_view = view;
_model = model;
Expand All @@ -27,13 +29,31 @@ public EncapsulateFieldModel Show()
{
if (_model.TargetDeclaration == null) { return null; }

_view.TargetDeclaration = _model.TargetDeclaration;
_view.NewPropertyName = _model.TargetDeclaration.IdentifierName;
_view.ViewModel.TargetDeclaration = _model.TargetDeclaration;

var isVariant = _model.TargetDeclaration.AsTypeName.Equals(Tokens.Variant);
var isValueType = !isVariant && (SymbolList.ValueTypes.Contains(_model.TargetDeclaration.AsTypeName) ||
_model.TargetDeclaration.DeclarationType == DeclarationType.Enumeration);

AssignSetterAndLetterAvailability(isVariant, isValueType);

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

_model.PropertyName = _view.ViewModel.PropertyName;
_model.ImplementLetSetterType = _view.ViewModel.CanHaveLet;
_model.ImplementSetSetterType = _view.ViewModel.CanHaveSet;
_model.CanImplementLet = _view.ViewModel.CanHaveSet && !_view.ViewModel.CanHaveSet;

_model.ParameterName = _view.ViewModel.ParameterName;
return _model;
}

private void AssignSetterAndLetterAvailability(bool isVariant, bool isValueType)
{
if (_model.TargetDeclaration.References.Any(r => r.IsAssignment))
{
if (isVariant)
Expand All @@ -46,51 +66,38 @@ public EncapsulateFieldModel Show()

if (node is VBAParser.LetStmtContext)
{
_view.CanImplementLetSetterType = true;
_view.ViewModel.CanHaveLet = true;
}
else
{
_view.CanImplementSetSetterType = true;
}
_view.ViewModel.CanHaveSet = true;
}
}
else if (isValueType)
{
_view.CanImplementLetSetterType = true;
_view.ViewModel.CanHaveLet = true;
}
else
{
_view.CanImplementSetSetterType = true;
_view.ViewModel.CanHaveSet = true;
}
}
else
{
if (isValueType)
{
_view.CanImplementLetSetterType = true;
_view.ViewModel.CanHaveLet = true;
}
else if (!isVariant)
{
_view.CanImplementSetSetterType = true;
_view.ViewModel.CanHaveSet = true;
}
else
{
_view.CanImplementLetSetterType = true;
_view.CanImplementSetSetterType = true;
_view.ViewModel.CanHaveLet = true;
_view.ViewModel.CanHaveSet = true;
}
}

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

_model.PropertyName = _view.NewPropertyName;
_model.ImplementLetSetterType = _view.CanImplementLetSetterType;
_model.ImplementSetSetterType = _view.CanImplementSetSetterType;
_model.CanImplementLet = !_view.MustImplementSetSetterType;

_model.ParameterName = _view.ParameterName;
return _model;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
using Rubberduck.Parsing.VBA;
using Rubberduck.UI.Refactorings;
using Rubberduck.UI.Refactorings.EncapsulateField;
using Rubberduck.VBEditor.SafeComWrappers.Abstract;

namespace Rubberduck.Refactorings.EncapsulateField
{
public class EncapsulateFieldPresenterFactory : IRefactoringPresenterFactory<EncapsulateFieldPresenter>
{
private readonly IVBE _vbe;
private readonly IEncapsulateFieldDialog _view;
private readonly IRefactoringDialog<EncapsulateFieldViewModel> _view;
private readonly RubberduckParserState _state;

public EncapsulateFieldPresenterFactory(IVBE vbe, RubberduckParserState state, IEncapsulateFieldDialog view)
public EncapsulateFieldPresenterFactory(IVBE vbe, RubberduckParserState state, IRefactoringDialog<EncapsulateFieldViewModel> view)
{
_vbe = vbe;
_view = view;
Expand Down
52 changes: 23 additions & 29 deletions RetailCoder.VBE/Refactorings/EncapsulateField/PropertyGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,9 @@ public class PropertyGenerator
public bool GenerateLetter { get; set; }
public bool GenerateSetter { get; set; }

public string AllPropertyCode
{
get
{
return GetterCode +
(GenerateLetter ? LetterCode : string.Empty) +
(GenerateSetter ? SetterCode : string.Empty);
}
}
public string AllPropertyCode => GetterCode +
(GenerateLetter ? LetterCode : string.Empty) +
(GenerateSetter ? SetterCode : string.Empty);

public string GetterCode
{
Expand All @@ -28,21 +22,21 @@ public string GetterCode
if (GenerateSetter && GenerateLetter)
{
return string.Join(Environment.NewLine,
string.Format("Public Property Get {0}() As {1}", PropertyName, AsTypeName),
string.Format(" If IsObject({0}) Then", BackingField),
string.Format(" Set {0} = {1}", PropertyName, BackingField),
" Else",
string.Format(" {0} = {1}", PropertyName, BackingField),
" End If",
"End Property",
Environment.NewLine);
$"Public Property Get {PropertyName}() As {AsTypeName}",
$" If IsObject({BackingField}) Then",
$" Set {PropertyName} = {BackingField}",
" Else",
$" {PropertyName} = {BackingField}",
" End If",
"End Property",
Environment.NewLine);
}

return string.Join(Environment.NewLine,
string.Format("Public Property Get {0}() As {1}", PropertyName, AsTypeName),
string.Format(" {0}{1} = {2}", GenerateSetter ? "Set " : string.Empty, PropertyName, BackingField),
"End Property",
Environment.NewLine);
$"Public Property Get {PropertyName}() As {AsTypeName}",
$" {(GenerateSetter ? "Set " : string.Empty)}{PropertyName} = {BackingField}",
"End Property",
Environment.NewLine);
}
}

Expand All @@ -55,10 +49,10 @@ public string SetterCode
return string.Empty;
}
return string.Join(Environment.NewLine,
string.Format("Public Property Set {0}(ByVal {1} As {2})", PropertyName, ParameterName, AsTypeName),
string.Format(" Set {0} = {1}", BackingField, ParameterName),
"End Property",
Environment.NewLine);
$"Public Property Set {PropertyName}(ByVal {ParameterName} As {AsTypeName})",
$" Set {BackingField} = {ParameterName}",
"End Property",
Environment.NewLine);
}
}

Expand All @@ -71,10 +65,10 @@ public string LetterCode
return string.Empty;
}
return string.Join(Environment.NewLine,
string.Format("Public Property Let {0}(ByVal {1} As {2})", PropertyName, ParameterName, AsTypeName),
string.Format(" {0} = {1}", BackingField, ParameterName),
"End Property",
Environment.NewLine);
$"Public Property Let {PropertyName}(ByVal {ParameterName} As {AsTypeName})",
$" {BackingField} = {ParameterName}",
"End Property",
Environment.NewLine);
}
}
}
Expand Down
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;
}
}
Loading