11using System ;
22using System . Collections . Generic ;
33using System . IO ;
4+ using System . Linq ;
45using System . Text . RegularExpressions ;
56using System . Threading . Tasks ;
67
@@ -270,25 +271,6 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
270271 var fullPath = Path . Combine ( _repo . FullPath , change . Path ) ;
271272 if ( File . Exists ( fullPath ) )
272273 {
273- var resetToThisRevision = new MenuItem ( ) ;
274- resetToThisRevision . Header = App . Text ( "ChangeCM.CheckoutThisRevision" ) ;
275- resetToThisRevision . Icon = App . CreateMenuIcon ( "Icons.File.Checkout" ) ;
276- resetToThisRevision . Click += ( _ , ev ) =>
277- {
278- new Commands . Checkout ( _repo . FullPath ) . FileWithRevision ( change . Path , $ "{ _commit . SHA } ") ;
279- ev . Handled = true ;
280- } ;
281-
282- var resetToFirstParent = new MenuItem ( ) ;
283- resetToFirstParent . Header = App . Text ( "ChangeCM.CheckoutFirstParentRevision" ) ;
284- resetToFirstParent . Icon = App . CreateMenuIcon ( "Icons.File.Checkout" ) ;
285- resetToFirstParent . IsEnabled = _commit . Parents . Count > 0 && change . Index != Models . ChangeState . Added && change . Index != Models . ChangeState . Renamed ;
286- resetToFirstParent . Click += ( _ , ev ) =>
287- {
288- new Commands . Checkout ( _repo . FullPath ) . FileWithRevision ( change . Path , $ "{ _commit . SHA } ~1") ;
289- ev . Handled = true ;
290- } ;
291-
292274 var explore = new MenuItem ( ) ;
293275 explore . Header = App . Text ( "RevealFile" ) ;
294276 explore . Icon = App . CreateMenuIcon ( "Icons.Explore" ) ;
@@ -298,8 +280,6 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
298280 ev . Handled = true ;
299281 } ;
300282
301- menu . Items . Add ( resetToThisRevision ) ;
302- menu . Items . Add ( resetToFirstParent ) ;
303283 menu . Items . Add ( new MenuItem { Header = "-" } ) ;
304284 menu . Items . Add ( explore ) ;
305285 menu . Items . Add ( new MenuItem { Header = "-" } ) ;
@@ -332,6 +312,29 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
332312 menu . Items . Add ( new MenuItem { Header = "-" } ) ;
333313 }
334314
315+ var resetToThisRevision = new MenuItem ( ) ;
316+ resetToThisRevision . Header = App . Text ( "ChangeCM.CheckoutThisRevision" ) ;
317+ resetToThisRevision . Icon = App . CreateMenuIcon ( "Icons.File.Checkout" ) ;
318+ resetToThisRevision . Click += ( _ , ev ) =>
319+ {
320+ new Commands . Checkout ( _repo . FullPath ) . FileWithRevision ( change . Path , $ "{ _commit . SHA } ") ;
321+ ev . Handled = true ;
322+ } ;
323+
324+ var resetToFirstParent = new MenuItem ( ) ;
325+ resetToFirstParent . Header = App . Text ( "ChangeCM.CheckoutFirstParentRevision" ) ;
326+ resetToFirstParent . Icon = App . CreateMenuIcon ( "Icons.File.Checkout" ) ;
327+ resetToFirstParent . IsEnabled = _commit . Parents . Count > 0 ;
328+ resetToFirstParent . Click += ( _ , ev ) =>
329+ {
330+ if ( change . Index == Models . ChangeState . Renamed )
331+ {
332+ new Commands . Checkout ( _repo . FullPath ) . FileWithRevision ( change . OriginalPath , $ "{ _commit . SHA } ~1") ;
333+ }
334+ new Commands . Checkout ( _repo . FullPath ) . FileWithRevision ( change . Path , $ "{ _commit . SHA } ~1") ;
335+ ev . Handled = true ;
336+ } ;
337+
335338 var copyPath = new MenuItem ( ) ;
336339 copyPath . Header = App . Text ( "CopyPath" ) ;
337340 copyPath . Icon = App . CreateMenuIcon ( "Icons.Copy" ) ;
@@ -340,7 +343,6 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
340343 App . CopyText ( change . Path ) ;
341344 ev . Handled = true ;
342345 } ;
343- menu . Items . Add ( copyPath ) ;
344346
345347 var copyFileName = new MenuItem ( ) ;
346348 copyFileName . Header = App . Text ( "CopyFileName" ) ;
@@ -350,6 +352,11 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
350352 App . CopyText ( Path . GetFileName ( change . Path ) ) ;
351353 e . Handled = true ;
352354 } ;
355+
356+ menu . Items . Add ( resetToThisRevision ) ;
357+ menu . Items . Add ( resetToFirstParent ) ;
358+ menu . Items . Add ( new MenuItem { Header = "-" } ) ;
359+ menu . Items . Add ( copyPath ) ;
353360 menu . Items . Add ( copyFileName ) ;
354361
355362 return menu ;
@@ -369,6 +376,18 @@ public ContextMenu CreateRevisionFileContextMenu(Models.Object file)
369376 ev . Handled = true ;
370377 } ;
371378
379+ var resetToFirstParent = new MenuItem ( ) ;
380+ resetToFirstParent . Header = App . Text ( "ChangeCM.CheckoutFirstParentRevision" ) ;
381+ resetToFirstParent . Icon = App . CreateMenuIcon ( "Icons.File.Checkout" ) ;
382+ var fileInChanges = _changes . Find ( x => x . Path == file . Path ) ;
383+ var fileIndex = fileInChanges ? . Index ;
384+ resetToFirstParent . IsEnabled = _commit . Parents . Count > 0 && fileIndex != Models . ChangeState . Renamed ;
385+ resetToFirstParent . Click += ( _ , ev ) =>
386+ {
387+ new Commands . Checkout ( _repo . FullPath ) . FileWithRevision ( file . Path , $ "{ _commit . SHA } ~1") ;
388+ ev . Handled = true ;
389+ } ;
390+
372391 var explore = new MenuItem ( ) ;
373392 explore . Header = App . Text ( "RevealFile" ) ;
374393 explore . Icon = App . CreateMenuIcon ( "Icons.Explore" ) ;
@@ -448,6 +467,7 @@ public ContextMenu CreateRevisionFileContextMenu(Models.Object file)
448467
449468 var menu = new ContextMenu ( ) ;
450469 menu . Items . Add ( resetToThisRevision ) ;
470+ menu . Items . Add ( resetToFirstParent ) ;
451471 menu . Items . Add ( new MenuItem ( ) { Header = "-" } ) ;
452472 menu . Items . Add ( explore ) ;
453473 menu . Items . Add ( saveAs ) ;
0 commit comments