Skip to content

Commit c6794d9

Browse files
committed
Merge pull request #660 from ckuhn203/sourcecontrol
Sourcecontrol - Clean up
2 parents 3eb9bfc + 1caad28 commit c6794d9

14 files changed

+156
-64
lines changed

RetailCoder.VBE/Rubberduck.csproj

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@
290290
<DependentUpon>AddMarkerForm.cs</DependentUpon>
291291
</Compile>
292292
<Compile Include="UI\Settings\IAddTodoSettingsView.cs" />
293+
<Compile Include="UI\SourceControl\ActionFailedEventArgs.cs" />
293294
<Compile Include="UI\SourceControl\App.cs" />
294295
<Compile Include="Properties\Annotations.cs" />
295296
<Compile Include="Properties\Resources.Designer.cs">
@@ -406,10 +407,11 @@
406407
<Compile Include="UI\SourceControl\ICreateBranchView.cs" />
407408
<Compile Include="UI\SourceControl\IDeleteBranchView.cs" />
408409
<Compile Include="UI\SourceControl\IMergeView.cs" />
409-
<Compile Include="UI\SourceControl\IProviderPresenter.cs" />
410+
<Compile Include="UI\SourceControl\ProviderPresenter.cs" />
411+
<Compile Include="UI\SourceControl\IRefreshableView.cs" />
410412
<Compile Include="UI\SourceControl\ISettingsView.cs" />
411413
<Compile Include="UI\SourceControl\ISourceControlView.cs" />
412-
<Compile Include="UI\SourceControl\IUnsyncedCommitsView.cs" />
414+
<Compile Include="UI\SourceControl\IUnSyncedCommitsView.cs" />
413415
<Compile Include="UI\SourceControl\MergeForm.cs">
414416
<SubType>Form</SubType>
415417
</Compile>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System;
2+
using Rubberduck.SourceControl;
3+
4+
namespace Rubberduck.UI.SourceControl
5+
{
6+
public class ActionFailedEventArgs : EventArgs
7+
{
8+
private readonly string _message;
9+
public string Message { get { return _message; } }
10+
11+
private readonly string _title;
12+
public string Title { get { return _title; } }
13+
14+
public ActionFailedEventArgs(string title, string message)
15+
{
16+
_title = title;
17+
_message = message;
18+
}
19+
20+
public ActionFailedEventArgs(SourceControlException ex)
21+
: this(ex.Message, ex.InnerException.Message) { }
22+
}
23+
}

RetailCoder.VBE/UI/SourceControl/BranchesPresenter.cs

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,18 @@
66

