From 04e7c463a8a39c4f4e1de522ada1164fb663b0d4 Mon Sep 17 00:00:00 2001 From: Haacked Date: Mon, 5 Oct 2015 19:39:28 -0700 Subject: [PATCH] :art: Code cleanup and C# 6 fun --- SeeGitApp/Extensions/CommitAdornerBehavior.cs | 29 ++++++++------- SeeGitApp/Extensions/ModelExtensions.cs | 32 +++++++---------- SeeGitApp/Extensions/WindowsExtensions.cs | 7 ++-- SeeGitApp/MainWindow.xaml | 5 +-- SeeGitApp/Models/BranchReference.cs | 4 +-- SeeGitApp/Models/CommitEdge.cs | 6 ++-- SeeGitApp/Models/CommitVertex.cs | 20 ++++------- .../Models/ReachableHighlightAlgorithm.cs | 12 +++---- SeeGitApp/Models/RepositoryGraphBuilder.cs | 12 +++---- SeeGitApp/Views/CommitVertexView.xaml.cs | 17 ++------- SeeGitApp/Views/SettingsView.xaml | 7 ++-- SeeGitApp/Views/SettingsView.xaml.cs | 36 ++++++------------- 12 files changed, 73 insertions(+), 114 deletions(-) diff --git a/SeeGitApp/Extensions/CommitAdornerBehavior.cs b/SeeGitApp/Extensions/CommitAdornerBehavior.cs index 98e4fa0..60d62b4 100644 --- a/SeeGitApp/Extensions/CommitAdornerBehavior.cs +++ b/SeeGitApp/Extensions/CommitAdornerBehavior.cs @@ -66,7 +66,7 @@ public CommitAdornerBehavior() if (null == adornerLayer) throw new NullReferenceException( - string.Format("No adorner found in attached object: {0}", AssociatedObject)); + $"No adorner found in attached object: {AssociatedObject}"); // Create adorner _adornerControl = new ContentControl(); @@ -74,15 +74,17 @@ public CommitAdornerBehavior() // Add to adorner adornerLayer.Add( _caTemplatedAdorner = - new CommitTemplatedAdorner(AssociatedObject as UIElement, _adornerControl)); + new CommitTemplatedAdorner((UIElement)AssociatedObject, _adornerControl)); // Set related bindings _adornerControl.Content = AdornerTemplate.LoadContent(); _adornerControl.Visibility = AdornerVisible; // Bind internal dependency to external - var bindingMargin = new Binding("AdornerMargin"); - bindingMargin.Source = this; + var bindingMargin = new Binding("AdornerMargin") + { + Source = this + }; BindingOperations.SetBinding(_caTemplatedAdorner, FrameworkElement.MarginProperty, bindingMargin); } @@ -195,11 +197,11 @@ private void HideAdorner(object parameter) "AdornerTemplate", typeof (DataTemplate), typeof (CommitAdornerBehavior), new PropertyMetadata((d, o) => - { - if (null != ((CommitAdornerBehavior)d)._adornerControl) - ((CommitAdornerBehavior)d)._adornerControl. - ContentTemplate = (DataTemplate)o.NewValue; - })); + { + if (null != ((CommitAdornerBehavior)d)._adornerControl) + ((CommitAdornerBehavior)d)._adornerControl. + ContentTemplate = (DataTemplate)o.NewValue; + })); /// /// Data template for the adroner. Used inside a ContentControl. @@ -265,16 +267,13 @@ public Visibility AdornerVisible { var adorner = d as CommitAdornerBehavior; if (d == null) return; - if (adorner != null) adorner.SetDelayedState((bool)o.NewValue); + adorner?.SetDelayedState((bool)o.NewValue); })); /// /// Data template for the adroner. Used inside a ContentControl. /// - public bool DelayConstruction - { - get { return (bool)GetValue(DelayConstructionProperty); } - } + public bool DelayConstruction => (bool)GetValue(DelayConstructionProperty); /// /// Data template for the adroner. Used inside a ContentControl. @@ -302,7 +301,7 @@ public object DataContext private static void OnDataContextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var adorner = d as CommitAdornerBehavior; - if (adorner == null || adorner._adornerControl == null) return; + if (adorner?._adornerControl == null) return; adorner._adornerControl.DataContext = adorner.DataContext; } diff --git a/SeeGitApp/Extensions/ModelExtensions.cs b/SeeGitApp/Extensions/ModelExtensions.cs index 571d54e..7892e2a 100644 --- a/SeeGitApp/Extensions/ModelExtensions.cs +++ b/SeeGitApp/Extensions/ModelExtensions.cs @@ -10,12 +10,7 @@ public static class ModelExtensions public static string AtMost(this string s, int characterCount) { - if (s == null) return null; - if (s.Length <= characterCount) - { - return s; - } - return s.Substring(0, characterCount); + return s == null ? null : (s.Length <= characterCount ? s : s.Substring(0, characterCount)); } public static string GetGitRepositoryPath(string path) @@ -40,10 +35,7 @@ public static string GetGitRepositoryPath(string path) { return pathToTest; } - else - { - checkIn = checkIn.Parent; - } + checkIn = checkIn.Parent; } // This is not good, it relies on the rest of the code being ok @@ -55,16 +47,16 @@ public static IObservable CreateGitRepositoryCreationObserv { string expectedGitDirectory = Path.Combine(path, GitDirectoryName); return new FileSystemWatcher(path) - { - IncludeSubdirectories = false, - EnableRaisingEvents = true, - NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.DirectoryName - }.ObserveFileSystemCreateEvents() - .Where( - e => - e.ChangeType == WatcherChangeTypes.Created && - e.FullPath.Equals(expectedGitDirectory, StringComparison.OrdinalIgnoreCase)) - .Take(1); + { + IncludeSubdirectories = false, + EnableRaisingEvents = true, + NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.DirectoryName + }.ObserveFileSystemCreateEvents() + .Where( + e => + e.ChangeType == WatcherChangeTypes.Created && + e.FullPath.Equals(expectedGitDirectory, StringComparison.OrdinalIgnoreCase)) + .Take(1); } public static IObservable CreateGitRepositoryChangesObservable(string path) diff --git a/SeeGitApp/Extensions/WindowsExtensions.cs b/SeeGitApp/Extensions/WindowsExtensions.cs index d14fa5a..1c4424c 100644 --- a/SeeGitApp/Extensions/WindowsExtensions.cs +++ b/SeeGitApp/Extensions/WindowsExtensions.cs @@ -1,5 +1,4 @@ -using System.IO; -using Microsoft.WindowsAPICodePack.Dialogs; +using Microsoft.WindowsAPICodePack.Dialogs; namespace SeeGit { @@ -17,7 +16,7 @@ public static string BrowseForFolder(string startingPath) var cfd = new CommonOpenFileDialog { InitialDirectory = initialDirectory, - IsFolderPicker = true, + IsFolderPicker = true }; if (cfd.ShowDialog() == CommonFileDialogResult.Ok) @@ -29,7 +28,7 @@ public static string BrowseForFolder(string startingPath) { var fd = new System.Windows.Forms.FolderBrowserDialog { - SelectedPath = initialDirectory, + SelectedPath = initialDirectory }; if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK) diff --git a/SeeGitApp/MainWindow.xaml b/SeeGitApp/MainWindow.xaml index 611bd45..3809153 100644 --- a/SeeGitApp/MainWindow.xaml +++ b/SeeGitApp/MainWindow.xaml @@ -4,8 +4,9 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:graphsharp="clr-namespace:GraphSharp.Controls;assembly=GraphSharp.Controls" xmlns:local="clr-namespace:SeeGit" xmlns:zoom="clr-namespace:WPFExtensions.Controls;assembly=WPFExtensions" - xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:view="clr-namespace:SeeGit.Views" - xmlns:extbehaviour="clr-namespace:WPFExtensions.AttachedBehaviours;assembly=WPFExtensions" x:Class="SeeGit.MainWindow" + xmlns:view="clr-namespace:SeeGit.Views" + xmlns:extbehaviour="clr-namespace:WPFExtensions.AttachedBehaviours;assembly=WPFExtensions" + x:Class="SeeGit.MainWindow" Title="SeeGit" Height="465" Width="708" mc:Ignorable="d"> diff --git a/SeeGitApp/Models/BranchReference.cs b/SeeGitApp/Models/BranchReference.cs index 73d0edb..0b9b374 100644 --- a/SeeGitApp/Models/BranchReference.cs +++ b/SeeGitApp/Models/BranchReference.cs @@ -9,9 +9,7 @@ public class BranchReference : GitObject public override bool Equals(BranchReference other) { - if (ReferenceEquals(null, other)) return false; - if (ReferenceEquals(this, other)) return true; - return Equals(other.Name, Name); + return !ReferenceEquals(null, other) && (ReferenceEquals(this, other) || Equals(other.Name, Name)); } public override int GetHashCode() diff --git a/SeeGitApp/Models/CommitEdge.cs b/SeeGitApp/Models/CommitEdge.cs index 052ecc3..5c88944 100644 --- a/SeeGitApp/Models/CommitEdge.cs +++ b/SeeGitApp/Models/CommitEdge.cs @@ -36,7 +36,7 @@ public string Id public override bool Equals(object obj) { - return this.Equals(obj as CommitEdge); + return Equals(obj as CommitEdge); } public bool Equals(CommitEdge other) @@ -60,9 +60,7 @@ public override int GetHashCode() public static bool operator ==(CommitEdge edge, CommitEdge other) { - if(ReferenceEquals(edge, null)) return ReferenceEquals(other, null); - - return edge.Equals(other); + return ReferenceEquals(edge, null) ? ReferenceEquals(other, null) : edge.Equals(other); } public static bool operator !=(CommitEdge edge, CommitEdge other) diff --git a/SeeGitApp/Models/CommitVertex.cs b/SeeGitApp/Models/CommitVertex.cs index 4bb4259..c5ec7ca 100644 --- a/SeeGitApp/Models/CommitVertex.cs +++ b/SeeGitApp/Models/CommitVertex.cs @@ -13,9 +13,9 @@ public CommitVertex(string sha, string message) Message = message; Branches = new BranchCollection(); Branches.CollectionChanged += (o, e) => RaisePropertyChanged(() => HasBranches); - ShaLength = MainWindow.Configuration.GetSetting("SHALength", 8); - DescriptionShown = MainWindow.Configuration.GetSetting("DescriptionInExpander", false); - AdornerMessageVisibilityType = MainWindow.Configuration.GetSetting("AdornerCommitMessageVisibility", "ExpandedHidden"); + ShaLength = MainWindow.Configuration.GetSetting("SHALength", 8); + DescriptionShown = MainWindow.Configuration.GetSetting("DescriptionInExpander", false); + AdornerMessageVisibilityType = MainWindow.Configuration.GetSetting("AdornerCommitMessageVisibility", "ExpandedHidden"); Expanded = false; } @@ -121,21 +121,17 @@ public bool Expanded public override bool Equals(object obj) { - return this.Equals(obj as CommitVertex); + return Equals(obj as CommitVertex); } public override bool Equals(CommitVertex other) { - if(ReferenceEquals(null, other)) - return false; - if(ReferenceEquals(this, other)) - return true; - return Equals(other.Sha, Sha); + return !ReferenceEquals(null, other) && (ReferenceEquals(this, other) || Equals(other.Sha, Sha)); } public override string ToString() { - return string.Format("{0}: {1}", ShortSha, Message); + return $"{ShortSha}: {Message}"; } public override int GetHashCode() @@ -151,9 +147,7 @@ public override int GetHashCode() public static bool operator ==(CommitVertex commit, CommitVertex other) { - if(ReferenceEquals(commit, null)) return ReferenceEquals(other, null); - - return commit.Equals(other); + return ReferenceEquals(commit, null) ? ReferenceEquals(other, null) : commit.Equals(other); } public static bool operator !=(CommitVertex commit, CommitVertex other) diff --git a/SeeGitApp/Models/ReachableHighlightAlgorithm.cs b/SeeGitApp/Models/ReachableHighlightAlgorithm.cs index aa6e80b..48c3013 100644 --- a/SeeGitApp/Models/ReachableHighlightAlgorithm.cs +++ b/SeeGitApp/Models/ReachableHighlightAlgorithm.cs @@ -18,13 +18,13 @@ public class ReachableHighlightAlgorithm : private void ClearAllHighlights() { ClearSemiHighlights(); - foreach (TVertex local in Controller.HighlightedVertices) + foreach (var vertex in Controller.HighlightedVertices) { - Controller.RemoveHighlightFromVertex(local); + Controller.RemoveHighlightFromVertex(vertex); } - foreach (TEdge local2 in Controller.HighlightedEdges) + foreach (var edge in Controller.HighlightedEdges) { - Controller.RemoveHighlightFromEdge(local2); + Controller.RemoveHighlightFromEdge(edge); } } @@ -42,8 +42,8 @@ private void ClearSemiHighlights() public override bool OnEdgeHighlighting(TEdge edge) { - this.ClearAllHighlights(); - if (!(!object.Equals(edge, default(TEdge)) && base.Controller.Graph.ContainsEdge(edge))) + ClearAllHighlights(); + if (!(!Equals(edge, default(TEdge)) && Controller.Graph.ContainsEdge(edge))) { return false; } diff --git a/SeeGitApp/Models/RepositoryGraphBuilder.cs b/SeeGitApp/Models/RepositoryGraphBuilder.cs index 650a0e4..e8bacb9 100644 --- a/SeeGitApp/Models/RepositoryGraphBuilder.cs +++ b/SeeGitApp/Models/RepositoryGraphBuilder.cs @@ -25,7 +25,7 @@ public RepositoryGraphBuilder(string gitRepositoryPath) } } - public string GitRepositoryPath { get; private set; } + public string GitRepositoryPath { get; } public RepositoryGraph Graph() { @@ -84,12 +84,12 @@ void AddHeadReference() headCommitVertex.Branches.Merge(headBranceReference); AddCommitsToGraph(headCommit, null); - HighlightCommitsOnCurrentBranch(headCommit, headCommitVertex); + HighlightCommitsOnCurrentBranch(headCommit); } private bool HighlightCommit(Commit commit) { - CommitVertex commitVertex = GetCommitVertex(commit); + var commitVertex = GetCommitVertex(commit); if (commitVertex.OnCurrentBranch) return false; @@ -97,9 +97,9 @@ private bool HighlightCommit(Commit commit) return true; } - private void HighlightCommitsOnCurrentBranch(Commit commit, CommitVertex commitVertex) + private void HighlightCommitsOnCurrentBranch(Commit commit) { - Queue queue = new Queue(); + var queue = new Queue(); queue.Enqueue(commit); while (queue.Count != 0) @@ -135,7 +135,7 @@ private void AddCommitsToGraph(Commit commit, CommitVertex childVertex) { // KeyValuePair is faster than a Tuple in this case. // We create as many instances as we pass to the AddCommitToGraph. - Queue queue = new Queue(); + var queue = new Queue(); queue.Enqueue(new CommitWithChildVertex(commit, childVertex)); while (queue.Count != 0) diff --git a/SeeGitApp/Views/CommitVertexView.xaml.cs b/SeeGitApp/Views/CommitVertexView.xaml.cs index 08ee36a..20a415e 100644 --- a/SeeGitApp/Views/CommitVertexView.xaml.cs +++ b/SeeGitApp/Views/CommitVertexView.xaml.cs @@ -1,16 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; +using System.Windows; using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; namespace SeeGit.Views { @@ -36,12 +25,12 @@ public CommitVertex Model private void Expander_Expanded(object sender, RoutedEventArgs e) { - ((CommitVertex)Model).Expanded = true; + Model.Expanded = true; } private void Expander_Collapsed(object sender, RoutedEventArgs e) { - ((CommitVertex)Model).Expanded = false; + Model.Expanded = false; } } } diff --git a/SeeGitApp/Views/SettingsView.xaml b/SeeGitApp/Views/SettingsView.xaml index 5fa3b00..70e6b91 100644 --- a/SeeGitApp/Views/SettingsView.xaml +++ b/SeeGitApp/Views/SettingsView.xaml @@ -2,8 +2,11 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:local="clr-namespace:SeeGit" - mc:Ignorable="d" x:Name="Settings" d:DesignWidth="700" d:DesignHeight="50" Visibility="{Binding IsChecked, ElementName=toggleButton, Converter={StaticResource BooleanToVisibilityConverter}}"> + mc:Ignorable="d" + x:Name="Settings" + d:DesignWidth="700" + d:DesignHeight="50" + Visibility="{Binding IsChecked, ElementName=toggleButton, Converter={StaticResource BooleanToVisibilityConverter}}"> diff --git a/SeeGitApp/Views/SettingsView.xaml.cs b/SeeGitApp/Views/SettingsView.xaml.cs index dc6587e..bbbb15e 100644 --- a/SeeGitApp/Views/SettingsView.xaml.cs +++ b/SeeGitApp/Views/SettingsView.xaml.cs @@ -1,17 +1,6 @@ -using SeeGit.Models; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; +using System.Collections.Generic; using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; +using SeeGit.Models; namespace SeeGit.Views { @@ -29,7 +18,7 @@ public SettingsView() public class SettingsDataContext { - private static List commitAdornerComboList = new List(); + private static readonly List commitAdornerComboList = new List(); private static Settings _config; public SettingsDataContext() @@ -38,12 +27,12 @@ public SettingsDataContext() SetComboItems(); - CommitAdornerSelectedItem = _config.GetSetting("AdornerCommitMessageVisibility", "ExpandedHidden"); - SHALengthInput = _config.GetSetting("SHALength", "8"); - CommitDescriptionShown = _config.GetSetting("DescriptionInExpander", false); + CommitAdornerSelectedItem = _config.GetSetting("AdornerCommitMessageVisibility", "ExpandedHidden"); + SHALengthInput = _config.GetSetting("SHALength", "8"); + CommitDescriptionShown = _config.GetSetting("DescriptionInExpander", false); } - private void SetComboItems() + private static void SetComboItems() { commitAdornerComboList.Add("ExpandedHidden"); commitAdornerComboList.Add("Visible"); @@ -51,16 +40,13 @@ private void SetComboItems() } // Data bindings - public List CommitAdornerComboItems - { - get { return commitAdornerComboList; } - } + public List CommitAdornerComboItems => commitAdornerComboList; public string CommitAdornerSelectedItem { get { - return _config.GetSetting("AdornerCommitMessageVisibility", commitAdornerComboList[0]); + return _config.GetSetting("AdornerCommitMessageVisibility", commitAdornerComboList[0]); } set { @@ -72,7 +58,7 @@ public string SHALengthInput { get { - return _config.GetSetting("SHALength", "8"); + return _config.GetSetting("SHALength", "8"); } set { @@ -84,7 +70,7 @@ public bool CommitDescriptionShown { get { - return _config.GetSetting("DescriptionInExpander", false); + return _config.GetSetting("DescriptionInExpander", false); } set {