Skip to content

Commit 34a80c7

Browse files
committed
Reorganizing of UI support classes
1 parent 50e4b67 commit 34a80c7

File tree

3 files changed

+130
-124
lines changed

3 files changed

+130
-124
lines changed

Rubberduck.Core/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs

Lines changed: 61 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -12,72 +12,10 @@ namespace Rubberduck.UI.Refactorings.EncapsulateField
1212
{
1313
public class EncapsulateFieldViewModel : RefactoringViewModelBase<EncapsulateFieldModel>
1414
{
15-
private class MasterDetailSelectionManager
16-
{
17-
private const string _neverATargetID = "_Never_a_TargetID_";
18-
private bool _detailFieldIsFlagged;
19-
20-
public MasterDetailSelectionManager(IEncapsulateFieldCandidate selected)
21-
: this(selected?.TargetID)
22-
{
23-
if (selected != null)
24-
{
25-
DetailField = new ViewableEncapsulatedField(selected);
26-
}
27-
}
28-
29-
private MasterDetailSelectionManager(string targetID)
30-
{
31-
SelectionTargetID = targetID;
32-
DetailField = null;
33-
_detailFieldIsFlagged = false;
34-
}
35-
36-
37-
private IEncapsulatedFieldViewData _detailField;
38-
public IEncapsulatedFieldViewData DetailField
39-
{
40-
set
41-
{
42-
_detailField = value;
43-
_detailFieldIsFlagged = _detailField?.EncapsulateFlag ?? false;
44-
}
45-
get => _detailField;
46-
}
47-
48-
private string _selectionTargetID;
49-
public string SelectionTargetID
50-
{
51-
set => _selectionTargetID = value;
52-
get => _selectionTargetID ?? _neverATargetID;
53-
}
54-
55-
public bool DetailUpdateRequired
56-
{
57-
get
58-
{
59-
if (DetailField is null)
60-
{
61-
return true;
62-
}
63-
64-
if (_detailFieldIsFlagged != DetailField.EncapsulateFlag)
65-
{
66-
_detailFieldIsFlagged = !_detailFieldIsFlagged;
67-
return true;
68-
}
69-
return SelectionTargetID != DetailField?.TargetID;
70-
}
71-
}
72-
}
73-
7415
private MasterDetailSelectionManager _masterDetailManager;
75-
public RubberduckParserState State { get; }
7616

77-
public EncapsulateFieldViewModel(EncapsulateFieldModel model, RubberduckParserState state) : base(model)
17+
public EncapsulateFieldViewModel(EncapsulateFieldModel model) : base(model)
7818
{
79-
State = state;
80-
8119
SelectAllCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => ToggleSelection(true));
8220
DeselectAllCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => ToggleSelection(false));
8321

@@ -159,18 +97,6 @@ public IObjectStateUDT SelectedObjectStateUDT
15997
}
16098
}
16199

162-
private void SetObjectStateUDT()
163-
{
164-
foreach (var field in UDTFields)
165-
{
166-
field.IsSelected = _selectedObjectStateUDT == field;
167-
}
168-
OnPropertyChanged(nameof(SelectedObjectStateUDT));
169-
OnPropertyChanged(nameof(EncapsulationFields));
170-
OnPropertyChanged(nameof(PropertiesPreview));
171-
}
172-
173-
174100
public IEncapsulatedFieldViewData SelectedField
175101
{
176102
set
@@ -191,25 +117,6 @@ public IEncapsulatedFieldViewData SelectedField
191117
get => EncapsulationFields.FirstOrDefault(f => f.TargetID.Equals(_masterDetailManager.SelectionTargetID));
192118
}
193119

