Skip to content

Commit 669c4d8

Browse files
authored
Merge pull request #5357 from IvenBach/Issue5346_Extract_interface_creates_private_classes
Issue5346 extract interface creates private classes
2 parents 1bd8b48 + 97ed7d3 commit 669c4d8

File tree

8 files changed

+235
-155
lines changed

8 files changed

+235
-155
lines changed

Rubberduck.Core/UI/Command/MenuItems/CommandMenuItemBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public virtual bool EvaluateCanExecute(RubberduckParserState state)
5454
public virtual bool HiddenWhenDisabled => false;
5555
public virtual bool IsVisible => true;
5656
public virtual bool BeginGroup => false;
57-
public virtual int DisplayOrder => default(int);
57+
public virtual int DisplayOrder => default;
5858
public virtual Image Image => null;
5959
public virtual Image Mask => null;
6060
}

Rubberduck.Core/UI/Command/MenuItems/ParentMenus/ParentMenuItemBase.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public virtual Func<string> ToolTipText
6262
}
6363

6464
public virtual bool BeginGroup => false;
65-
public virtual int DisplayOrder => default(int);
65+
public virtual int DisplayOrder => default;
6666

6767
public void Localize()
6868
{
@@ -201,8 +201,7 @@ private ICommandBarControl InitializeChildControl(ICommandMenuItem item)
201201

202202
private void child_Click(object sender, CommandBarButtonClickEventArgs e)
203203
{
204-
var item = _items.Select(kvp => kvp.Key).SingleOrDefault(menu => e.Tag.EndsWith(menu.GetType().Name)) as ICommandMenuItem;
205-
if (item == null)
204+
if (!(_items.Select(kvp => kvp.Key).SingleOrDefault(menu => e.Tag.EndsWith(menu.GetType().Name)) is ICommandMenuItem item))
206205
{
207206
return;
208207
}

Rubberduck.Core/UI/Refactorings/ExtractInterface/ExtractInterfaceView.xaml

Lines changed: 152 additions & 139 deletions
Large diffs are not rendered by default.

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using NLog;
66
using Rubberduck.Parsing.Grammar;
77
using Rubberduck.Parsing.Symbols;
8-
using Rubberduck.Parsing.VBA;
98
using Rubberduck.Refactorings.ExtractInterface;
109
using Rubberduck.UI.Command;
1110

@@ -62,6 +61,26 @@ public bool IsValidInterfaceName
6261
}
6362
}
6463

64+
public bool CanChooseInterfaceInstancing => Model.ImplementingClassInstancing != ClassInstancing.Public;
65+
66+
public IEnumerable<ClassInstancing> ClassInstances => Enum.GetValues(typeof(ClassInstancing)).Cast<ClassInstancing>();
67+
68+
public ClassInstancing InterfaceInstancing
69+
{
70+
get => Model.InterfaceInstancing;
71+
72+
set
73+
{
74+
if (value == Model.InterfaceInstancing)
75+
{
76+
return;
77+
}
78+
79+
Model.InterfaceInstancing = value;
80+
OnPropertyChanged();
81+
}
82+
}
83+
6584
private void ToggleSelection(bool value)
6685
{
6786
foreach (var item in Members)

Rubberduck.Parsing/VBA/RubberduckParserState.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -603,25 +603,24 @@ public ParserState GetModuleState(QualifiedModuleName module)
603603
return _moduleStates.GetOrAdd(module, new ModuleState(ParserState.Pending)).State;
604604
}
605605

606-
private readonly object _statusLockObject = new object();
607-
private ParserState _status;
608-
public ParserState Status => _status;
606+
private readonly object _statusLockObject = new object();
607+
public ParserState Status { get; private set; }
609608

610609
private void SetStatusWithCancellation(ParserState value, CancellationToken token)
611610
{
612-
if (_status != value)
611+
if (Status != value)
613612
{
614-
var oldStatus = _status;
615-
_status = value;
616-
OnStateChanged(this, token, _status, oldStatus);
613+
var oldStatus = Status;
614+
Status = value;
615+
OnStateChanged(this, token, Status, oldStatus);
617616
}
618617
}
619618

620619
public void SetStatusAndFireStateChanged(object requestor, ParserState status, CancellationToken token)
621620
{
622621
if (Status == status)
623622
{
624-
OnStateChanged(requestor, token, status, _status);
623+
OnStateChanged(requestor, token, status, Status);
625624
}
626625
else
627626
{

Rubberduck.Resources/RubberduckUI.Designer.cs

Lines changed: 38 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Rubberduck.Resources/RubberduckUI.resx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1819,6 +1819,20 @@ Import aborted.</value>
18191819
<value>The component '{0}' would have been affected by the refactoring, but its state in Rubberduck's memory is stale. Please refresh Rubberduck and try again.</value>
18201820
<comment>{0} stale module</comment>
18211821
</data>
1822+
<data name="ExtractInterface_InstancingGroupBox" xml:space="preserve">
1823+
<value>Instancing</value>
1824+
</data>
1825+
<data name="ExtractInterface_Private" xml:space="preserve">
1826+
<value>Private</value>
1827+
</data>
1828+
<data name="ExtractInterface_Public" xml:space="preserve">
1829+
<value>Public</value>
1830+
</data>
1831+
<data name="ExtractInterface_PublicInstancingMandatedByPublicClass" xml:space="preserve">
1832+
<value>The implementing class is 'Public' mandating the interface be public as well.
1833+
If you require a 'Private' interface, change the classes instancing to private as well.
1834+
A private class can still implement a public interface.</value>
1835+
</data>
18221836
<data name="AnnotateDeclarationDialog_Caption" xml:space="preserve">
18231837
<value>Rubberduck - Annotate Declaration</value>
18241838
</data>
@@ -1911,8 +1925,7 @@ Do you want to proceed?</value>
19111925
</data>
19121926
<data name="MoveFolders_SameNameSourceFolders" xml:space="preserve">
19131927
<value>Several folders with the same name are being moved. This will merge them.
1914-
Do you want to proceed?</value>
1915-
1928+
Do you want to proceed?</value>
19161929
</data>
19171930
<data name="MoveFolders_EmptyFolderName" xml:space="preserve">
19181931
<value>A folder name cannot be empty.</value>

Rubberduck.VBEditor.VBA/SafeComWrappers/Office/CommandBarButton.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System.Runtime.InteropServices;
44
using System.Windows.Forms;
55
using Microsoft.CSharp.RuntimeBinder;
6-
using NLog;
76
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
87
using MSO = Microsoft.Office.Core;
98

0 commit comments

Comments
 (0)