@@ -21,9 +21,12 @@ public BranchesViewViewModel()
21
21
_mergeBranchesOkButtonCommand = new DelegateCommand ( _ => MergeBranchOk ( ) , _ => SourceBranch != DestinationBranch ) ;
22
22
_mergeBranchesCancelButtonCommand = new DelegateCommand ( _ => MergeBranchCancel ( ) ) ;
23
23
24
- _deleteBranchToolbarButtonCommand = new DelegateCommand ( branch => DeleteBranch ( ( string ) branch ) , branch => ( string ) branch != CurrentBranch ) ;
25
- _publishBranchToolbarButtonCommand = new DelegateCommand ( branch => PublishBranch ( ( string ) branch ) ) ;
26
- _unpublishBranchToolbarButtonCommand = new DelegateCommand ( branch => UnpublishBranch ( ( string ) branch ) ) ;
24
+ _deleteBranchToolbarButtonCommand =
25
+ new DelegateCommand ( isBranchPublished => DeleteBranch ( bool . Parse ( ( string ) isBranchPublished ) ) ,
26
+ isBranchPublished => CanDeleteBranch ( bool . Parse ( ( string ) isBranchPublished ) ) ) ;
27
+
28
+ _publishBranchToolbarButtonCommand = new DelegateCommand ( _ => PublishBranch ( ) , _ => ! string . IsNullOrEmpty ( CurrentUnpublishedBranch ) ) ;
29
+ _unpublishBranchToolbarButtonCommand = new DelegateCommand ( _ => UnpublishBranch ( ) , _ => ! string . IsNullOrEmpty ( CurrentPublishedBranch ) ) ;
27
30
}
28
31
29
32
private ISourceControlProvider _provider ;
@@ -107,16 +110,40 @@ public string CurrentBranch
107
110
108
111
try
109
112
{
113
+ OnLoadingComponentsStarted ( ) ;
110
114
Provider . Checkout ( _currentBranch ) ;
111
115
}
112
116
catch ( SourceControlException ex )
113
117
{
114
118
RaiseErrorEvent ( ex . Message , ex . InnerException . Message , NotificationType . Error ) ;
115
119
}
120
+ OnLoadingComponentsCompleted ( ) ;
116
121
}
117
122
}
118
123
}
119
124
125
+ private string _currentPublishedBranch ;
126
+ public string CurrentPublishedBranch
127
+ {
128
+ get { return _currentPublishedBranch ; }
129
+ set
130
+ {
131
+ _currentPublishedBranch = value ;
132
+ OnPropertyChanged ( ) ;
133
+ }
134
+ }
135
+
136
+ private string _currentUnpublishedBranch ;
137
+ public string CurrentUnpublishedBranch
138
+ {
139
+ get { return _currentUnpublishedBranch ; }
140
+ set
141
+ {
142
+ _currentUnpublishedBranch = value ;
143
+ OnPropertyChanged ( ) ;
144
+ }
145
+ }
146
+
120
147
private bool _displayCreateBranchGrid ;
121
148
public bool DisplayCreateBranchGrid
122
149
{
@@ -279,7 +306,7 @@ private void CreateBranchCancel()
279
306
280
307
private void MergeBranchOk ( )
281
308
{
282
- OnMergeStarted ( ) ;
309
+ OnLoadingComponentsStarted ( ) ;
283
310
284
311
try
285
312
{
@@ -288,25 +315,25 @@ private void MergeBranchOk()
288
315
catch ( SourceControlException ex )
289
316
{
290
317
RaiseErrorEvent ( ex . Message , ex . InnerException . Message , NotificationType . Error ) ;
291
- OnMergeCompleted ( ) ;
318
+ OnLoadingComponentsCompleted ( ) ;
292
319
return ;
293
320
}
294
321
295
322
DisplayMergeBranchesGrid = false ;
296
323
RaiseErrorEvent ( RubberduckUI . SourceControl_MergeStatus , string . Format ( RubberduckUI . SourceControl_SuccessfulMerge , SourceBranch , DestinationBranch ) , NotificationType . Info ) ;
297
- OnMergeCompleted ( ) ;
324
+ OnLoadingComponentsCompleted ( ) ;
298
325
}
299
326
300
327
private void MergeBranchCancel ( )
301
328
{
302
329
DisplayMergeBranchesGrid = false ;
303
330
}
304
331
305
- private void DeleteBranch ( string branch )
332
+ private void DeleteBranch ( bool isBranchPublished )
306
333
{
307
334
try
308
335
{
309
- Provider . DeleteBranch ( branch ) ;
336
+ Provider . DeleteBranch ( isBranchPublished ? CurrentPublishedBranch : CurrentUnpublishedBranch ) ;
310
337
}
311
338
catch ( SourceControlException ex )
312
339
{
@@ -316,11 +343,19 @@ private void DeleteBranch(string branch)
316
343
RefreshView ( ) ;
317
344
}
318
345
319
- private void PublishBranch ( string branch )
346
+
347
+ private bool CanDeleteBranch ( bool isBranchPublished )
348
+ {
349
+ return isBranchPublished
350
+ ? ! string . IsNullOrEmpty ( CurrentPublishedBranch ) && CurrentPublishedBranch != CurrentBranch
351
+ : ! string . IsNullOrEmpty ( CurrentUnpublishedBranch ) && CurrentUnpublishedBranch != CurrentBranch ;
352
+ }
353
+
354
+ private void PublishBranch ( )
320
355
{
321
356
try
322
357
{
323
- Provider . Publish ( branch ) ;
358
+ Provider . Publish ( CurrentUnpublishedBranch ) ;
324
359
}
325
360
catch ( SourceControlException ex )
326
361
{
@@ -330,11 +365,11 @@ private void PublishBranch(string branch)
330
365
RefreshView ( ) ;
331
366
}
332
367
333
- private void UnpublishBranch ( string branch )
368
+ private void UnpublishBranch ( )
334
369
{
335
370
try
336
371
{
337
- Provider . Unpublish ( Provider . Branches . First ( b => b . Name == branch ) . TrackingName ) ;
372
+ Provider . Unpublish ( Provider . Branches . First ( b => b . Name == CurrentPublishedBranch ) . TrackingName ) ;
338
373
}
339
374
catch ( SourceControlException ex )
340
375
{
@@ -429,20 +464,20 @@ private void RaiseErrorEvent(string message, string innerMessage, NotificationTy
429
464
}
430
465
}
431
466
432
- public event EventHandler < EventArgs > MergeStarted ;
433
- private void OnMergeStarted ( )
467
+ public event EventHandler < EventArgs > LoadingComponentsStarted ;
468
+ private void OnLoadingComponentsStarted ( )
434
469
{
435
- var handler = MergeStarted ;
470
+ var handler = LoadingComponentsStarted ;
436
471
if ( handler != null )
437
472
{
438
473
handler ( this , EventArgs . Empty ) ;
439
474
}
440
475
}
441
476
442
- public event EventHandler < EventArgs > MergeCompleted ;
443
- private void OnMergeCompleted ( )
477
+ public event EventHandler < EventArgs > LoadingComponentsCompleted ;
478
+ private void OnLoadingComponentsCompleted ( )
444
479
{
445
- var handler = MergeCompleted ;
480
+ var handler = LoadingComponentsCompleted ;
446
481
if ( handler != null )
447
482
{
448
483
handler ( this , EventArgs . Empty ) ;
0 commit comments