194-
private void UpdateDetailForSelection()
195-
{
196-
197-
RefreshValidationResults();
198-
199-
OnPropertyChanged(nameof(SelectedFieldIsNotFlagged));
200-
OnPropertyChanged(nameof(GroupBoxHeaderContent));
201-
OnPropertyChanged(nameof(PropertyName));
202-
OnPropertyChanged(nameof(IsReadOnly));
203-
OnPropertyChanged(nameof(HasValidNames));
204-
OnPropertyChanged(nameof(EnableReadOnlyOption));
205-
OnPropertyChanged(nameof(SelectedFieldIsPrivateUDT));
206-
OnPropertyChanged(nameof(SelectedFieldHasEditablePropertyName));
207-
OnPropertyChanged(nameof(SelectionHasValidEncapsulationAttributes));
208-
OnPropertyChanged(nameof(PropertiesPreview));
209-
OnPropertyChanged(nameof(EncapsulationFields));
210-
OnPropertyChanged(nameof(ValidationErrorMessage));
211-
}
212-
213120
public string PropertyName
214121
{
215122
set
@@ -291,34 +198,31 @@ public bool ConvertFieldsToUDTMembers
291198
private bool _selectionHasValidEncapsulationAttributes;
292199
public bool SelectionHasValidEncapsulationAttributes => _selectionHasValidEncapsulationAttributes;
293200

294-
private Dictionary<string, string> _failedValidationResults = new Dictionary<string, string>();
295-
private void RefreshValidationResults()
296-
{
297-
_failedValidationResults.Clear();
298-
_hasValidNames = true;
299-
_selectionHasValidEncapsulationAttributes = true;
300-
_validationErrorMessage = string.Empty;
201+
public string PropertiesPreview => Model.PreviewRefactoring();
301202

302-
foreach (var field in EncapsulationFields.Where(ef => ef.EncapsulateFlag))
303-
{
304-
if (!field.TryValidateEncapsulationAttributes(out var errorMessage))
305-
{
306-
_failedValidationResults.Add(field.TargetID, errorMessage);
307-
}
308-
}
203+
public CommandBase SelectAllCommand { get; }
309204

310-
_hasValidNames = !_failedValidationResults.Any();
311-
if (_failedValidationResults.TryGetValue(_masterDetailManager.SelectionTargetID, out var errorMsg))
205+
public CommandBase DeselectAllCommand { get; }
206+
207+
public CommandBase IsReadOnlyCommand { get; }
208+
209+
public CommandBase PropertyChangeCommand { get; }
210+
211+
public CommandBase EncapsulateFlagChangeCommand { get; }
212+
213+
public CommandBase ReadOnlyChangeCommand { get; }
214+
215+
private void SetObjectStateUDT()
216+
{
217+
foreach (var field in UDTFields)
312218
{
313-
_validationErrorMessage = errorMsg;
314-
_selectionHasValidEncapsulationAttributes = false;
219+
field.IsSelected = _selectedObjectStateUDT == field;
315220
}
221+
OnPropertyChanged(nameof(SelectedObjectStateUDT));
222+
OnPropertyChanged(nameof(EncapsulationFields));
223+
OnPropertyChanged(nameof(PropertiesPreview));
316224
}
317225

318-
public string PropertiesPreview => Model.PreviewRefactoring();
319-
320-
public CommandBase SelectAllCommand { get; }
321-
public CommandBase DeselectAllCommand { get; }
322226
private void ToggleSelection(bool value)
323227
{
324228
_lastCheckedBoxes.Clear();
@@ -340,11 +244,48 @@ private void ToggleSelection(bool value)
340244
UpdateDetailForSelection();
341245
}
342246

343-
public CommandBase IsReadOnlyCommand { get; }
344-
public CommandBase PropertyChangeCommand { get; }
247+
private Dictionary<string, string> _failedValidationResults = new Dictionary<string, string>();
248+
private void RefreshValidationResults()
249+
{
250+
_failedValidationResults.Clear();
251+
_hasValidNames = true;
252+
_selectionHasValidEncapsulationAttributes = true;
253+
_validationErrorMessage = string.Empty;
345254

346-
public CommandBase EncapsulateFlagChangeCommand { get; }
347-
public CommandBase ReadOnlyChangeCommand { get; }
255+
foreach (var field in EncapsulationFields.Where(ef => ef.EncapsulateFlag))
256+
{
257+
if (!field.TryValidateEncapsulationAttributes(out var errorMessage))
258+
{
259+
_failedValidationResults.Add(field.TargetID, errorMessage);
260+
}
261+
}
262+
263+
_hasValidNames = !_failedValidationResults.Any();
264+
if (_failedValidationResults.TryGetValue(_masterDetailManager.SelectionTargetID, out var errorMsg))
265+
{
266+
_validationErrorMessage = errorMsg;
267+
_selectionHasValidEncapsulationAttributes = false;
268+
}
269+
}
270+
271+
private void UpdateDetailForSelection()
272+
{
273+
274+
RefreshValidationResults();
275+
276+
OnPropertyChanged(nameof(SelectedFieldIsNotFlagged));
277+
OnPropertyChanged(nameof(GroupBoxHeaderContent));
278+
OnPropertyChanged(nameof(PropertyName));
279+
OnPropertyChanged(nameof(IsReadOnly));
280+
OnPropertyChanged(nameof(HasValidNames));
281+
OnPropertyChanged(nameof(EnableReadOnlyOption));
282+
OnPropertyChanged(nameof(SelectedFieldIsPrivateUDT));
283+
OnPropertyChanged(nameof(SelectedFieldHasEditablePropertyName));
284+
OnPropertyChanged(nameof(SelectionHasValidEncapsulationAttributes));
285+
OnPropertyChanged(nameof(PropertiesPreview));
286+
OnPropertyChanged(nameof(EncapsulationFields));
287+
OnPropertyChanged(nameof(ValidationErrorMessage));
288+
}
348289

349290
private void ChangeIsReadOnlyFlag(object param)
350291
{
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using Rubberduck.Refactorings.EncapsulateField;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace Rubberduck.UI.Refactorings.EncapsulateField
9+
{
10+
public class MasterDetailSelectionManager
11+
{
12+
private const string _neverATargetID = "_Never_a_TargetID_";
13+
private bool _detailFieldIsFlagged;
14+
15+
public MasterDetailSelectionManager(IEncapsulateFieldCandidate selected)
16+
: this(selected?.TargetID)
17+
{
18+
if (selected != null)
19+
{
20+
DetailField = new ViewableEncapsulatedField(selected);
21+
}
22+
}
23+
24+
private MasterDetailSelectionManager(string targetID)
25+
{
26+
SelectionTargetID = targetID;
27+
DetailField = null;
28+
_detailFieldIsFlagged = false;
29+
}
30+
31+
32+
private IEncapsulatedFieldViewData _detailField;
33+
public IEncapsulatedFieldViewData DetailField
34+
{
35+
set
36+
{
37+
_detailField = value;
38+
_detailFieldIsFlagged = _detailField?.EncapsulateFlag ?? false;
39+
}
40+
get => _detailField;
41+
}
42+
43+
private string _selectionTargetID;
44+
public string SelectionTargetID
45+
{
46+
set => _selectionTargetID = value;
47+
get => _selectionTargetID ?? _neverATargetID;
48+
}
49+
50+
public bool DetailUpdateRequired
51+
{
52+
get
53+
{
54+
if (DetailField is null)
55+
{
56+
return true;
57+
}
58+
59+
if (_detailFieldIsFlagged != DetailField.EncapsulateFlag)
60+
{
61+
_detailFieldIsFlagged = !_detailFieldIsFlagged;
62+
return true;
63+
}
64+
return SelectionTargetID != DetailField?.TargetID;
65+
}
66+
}
67+
}
68+
69+
}

Rubberduck.Core/UI/Refactorings/EncapsulateField/ViewableEncapsulatedField.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,6 @@ public bool HasValidEncapsulationAttributes
5757
public bool TryValidateEncapsulationAttributes(out string errorMessage)
5858
{
5959
errorMessage = string.Empty;
60-
if (IsPrivateUserDefinedType)
61-
{
62-
return true;
63-
}
6460
return _efd.TryValidateEncapsulationAttributes(out errorMessage);
6561
}
6662

0 commit comments

Comments
 (0)