77
namespace Rubberduck.UI.SourceControl
88
{
9-
public interface IBranchesPresenter : IProviderPresenter
9+
public interface IBranchesPresenter : IProviderPresenter, IRefreshable
1010
{
11-
void RefreshView();
1211
event EventHandler<EventArgs> BranchChanged;
1312
}
1413

15-
public class BranchesPresenter : IBranchesPresenter
14+
public class BranchesPresenter : ProviderPresenterBase, IBranchesPresenter
1615
{
1716
private readonly IBranchesView _view;
1817
private readonly ICreateBranchView _createView;
1918
private readonly IDeleteBranchView _deleteView;
2019
private readonly IMergeView _mergeView;
2120

22-
public ISourceControlProvider Provider { get; set; }
23-
2421
public event EventHandler<EventArgs> BranchChanged;
2522

2623
public BranchesPresenter
@@ -78,7 +75,10 @@ private void OnSelectedBranchChanged(object sender, EventArgs e)
7875
catch (SourceControlException ex)
7976
{
8077
//todo: find a better way of displaying these errors
78+
//todo: remove messagebox
8179
MessageBox.Show(ex.InnerException.Message, ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
80+
81+
RaiseActionFailedEvent(ex);
8282
}
8383

8484
if (BranchChanged != null)
@@ -146,7 +146,16 @@ private void OnDeleteViewSelectionChanged(object sender, BranchDeleteArgs e)
146146
private void OnDeleteBranch(object sender, BranchDeleteArgs e)
147147
{
148148
_deleteView.Hide();
149-
Provider.DeleteBranch(e.BranchName);
149+
150+
try
151+
{
152+
Provider.DeleteBranch(e.BranchName);
153+
}
154+
catch (SourceControlException ex)
155+
{
156+
RaiseActionFailedEvent(ex);
157+
}
158+
150159
RefreshView();
151160
}
152161

@@ -165,7 +174,16 @@ private void OnShowCreateBranchView(object sender, EventArgs e)
165174
private void OnCreateBranch(object sender, BranchCreateArgs e)
166175
{
167176
HideCreateBranchView();
168-
this.Provider.CreateBranch(e.BranchName);
177+
178+
try
179+
{
180+
this.Provider.CreateBranch(e.BranchName);
181+
}
182+
catch (SourceControlException ex)
183+
{
184+
RaiseActionFailedEvent(ex);
185+
}
186+
169187
RefreshView();
170188
}
171189

@@ -212,6 +230,7 @@ private void OnMerge(object sender, EventArgs e)
212230
{
213231
_mergeView.Status = MergeStatus.Failure;
214232
_mergeView.StatusText = ex.Message + ": " + ex.InnerException.Message;
233+
//todo: raise action failed event?
215234
}
216235
}
217236

RetailCoder.VBE/UI/SourceControl/ChangesPresenter.cs

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,15 @@
55

66
namespace Rubberduck.UI.SourceControl
77
{
8-
public interface IChangesPresenter : IProviderPresenter
8+
public interface IChangesPresenter : IProviderPresenter, IRefreshable
99
{
10-
void Refresh();
1110
void Commit();
1211
}
1312

14-
public class ChangesPresenter : IChangesPresenter
13+
public class ChangesPresenter : ProviderPresenterBase, IChangesPresenter
1514
{
1615
private readonly IChangesView _view;
1716

18-
public ISourceControlProvider Provider { get; set; }
19-
2017
public ChangesPresenter(IChangesView view)
2118
{
2219
_view = view;
@@ -47,7 +44,7 @@ private bool ShouldEnableCommit()
4744
return !string.IsNullOrEmpty(_view.CommitMessage) && _view.CommitAction != CommitAction.Unset;
4845
}
4946

50-
public void Refresh()
47+
public void RefreshView()
5148
{
5249
var fileStats = this.Provider.Status().ToList();
5350

@@ -67,26 +64,33 @@ public void Commit()
6764
return;
6865
}
6966

70-
this.Provider.Stage(changes);
71-
this.Provider.Commit(_view.CommitMessage);
72-
73-
if (_view.CommitAction == CommitAction.CommitAndSync)
67+
try
7468
{
75-
this.Provider.Pull();
76-
this.Provider.Push();
69+
this.Provider.Stage(changes);
70+
this.Provider.Commit(_view.CommitMessage);
71+
72+
if (_view.CommitAction == CommitAction.CommitAndSync)
73+
{
74+
this.Provider.Pull();
75+
this.Provider.Push();
76+
}
77+
78+
if (_view.CommitAction == CommitAction.CommitAndPush)
79+
{
80+
this.Provider.Push();
81+
}
7782
}
78-
79-
if (_view.CommitAction == CommitAction.CommitAndPush)
83+
catch(SourceControlException ex)
8084
{
81-
this.Provider.Push();
85+
RaiseActionFailedEvent(ex);
8286
}
8387
}
8488

8589
private void OnCommit(object sender, EventArgs e)
8690
{
8791
Commit();
8892
_view.CommitMessage = string.Empty;
89-
Refresh();
93+
RefreshView();
9094
}
9195
}
9296
}

RetailCoder.VBE/UI/SourceControl/DeleteBranchForm.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Diagnostics.CodeAnalysis;
34
using System.Windows.Forms;
45

56
namespace Rubberduck.UI.SourceControl
67
{
8+
[ExcludeFromCodeCoverage]
79
public partial class DeleteBranchForm : Form, IDeleteBranchView
810
{
911
public DeleteBranchForm()

RetailCoder.VBE/UI/SourceControl/IProviderPresenter.cs

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Rubberduck.UI.SourceControl
2+
{
3+
public interface IRefreshable
4+
{
5+
void RefreshView();
6+
}
7+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using Rubberduck.SourceControl;
3+
4+
namespace Rubberduck.UI.SourceControl
5+
{
6+
public interface IProviderPresenter
7+
{
8+
ISourceControlProvider Provider { get; set; }
9+
event EventHandler<ActionFailedEventArgs> ActionFailed;
10+
}
11+
12+
public abstract class ProviderPresenterBase : IProviderPresenter
13+
{
14+
public virtual ISourceControlProvider Provider { get; set; }
15+
16+
public event EventHandler<ActionFailedEventArgs> ActionFailed;
17+
protected virtual void RaiseActionFailedEvent(SourceControlException ex)
18+
{
19+
var handler = ActionFailed;
20+
if (handler != null)
21+
{
22+
handler(this, new ActionFailedEventArgs(ex));
23+
}
24+
}
25+
}
26+
}

RetailCoder.VBE/UI/SourceControl/SettingsPresenter.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,17 @@
77

88
namespace Rubberduck.UI.SourceControl
99
{
10-
public interface ISettingsPresenter : IProviderPresenter
10+
public interface ISettingsPresenter : IProviderPresenter, IRefreshable
1111
{
12-
void RefreshView();
1312
}
1413

15-
public class SettingsPresenter : ISettingsPresenter
14+
public class SettingsPresenter : ProviderPresenterBase, ISettingsPresenter
1615
{
1716
private readonly ISettingsView _view;
1817
private readonly IConfigurationService<SourceControlConfiguration> _configurationService;
1918
private readonly IFolderBrowserFactory _folderBrowserFactory;
2019
private SourceControlConfiguration _config;
2120

22-
public ISourceControlProvider Provider { get; set; }
23-
2421
public SettingsPresenter(ISettingsView view, IConfigurationService<SourceControlConfiguration> configService, IFolderBrowserFactory folderBrowserFactory)
2522
{
2623
_configurationService = configService;

RetailCoder.VBE/UI/SourceControl/SourceControlPresenter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public SourceControlPresenter
4848

4949
private void _branchesPresenter_BranchChanged(object sender, EventArgs e)
5050
{
51-
_changesPresenter.Refresh();
51+
_changesPresenter.RefreshView();
5252
}
5353

5454
private void OnInitNewRepository(object sender, EventArgs e)
@@ -147,7 +147,7 @@ private void SetChildPresenterSourceControlProviders(ISourceControlProvider prov
147147
_unsyncedPresenter.Provider = provider;
148148

149149
_branchesPresenter.RefreshView();
150-
_changesPresenter.Refresh();
150+
_changesPresenter.RefreshView();
151151
// Purposely not refreshing settingsPresenter.
152152
// Settings it's provider doesn't affect it's view.
153153
}

0 commit comments

Comments
 (0)