From 92d5f7525944237f6de9b0735057aae92a7ccf42 Mon Sep 17 00:00:00 2001 From: Dirkster99 Date: Thu, 1 Mar 2018 21:55:04 +0100 Subject: [PATCH] Added documentation. --- source/FSC_Components/FileListView/Factory.cs | 16 ++- .../FileListView/FileListView.csproj | 2 + .../Interfaces/IFileListViewModel.cs | 7 +- .../Interfaces/ILVItemViewModel.cs | 4 +- .../ViewModels/FileListViewModel.cs | 31 +++-- .../ViewModels/LVItemViewModel.cs | 3 +- .../FilterControlsLib.csproj | 6 + .../ViewModels/FilterComboBoxViewModel.cs | 3 +- .../Converters/BoolToVisibilityConverter .cs | 112 +++++++++++------- .../Converters/InverseBooleanConverter.cs | 16 +++ .../Converters/UpdateBindingConverter.cs | 8 ++ .../FolderBrowser/FolderBrowser.csproj | 2 + .../FolderBrowser/FolderBrowserFactory.cs | 10 +- .../Interfaces/Dialogs/IDialogViewModel.cs | 10 +- .../Interfaces/Dialogs/IDropDownViewModel.cs | 25 ++++ .../Interfaces/IBrowserViewModel.cs | 5 +- .../Interfaces/ICustomFolderItemViewModel.cs | 14 ++- .../FolderBrowser/Themes/ResourceKeys.cs | 4 + .../ViewModels/BrowserViewModel.cs | 12 +- .../ViewModels/Dialogs/DialogBaseViewModel.cs | 2 +- .../ViewModels/FolderViewModel.cs | 3 + .../Messages/DisplayMessageViewModel.cs | 2 +- .../Messages/IDisplayMessageViewModel.cs | 17 ++- .../SortableObservableCollection.cs | 14 ++- .../ViewModels/TreeItemViewModel.cs | 1 + .../Views/Behaviours/SelectTextOnFocus .cs | 15 ++- .../Views/Behaviours/TextEnterCommand.cs | 2 +- .../Views/Behaviours/TreeViewItemExpanded.cs | 31 +++-- .../TreeViewVirtualItemBehaviour.cs | 31 +++-- .../Views/BookmarkFolderDropDown.xaml.cs | 22 +--- .../Views/BrowseDirectoriesView.xaml.cs | 3 + .../FolderBrowser/Views/DropDownView.xaml.cs | 3 + .../Views/FolderBrowserDialogView.xaml.cs | 3 + .../Views/FolderBrowserTreeView.xaml.cs | 2 +- .../FolderControlsLib/Factory.cs | 2 +- .../FolderControlsLib.csproj | 2 + .../ViewModels/FolderItemViewModel.cs | 4 +- source/LICENSE | 19 --- source/README.md | 42 ------- source/ToDo.txt | 6 - 40 files changed, 329 insertions(+), 187 deletions(-) delete mode 100644 source/LICENSE delete mode 100644 source/README.md delete mode 100644 source/ToDo.txt diff --git a/source/FSC_Components/FileListView/Factory.cs b/source/FSC_Components/FileListView/Factory.cs index 39b791a..bc2fe27 100644 --- a/source/FSC_Components/FileListView/Factory.cs +++ b/source/FSC_Components/FileListView/Factory.cs @@ -6,18 +6,32 @@ using FileSystemModels.Models.FSItems.Base; /// - /// Implements factory methods that creates library objects that are accessible + /// Implements factory methods that create library objects that are accessible /// through interfaces but are otherwise invisible for the outside world. /// public sealed class Factory { private Factory(){ } + /// + /// Creates a viewmodel object that implements the + /// interface to drive a file listview. + /// + /// + /// public static IFileListViewModel CreateFileListViewModel(IBrowseNavigation browseNavigation) { return new FileListViewModel(browseNavigation); } + /// + /// Creates a viewmodel object that implements the + /// interface to drive one item that can be part of a file listview. + /// + /// + /// + /// + /// public static ILVItemViewModel CreateItem( string path , FSItemType type diff --git a/source/FSC_Components/FileListView/FileListView.csproj b/source/FSC_Components/FileListView/FileListView.csproj index 844f344..e2c787e 100644 --- a/source/FSC_Components/FileListView/FileListView.csproj +++ b/source/FSC_Components/FileListView/FileListView.csproj @@ -23,6 +23,7 @@ prompt 4 false + bin\Debug\FileListView.xml pdbonly @@ -32,6 +33,7 @@ prompt 4 false + bin\Release\FileListView.xml true diff --git a/source/FSC_Components/FileListView/Interfaces/IFileListViewModel.cs b/source/FSC_Components/FileListView/Interfaces/IFileListViewModel.cs index 5b8596b..ce7d368 100644 --- a/source/FSC_Components/FileListView/Interfaces/IFileListViewModel.cs +++ b/source/FSC_Components/FileListView/Interfaces/IFileListViewModel.cs @@ -94,7 +94,8 @@ ICommand ToggleIsHiddenVisibleCommand /// /// Gets a command that will open the folder in which an item is stored. - /// The item (path to a file) is expected as parameter. + /// The item (path to a file) is expected as + /// parameter. /// ICommand OpenContainingFolderCommand { @@ -103,7 +104,7 @@ ICommand OpenContainingFolderCommand /// /// Gets a command that will open the selected item with the current default application - /// in Windows. The selected item (path to a file) is expected as parameter. + /// in Windows. The selected item (path to a file) is expected as parameter. /// (eg: Item is HTML file -> Open in Windows starts the web browser for viewing the HTML /// file if thats the currently associated Windows default application. /// @@ -114,7 +115,7 @@ ICommand OpenInWindowsCommand /// /// Gets a command that will copy the path of an item into the Windows Clipboard. - /// The item (path to a file) is expected as parameter. + /// The item (path to a file) is expected as parameter. /// ICommand CopyPathCommand { diff --git a/source/FSC_Components/FileListView/Interfaces/ILVItemViewModel.cs b/source/FSC_Components/FileListView/Interfaces/ILVItemViewModel.cs index 6e7d4aa..f49b09a 100644 --- a/source/FSC_Components/FileListView/Interfaces/ILVItemViewModel.cs +++ b/source/FSC_Components/FileListView/Interfaces/ILVItemViewModel.cs @@ -1,12 +1,14 @@ namespace FileListView.Interfaces { using FileSystemModels.Interfaces; + using InplaceEditBoxLib.Interfaces; + using System.ComponentModel; /// /// Defines the properties and members of an item view model that is /// designed for usage in list views or similar controls. /// - public interface ILVItemViewModel : IListItemViewModel + public interface ILVItemViewModel : IListItemViewModel, IEditBox, INotifyPropertyChanged { /// /// Renames this item with the indicated name. diff --git a/source/FSC_Components/FileListView/ViewModels/FileListViewModel.cs b/source/FSC_Components/FileListView/ViewModels/FileListViewModel.cs index 7d239e7..a99778a 100644 --- a/source/FSC_Components/FileListView/ViewModels/FileListViewModel.cs +++ b/source/FSC_Components/FileListView/ViewModels/FileListViewModel.cs @@ -398,7 +398,7 @@ public ICommand ToggleIsHiddenVisibleCommand /// /// Gets a command that will open the folder in which an item is stored. - /// The item (path to a file) is expected as parameter. + /// The item (path to a file) is expected as parameter. /// public ICommand OpenContainingFolderCommand { @@ -408,7 +408,7 @@ public ICommand OpenContainingFolderCommand this._OpenContainingFolderCommand = new RelayCommand( (p) => { - var path = p as LVItemViewModel; + var path = p as ILVItemViewModel; if (path == null) return; @@ -425,7 +425,8 @@ public ICommand OpenContainingFolderCommand /// /// Gets a command that will open the selected item with the current default application - /// in Windows. The selected item (path to a file) is expected as parameter. + /// in Windows. The selected item (path to a file) is expected as + /// parameter. /// (eg: Item is HTML file -> Open in Windows starts the web browser for viewing the HTML /// file if thats the currently associated Windows default application. /// @@ -437,7 +438,7 @@ public ICommand OpenInWindowsCommand this._OpenInWindowsCommand = new RelayCommand( (p) => { - var path = p as LVItemViewModel; + var path = p as ILVItemViewModel; if (path == null) return; @@ -454,7 +455,7 @@ public ICommand OpenInWindowsCommand /// /// Gets a command that will copy the path of an item into the Windows Clipboard. - /// The item (path to a file) is expected as parameter. + /// The item (path to a file) is expected as parameter. /// public ICommand CopyPathCommand { @@ -464,7 +465,7 @@ public ICommand CopyPathCommand this._CopyPathCommand = new RelayCommand( (p) => { - var path = p as LVItemViewModel; + var path = p as ILVItemViewModel; if (path == null) return; @@ -500,9 +501,9 @@ public ICommand ToggleIsFilteredCommand #endregion Windows Integration FileSystem Commands /// - /// Renames the folder that is represented by this viewmodel. - /// This command should be called directly by the implementing view - /// since the new name of the folder is delivered as string. + /// Renames the folder that is delivered in a Tuple parameter + /// containing the new string and the item + /// who's rename method is to be called in this command. /// public ICommand RenameCommand { @@ -515,7 +516,7 @@ public ICommand RenameCommand if (tuple != null) { - var folderVM = tuple.Item2 as LVItemViewModel; + var folderVM = tuple.Item2 as ILVItemViewModel; if (tuple.Item1 != null && folderVM != null) folderVM.RenameFileOrFolder(tuple.Item1); @@ -532,6 +533,9 @@ public ICommand RenameCommand /// /// This command implements an event that triggers the actual rename /// process in the connected view. + /// + /// The expected parameter is a + /// that can be supplied as . /// public ICommand StartRenameCommand { @@ -552,9 +556,10 @@ public ICommand StartRenameCommand /// /// Starts the create folder process by creating a new folder - /// in the given location. The location is supplied as - /// which is a item. So, the item - /// is the parent of the new folder and the new folder is created with a standard name: + /// in the given location. The location is supplied as string + /// + /// So, the string is the name of the new folder that is created underneath this folder. + /// The new folder is created with a standard name: /// 'New Folder n'. The new folder n is selected and in rename mode such that users can edit /// the name of the new folder right away. /// diff --git a/source/FSC_Components/FileListView/ViewModels/LVItemViewModel.cs b/source/FSC_Components/FileListView/ViewModels/LVItemViewModel.cs index 966cea5..89bb99b 100644 --- a/source/FSC_Components/FileListView/ViewModels/LVItemViewModel.cs +++ b/source/FSC_Components/FileListView/ViewModels/LVItemViewModel.cs @@ -32,7 +32,6 @@ internal class LVItemViewModel : EditInPlaceViewModel, ILVItemViewModel /// /// /// - /// public LVItemViewModel(string curdir, FSItemType itemType, string displayName, @@ -73,7 +72,7 @@ public LVItemViewModel(string curdir, /// /// /// - /// + /// public LVItemViewModel(IPathModel model, string itemName, bool isReadOnly = false) diff --git a/source/FSC_Components/FilterControlsLib/FilterControlsLib.csproj b/source/FSC_Components/FilterControlsLib/FilterControlsLib.csproj index a4ebcc0..3f2198e 100644 --- a/source/FSC_Components/FilterControlsLib/FilterControlsLib.csproj +++ b/source/FSC_Components/FilterControlsLib/FilterControlsLib.csproj @@ -22,6 +22,7 @@ DEBUG;TRACE prompt 4 + bin\Debug\FilterControlsLib.xml pdbonly @@ -30,6 +31,7 @@ TRACE prompt 4 + bin\Release\FilterControlsLib.xml @@ -80,6 +82,10 @@ + + {735CF8EC-A4EF-49A2-BC72-EC360A0185A4} + FileListView + {391639c4-5c43-4391-9465-27686e82c33f} FileSystemModels diff --git a/source/FSC_Components/FilterControlsLib/ViewModels/FilterComboBoxViewModel.cs b/source/FSC_Components/FilterControlsLib/ViewModels/FilterComboBoxViewModel.cs index 0ddb8c1..ab0c833 100644 --- a/source/FSC_Components/FilterControlsLib/ViewModels/FilterComboBoxViewModel.cs +++ b/source/FSC_Components/FilterControlsLib/ViewModels/FilterComboBoxViewModel.cs @@ -9,6 +9,7 @@ namespace FilterControlsLib.ViewModels using FileSystemModels.Events; using FilterControlsLib.Collections; using FileSystemModels.ViewModels.Base; + using FileListView.Interfaces; /// /// Class implements a viewmodel for a combo box like control that @@ -259,7 +260,7 @@ public void SetCurrentFilter(string filterDisplayName, string filterText) /// /// Method executes when the SelectionChanged command is invoked. /// The parameter can be an array of objects - /// containing objects of the type or + /// containing objects of the type or /// p can also be string. /// /// Each parameter item that adheres to the above types results in diff --git a/source/FSC_Components/FolderBrowser/Converters/BoolToVisibilityConverter .cs b/source/FSC_Components/FolderBrowser/Converters/BoolToVisibilityConverter .cs index f00bd4b..cd37cb6 100644 --- a/source/FSC_Components/FolderBrowser/Converters/BoolToVisibilityConverter .cs +++ b/source/FSC_Components/FolderBrowser/Converters/BoolToVisibilityConverter .cs @@ -1,54 +1,82 @@ namespace FolderBrowser.Converters { - using System; - using System.Globalization; - using System.Windows; - using System.Windows.Data; - - /// - /// Converts a boolean value into a configurable - /// value of type . - /// - /// Source: http://stackoverflow.com/questions/3128023/wpf-booleantovisibilityconverter-that-converts-to-hidden-instead-of-collapsed-wh - /// - [ValueConversion(typeof(bool), typeof(Visibility))] - public sealed class BoolToVisibilityConverter : IValueConverter - { - #region constructor + using System; + using System.Globalization; + using System.Windows; + using System.Windows.Data; + /// - /// Class constructor + /// Converts a boolean value into a configurable + /// value of type . + /// + /// Source: http://stackoverflow.com/questions/3128023/wpf-booleantovisibilityconverter-that-converts-to-hidden-instead-of-collapsed-wh /// - public BoolToVisibilityConverter() + [ValueConversion(typeof(bool), typeof(Visibility))] + public sealed class BoolToVisibilityConverter : IValueConverter { - // set defaults - TrueValue = Visibility.Visible; - FalseValue = Visibility.Collapsed; - } - #endregion constructor + #region constructor + /// + /// Class constructor + /// + public BoolToVisibilityConverter() + { + // set defaults + TrueValue = Visibility.Visible; + FalseValue = Visibility.Collapsed; + } + #endregion constructor - #region properties - public Visibility TrueValue { get; set; } - public Visibility FalseValue { get; set; } - #endregion properties + #region properties + /// + /// Gets/sets the value that is associated + /// (converted into) with the boolean true value. + /// + public Visibility TrueValue { get; set; } - #region methods - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - if (!(value is bool)) - return null; - return (bool)value ? TrueValue : FalseValue; - } + /// + /// Gets/sets the value that is associated + /// (converted into) with the boolean false value. + /// + public Visibility FalseValue { get; set; } + #endregion properties - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - if (Equals(value, TrueValue)) - return true; + #region methods + /// + /// Convertzs a bool value into as configured in the + /// and properties. + /// + /// + /// + /// + /// + /// + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (!(value is bool)) + return null; + + return (bool)value ? TrueValue : FalseValue; + } + + /// + /// Convertzs a value into bool as configured in the + /// and properties. + /// + /// + /// + /// + /// + /// + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + if (Equals(value, TrueValue)) + return true; - if (Equals(value, FalseValue)) - return false; + if (Equals(value, FalseValue)) + return false; - return null; + return null; + } + #endregion methods } - #endregion methods - } } diff --git a/source/FSC_Components/FolderBrowser/Converters/InverseBooleanConverter.cs b/source/FSC_Components/FolderBrowser/Converters/InverseBooleanConverter.cs index 140a488..e484844 100644 --- a/source/FSC_Components/FolderBrowser/Converters/InverseBooleanConverter.cs +++ b/source/FSC_Components/FolderBrowser/Converters/InverseBooleanConverter.cs @@ -12,6 +12,14 @@ public class InverseBooleanConverter : IValueConverter private const string _wrongTargetType = "The target must be a boolean"; #region IValueConverter Members + /// + /// Converts a boolean value into its inverse value. + /// + /// + /// + /// + /// + /// public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { @@ -22,6 +30,14 @@ public object Convert(object value, Type targetType, object parameter, return !(bool)value; } + /// + /// Converts a boolean value into its inverse value. + /// + /// + /// + /// + /// + /// public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { diff --git a/source/FSC_Components/FolderBrowser/Converters/UpdateBindingConverter.cs b/source/FSC_Components/FolderBrowser/Converters/UpdateBindingConverter.cs index d30e007..14ec9f2 100644 --- a/source/FSC_Components/FolderBrowser/Converters/UpdateBindingConverter.cs +++ b/source/FSC_Components/FolderBrowser/Converters/UpdateBindingConverter.cs @@ -61,6 +61,14 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur return inputValues[2]; // Return the ItemSource binding for updates since processing is done } + /// + /// Method is not implemented and will throw . + /// + /// + /// + /// + /// + /// public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); diff --git a/source/FSC_Components/FolderBrowser/FolderBrowser.csproj b/source/FSC_Components/FolderBrowser/FolderBrowser.csproj index bb64563..0afd087 100644 --- a/source/FSC_Components/FolderBrowser/FolderBrowser.csproj +++ b/source/FSC_Components/FolderBrowser/FolderBrowser.csproj @@ -21,6 +21,7 @@ DEBUG;TRACE prompt 4 + bin\Debug\FolderBrowser.xml pdbonly @@ -29,6 +30,7 @@ TRACE prompt 4 + bin\Release\FolderBrowser.xml true diff --git a/source/FSC_Components/FolderBrowser/FolderBrowserFactory.cs b/source/FSC_Components/FolderBrowser/FolderBrowserFactory.cs index 51fdb64..eb2d809 100644 --- a/source/FSC_Components/FolderBrowser/FolderBrowserFactory.cs +++ b/source/FSC_Components/FolderBrowser/FolderBrowserFactory.cs @@ -36,8 +36,8 @@ public static IDropDownViewModel CreateDropDownViewModel( /// Create a browser viewmodel object that can be used to manage a /// browser naviagtion (directory picker) control. /// - /// Reference to a mssage box service for - /// displaying messages to the user + /// + /// /// public static IBrowserViewModel CreateBrowserViewModel( bool specialFolderVisibility = true @@ -69,6 +69,12 @@ public static IDialogViewModel CreateDialogViewModel( return new DialogViewModel(treeBrowser, recentLocations); } + /// + /// Creates an object that can be used to drive an item of list + /// of custom folders (Music, Desktop, etc...). + /// + /// + /// public static ICustomFolderItemViewModel CreateCustomFolderItemViewModel( System.Environment.SpecialFolder specialFolder) { diff --git a/source/FSC_Components/FolderBrowser/Interfaces/Dialogs/IDialogViewModel.cs b/source/FSC_Components/FolderBrowser/Interfaces/Dialogs/IDialogViewModel.cs index 6ff4ae3..484e444 100644 --- a/source/FSC_Components/FolderBrowser/Interfaces/Dialogs/IDialogViewModel.cs +++ b/source/FSC_Components/FolderBrowser/Interfaces/Dialogs/IDialogViewModel.cs @@ -2,9 +2,17 @@ { using FileSystemModels.Interfaces.Bookmark; using FolderBrowser.Interfaces; + using System.ComponentModel; - public interface IDialogViewModel + /// + /// Defines an interface to a viewmodel that can be used to drive a dialog. + /// + public interface IDialogViewModel : INotifyPropertyChanged { + /// + /// Gets a property that can be set by the viewmodel to indicate for the + /// view that the dialog should now be closed. + /// bool? DialogCloseResult { get; } /// diff --git a/source/FSC_Components/FolderBrowser/Interfaces/Dialogs/IDropDownViewModel.cs b/source/FSC_Components/FolderBrowser/Interfaces/Dialogs/IDropDownViewModel.cs index 5b1717a..47ed2b9 100644 --- a/source/FSC_Components/FolderBrowser/Interfaces/Dialogs/IDropDownViewModel.cs +++ b/source/FSC_Components/FolderBrowser/Interfaces/Dialogs/IDropDownViewModel.cs @@ -3,7 +3,20 @@ using FileSystemModels.Interfaces.Bookmark; using System.Windows.Input; + /// + /// Defines a delegate that is called when the view is closed. + /// This delegate can be used to update the selected path + /// in calling client app. + /// + /// public delegate string UpdateCurrentPath(); + + /// + /// Defines a delegate that is called when the view is closed. + /// This delegate can be used to update the corresponding bookmarks + /// in the client app. + /// + /// public delegate IBookmarksViewModel UpdateBookmarks(); /// @@ -79,10 +92,22 @@ public interface IDropDownViewModel /// ICommand OKCommand { get; } + /// + /// Gets a property that can be used to specify a delegete method that is called upon + /// close of the drop down button element. + /// DropDownClosedResult ResultCallback { get; } + /// + /// Gets/sets the initial path that is displayed when the view is loaded + /// for the very first time. + /// UpdateCurrentPath UpdateInitialPath { get; set; } + /// + /// Gets/sets the bookmarks (if any) for display when the view is loaded + /// for the very first time. + /// UpdateBookmarks UpdateInitialBookmarks { get; set; } } } diff --git a/source/FSC_Components/FolderBrowser/Interfaces/IBrowserViewModel.cs b/source/FSC_Components/FolderBrowser/Interfaces/IBrowserViewModel.cs index e3bdcf5..daa8525 100644 --- a/source/FSC_Components/FolderBrowser/Interfaces/IBrowserViewModel.cs +++ b/source/FSC_Components/FolderBrowser/Interfaces/IBrowserViewModel.cs @@ -27,6 +27,9 @@ public interface IBrowserViewModel : INavigateable /// bool UpdateView { get; set; } + /// + /// Gets/sets whether the associated view is currently enabled or not. + /// bool IsBrowseViewEnabled { get; set; } /// @@ -44,7 +47,7 @@ public interface IBrowserViewModel : INavigateable /// starts up via Loading. The control attempts to change the /// current directory to the indicated directory if the /// ... method is called in the Loaded event of the - /// . + /// . /// string InitialPath { get; set; } diff --git a/source/FSC_Components/FolderBrowser/Interfaces/ICustomFolderItemViewModel.cs b/source/FSC_Components/FolderBrowser/Interfaces/ICustomFolderItemViewModel.cs index 4361632..77a7312 100644 --- a/source/FSC_Components/FolderBrowser/Interfaces/ICustomFolderItemViewModel.cs +++ b/source/FSC_Components/FolderBrowser/Interfaces/ICustomFolderItemViewModel.cs @@ -1,10 +1,22 @@ namespace FolderBrowser.Interfaces { using System; + using System.ComponentModel; - public interface ICustomFolderItemViewModel + /// + /// Defines an interface to a viewmodel item that represents a + /// Special Folder (Music, Video, Desktop) in the Windows files system. + /// + public interface ICustomFolderItemViewModel : INotifyPropertyChanged { + /// + /// Gets the file system path (if any) of this item. + /// string Path { get; } + + /// + /// Gets the Special Folder enumeration of this item. + /// Environment.SpecialFolder SpecialFolder { get; } } } diff --git a/source/FSC_Components/FolderBrowser/Themes/ResourceKeys.cs b/source/FSC_Components/FolderBrowser/Themes/ResourceKeys.cs index def402b..55fa80b 100644 --- a/source/FSC_Components/FolderBrowser/Themes/ResourceKeys.cs +++ b/source/FSC_Components/FolderBrowser/Themes/ResourceKeys.cs @@ -2,6 +2,10 @@ { using System.Windows; + /// + /// Defines the resource key that are available for styling, colors, and brushes + /// in this application. + /// public static class ResourceKeys { /// diff --git a/source/FSC_Components/FolderBrowser/ViewModels/BrowserViewModel.cs b/source/FSC_Components/FolderBrowser/ViewModels/BrowserViewModel.cs index 2f372f7..ddf7cc5 100644 --- a/source/FSC_Components/FolderBrowser/ViewModels/BrowserViewModel.cs +++ b/source/FSC_Components/FolderBrowser/ViewModels/BrowserViewModel.cs @@ -116,6 +116,9 @@ public bool UpdateView } } + /// + /// Gets/sets whether the associated view is currently enabled or not. + /// public bool IsBrowseViewEnabled { get @@ -733,7 +736,7 @@ private set /// starts up via Loading. The control attempts to change the /// current directory to the indicated directory if the /// ... method is called in the Loaded event of the - /// . + /// . /// public string InitialPath { @@ -758,7 +761,7 @@ public string InitialPath /// /// Controller can start browser process if IsBrowsing = false /// - /// + /// /// bool INavigateable.NavigateTo(IPathModel location) { @@ -768,7 +771,7 @@ bool INavigateable.NavigateTo(IPathModel location) /// /// Controller can start browser process if IsBrowsing = false /// - /// + /// /// async Task INavigateable.NavigateToAsync(IPathModel location) { @@ -801,7 +804,8 @@ public void SetSpecialFoldersVisibility(bool visible) /// /// Controller can start browser process if IsBrowsing = false /// - /// + /// + /// /// private bool NavigateTo(IPathModel location, bool ResetBrowserStatus = true) diff --git a/source/FSC_Components/FolderBrowser/ViewModels/Dialogs/DialogBaseViewModel.cs b/source/FSC_Components/FolderBrowser/ViewModels/Dialogs/DialogBaseViewModel.cs index 0a91124..80a9d75 100644 --- a/source/FSC_Components/FolderBrowser/ViewModels/Dialogs/DialogBaseViewModel.cs +++ b/source/FSC_Components/FolderBrowser/ViewModels/Dialogs/DialogBaseViewModel.cs @@ -81,7 +81,7 @@ private set #region methods /// /// (Re-)Connects the Bookmark ViewModel with the - /// method via private method. + /// .BrowsePath(string, bool) method via private method. /// to enable user's path selection being input to folder browser. /// /// diff --git a/source/FSC_Components/FolderBrowser/ViewModels/FolderViewModel.cs b/source/FSC_Components/FolderBrowser/ViewModels/FolderViewModel.cs index 2426e43..58d2b23 100644 --- a/source/FSC_Components/FolderBrowser/ViewModels/FolderViewModel.cs +++ b/source/FSC_Components/FolderBrowser/ViewModels/FolderViewModel.cs @@ -22,6 +22,7 @@ internal class FolderViewModel : TreeItemViewModel /// Construct a folder viewmodel item from a path. /// /// + /// /// public FolderViewModel(IPathModel model, ITreeItemViewModel parent) : base(model, parent) @@ -33,6 +34,7 @@ public FolderViewModel(IPathModel model, ITreeItemViewModel parent) /// file system folder object (eg.: FolderPath = 'C:\Temp\', FolderName = 'Temp'). /// /// + /// /// internal FolderViewModel(string dir, ITreeItemViewModel parent) : this(PathFactory.Create(dir, FSItemType.Folder), parent) @@ -106,6 +108,7 @@ internal static void LoadFolders(ITreeItemViewModel parentItem) /// into the sub-folder viewmodel collection of this folder item. /// /// + /// /// internal static TreeItemViewModel AddFolder(string dir, ITreeItemViewModel parentItem) diff --git a/source/FSC_Components/FolderBrowser/ViewModels/Messages/DisplayMessageViewModel.cs b/source/FSC_Components/FolderBrowser/ViewModels/Messages/DisplayMessageViewModel.cs index 2111719..7045262 100644 --- a/source/FSC_Components/FolderBrowser/ViewModels/Messages/DisplayMessageViewModel.cs +++ b/source/FSC_Components/FolderBrowser/ViewModels/Messages/DisplayMessageViewModel.cs @@ -57,7 +57,7 @@ public string Message /// /// Resets the current message with the given string. /// - /// + /// public void SetMessage(string message) { this.Message = message; diff --git a/source/FSC_Components/FolderBrowser/ViewModels/Messages/IDisplayMessageViewModel.cs b/source/FSC_Components/FolderBrowser/ViewModels/Messages/IDisplayMessageViewModel.cs index 29bda87..e987448 100644 --- a/source/FSC_Components/FolderBrowser/ViewModels/Messages/IDisplayMessageViewModel.cs +++ b/source/FSC_Components/FolderBrowser/ViewModels/Messages/IDisplayMessageViewModel.cs @@ -1,20 +1,33 @@ namespace FolderBrowser.ViewModels.Messages { - using System; + using System.ComponentModel; /// /// Defines an interface for a viewmodel class that can be /// used to pop-up messages in a UI (without using messageboxes). /// - public interface IDisplayMessageViewModel : ISetMessageDisplay + public interface IDisplayMessageViewModel : ISetMessageDisplay, INotifyPropertyChanged { + /// + /// Gets/sets whether an error message is currently available. + /// bool IsErrorMessageAvailable { get; set; } + /// + /// Gets/sets the massage. + /// string Message { get; set; } } + /// + /// Defines an interface that allows a client to set a message for display. + /// public interface ISetMessageDisplay { + /// + /// Sets the message to be displayed. + /// + /// void SetMessage(string Message); } } diff --git a/source/FSC_Components/FolderBrowser/ViewModels/SortableObservableCollection.cs b/source/FSC_Components/FolderBrowser/ViewModels/SortableObservableCollection.cs index 2523bfb..65c5404 100644 --- a/source/FSC_Components/FolderBrowser/ViewModels/SortableObservableCollection.cs +++ b/source/FSC_Components/FolderBrowser/ViewModels/SortableObservableCollection.cs @@ -11,9 +11,21 @@ /// public class SortableObservableCollection : ObservableCollection { - // Constructors + /// + /// Class constructor. + /// public SortableObservableCollection() : base() { } + + /// + /// Class constructor. + /// + /// public SortableObservableCollection(List l) : base(l) { } + + /// + /// Class constructor. + /// + /// public SortableObservableCollection(IEnumerable l) : base(l) { } #region Sorting diff --git a/source/FSC_Components/FolderBrowser/ViewModels/TreeItemViewModel.cs b/source/FSC_Components/FolderBrowser/ViewModels/TreeItemViewModel.cs index 97df1a0..58a7ea5 100644 --- a/source/FSC_Components/FolderBrowser/ViewModels/TreeItemViewModel.cs +++ b/source/FSC_Components/FolderBrowser/ViewModels/TreeItemViewModel.cs @@ -37,6 +37,7 @@ internal class TreeItemViewModel : EditInPlaceViewModel, ITreeItemViewModel /// Construct an item viewmodel from a path. /// /// + /// /// public TreeItemViewModel(IPathModel model, ITreeItemViewModel parent) : this() diff --git a/source/FSC_Components/FolderBrowser/Views/Behaviours/SelectTextOnFocus .cs b/source/FSC_Components/FolderBrowser/Views/Behaviours/SelectTextOnFocus .cs index 9ee4a20..1482d06 100644 --- a/source/FSC_Components/FolderBrowser/Views/Behaviours/SelectTextOnFocus .cs +++ b/source/FSC_Components/FolderBrowser/Views/Behaviours/SelectTextOnFocus .cs @@ -6,12 +6,15 @@ using System.Windows.Media; /// - /// Implements an attached behavior that select all text in a textbox upon gain of focus. + /// Implements an attached behavior that selects all the text in a textbox upon gain of focus. /// /// Source: http://stackoverflow.com/questions/660554/how-to-automatically-select-all-text-on-focus-in-wpf-textbox /// public class SelectTextOnFocus : DependencyObject { + /// + /// Implements an attached property that can be attached to a textbox control. + /// public static readonly DependencyProperty ActiveProperty = DependencyProperty.RegisterAttached( "Active", typeof(bool), @@ -75,6 +78,11 @@ private static void OnKeyboardFocusSelectText(object sender, KeyboardFocusChange } } + /// + /// Implements the getter an attached property vakue that can be attached to a textbox control. + /// + /// + /// [AttachedPropertyBrowsableForChildrenAttribute(IncludeDescendants = false)] [AttachedPropertyBrowsableForType(typeof(TextBox))] public static bool GetActive(DependencyObject @object) @@ -82,6 +90,11 @@ public static bool GetActive(DependencyObject @object) return (bool)@object.GetValue(ActiveProperty); } + /// + /// Implements the setter an attached property vakue that can be attached to a textbox control. + /// + /// + /// public static void SetActive(DependencyObject @object, bool value) { @object.SetValue(ActiveProperty, value); diff --git a/source/FSC_Components/FolderBrowser/Views/Behaviours/TextEnterCommand.cs b/source/FSC_Components/FolderBrowser/Views/Behaviours/TextEnterCommand.cs index aeaab35..4d3ad75 100644 --- a/source/FSC_Components/FolderBrowser/Views/Behaviours/TextEnterCommand.cs +++ b/source/FSC_Components/FolderBrowser/Views/Behaviours/TextEnterCommand.cs @@ -37,7 +37,7 @@ public static ICommand GetCommand(DependencyObject source) } /// - /// This method is hooked in the definition of the . + /// This method is hooked in the definition of the . /// It is called whenever the attached property changes - in our case the event of binding /// and unbinding the property to a sink is what we are looking for. /// diff --git a/source/FSC_Components/FolderBrowser/Views/Behaviours/TreeViewItemExpanded.cs b/source/FSC_Components/FolderBrowser/Views/Behaviours/TreeViewItemExpanded.cs index 4a1ebc1..867b666 100644 --- a/source/FSC_Components/FolderBrowser/Views/Behaviours/TreeViewItemExpanded.cs +++ b/source/FSC_Components/FolderBrowser/Views/Behaviours/TreeViewItemExpanded.cs @@ -1,9 +1,5 @@ namespace FolderBrowser.Views.Behaviours { - using FolderBrowser.Interfaces; - using FolderBrowser.ViewModels; - using System; - using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Input; @@ -14,21 +10,38 @@ namespace FolderBrowser.Views.Behaviours /// public static class TreeViewItemExpanded { + /// + /// Implements a command dependency property that can be used to invoke + /// a bound command when the associated event in the control is raised. + /// + public static readonly DependencyProperty CommandProperty = + DependencyProperty.RegisterAttached("Command", + typeof(ICommand), + typeof(TreeViewItemExpanded), + new PropertyMetadata(null, OnPropertyChanged)); + + /// + /// Implements a command property gettter that can be used to invoke + /// a bound command when the associated event in the control is raised. + /// + /// + /// public static ICommand GetCommand(DependencyObject obj) { return (ICommand)obj.GetValue(CommandProperty); } + /// + /// Implements a command property settter that can be used to invoke + /// a bound command when the associated event in the control is raised. + /// + /// + /// public static void SetCommand(DependencyObject obj, ICommand value) { obj.SetValue(CommandProperty, value); } - public static readonly DependencyProperty CommandProperty = - DependencyProperty.RegisterAttached("Command", - typeof(ICommand), - typeof(TreeViewItemExpanded), - new PropertyMetadata(null, OnPropertyChanged)); #region methods private static void OnPropertyChanged(DependencyObject depObj, DependencyPropertyChangedEventArgs e) { diff --git a/source/FSC_Components/FolderBrowser/Views/Behaviours/TreeViewVirtualItemBehaviour.cs b/source/FSC_Components/FolderBrowser/Views/Behaviours/TreeViewVirtualItemBehaviour.cs index 101f9d8..8660dfe 100644 --- a/source/FSC_Components/FolderBrowser/Views/Behaviours/TreeViewVirtualItemBehaviour.cs +++ b/source/FSC_Components/FolderBrowser/Views/Behaviours/TreeViewVirtualItemBehaviour.cs @@ -29,32 +29,41 @@ /// Allows two-way binding of a TreeView's selected item. /// Sources: /// http://stackoverflow.com/q/183636/46635 - /// http://code.msdn.microsoft.com/Changing-selection-in-a-6a6242c8/sourcecode?fileId=18862&pathId=753647475 + /// http://code.msdn.microsoft.com/Changing-selection-in-a-6a6242c8/sourcecode?fileId=18862&pathId=753647475 /// internal class TreeViewVirtualItemBehaviour { + private static readonly DependencyProperty SelectedItemProperty = + DependencyProperty.RegisterAttached("SelectedItem" + , typeof(IParent) + , typeof(TreeViewVirtualItemBehaviour) + , new FrameworkPropertyMetadata(null, + //FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, + OnSelectedItemChanged)); + + /// + /// Implements the get method for a dependency property. + /// + /// + /// public static IParent GetSelectedItem(DependencyObject obj) { return (IParent)obj.GetValue(SelectedItemProperty); } + /// + /// Implements the set method for a dependency property. + /// + /// + /// public static void SetSelectedItem(DependencyObject obj, IParent value) { obj.SetValue(SelectedItemProperty, value); } - - private static readonly DependencyProperty SelectedItemProperty = - DependencyProperty.RegisterAttached("SelectedItem" - , typeof(IParent) - , typeof(TreeViewVirtualItemBehaviour) - , new FrameworkPropertyMetadata(null, - //FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, - OnSelectedItemChanged)); - /// /// This method is invoked when the value bound at the dependency - /// property has changed. + /// property has changed. /// /// /// diff --git a/source/FSC_Components/FolderBrowser/Views/BookmarkFolderDropDown.xaml.cs b/source/FSC_Components/FolderBrowser/Views/BookmarkFolderDropDown.xaml.cs index d2a52f8..255e190 100644 --- a/source/FSC_Components/FolderBrowser/Views/BookmarkFolderDropDown.xaml.cs +++ b/source/FSC_Components/FolderBrowser/Views/BookmarkFolderDropDown.xaml.cs @@ -1,25 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -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 FolderBrowser.Views +namespace FolderBrowser.Views { + using System.Windows.Controls; + /// /// Interaction logic for BookmarkFolderDropDown.xaml /// public partial class BookmarkFolderDropDown : UserControl { + /// + /// Class constructor. + /// public BookmarkFolderDropDown() { InitializeComponent(); diff --git a/source/FSC_Components/FolderBrowser/Views/BrowseDirectoriesView.xaml.cs b/source/FSC_Components/FolderBrowser/Views/BrowseDirectoriesView.xaml.cs index 4c7857d..ea99ae3 100644 --- a/source/FSC_Components/FolderBrowser/Views/BrowseDirectoriesView.xaml.cs +++ b/source/FSC_Components/FolderBrowser/Views/BrowseDirectoriesView.xaml.cs @@ -7,6 +7,9 @@ /// public partial class BrowseDirectoriesView : UserControl { + /// + /// Class constructor + /// public BrowseDirectoriesView() { InitializeComponent(); diff --git a/source/FSC_Components/FolderBrowser/Views/DropDownView.xaml.cs b/source/FSC_Components/FolderBrowser/Views/DropDownView.xaml.cs index 34543a2..13238a6 100644 --- a/source/FSC_Components/FolderBrowser/Views/DropDownView.xaml.cs +++ b/source/FSC_Components/FolderBrowser/Views/DropDownView.xaml.cs @@ -8,6 +8,9 @@ /// public partial class DropDownView : UserControl { + /// + /// Class constructor. + /// public DropDownView() { InitializeComponent(); diff --git a/source/FSC_Components/FolderBrowser/Views/FolderBrowserDialogView.xaml.cs b/source/FSC_Components/FolderBrowser/Views/FolderBrowserDialogView.xaml.cs index 04597d2..3a8b905 100644 --- a/source/FSC_Components/FolderBrowser/Views/FolderBrowserDialogView.xaml.cs +++ b/source/FSC_Components/FolderBrowser/Views/FolderBrowserDialogView.xaml.cs @@ -7,6 +7,9 @@ /// public partial class FolderBrowserDialogView : UserControl { + /// + /// Class constructor + /// public FolderBrowserDialogView() { InitializeComponent(); diff --git a/source/FSC_Components/FolderBrowser/Views/FolderBrowserTreeView.xaml.cs b/source/FSC_Components/FolderBrowser/Views/FolderBrowserTreeView.xaml.cs index 8d574ae..755e0c9 100644 --- a/source/FSC_Components/FolderBrowser/Views/FolderBrowserTreeView.xaml.cs +++ b/source/FSC_Components/FolderBrowser/Views/FolderBrowserTreeView.xaml.cs @@ -11,7 +11,7 @@ namespace FolderBrowser.Views /// public partial class FolderBrowserTreeView : UserControl { - protected static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); /// /// Standard class constructor diff --git a/source/FSC_Components/FolderControlsLib/Factory.cs b/source/FSC_Components/FolderControlsLib/Factory.cs index 5fa7b30..bf8c84a 100644 --- a/source/FSC_Components/FolderControlsLib/Factory.cs +++ b/source/FSC_Components/FolderControlsLib/Factory.cs @@ -14,7 +14,7 @@ public sealed class Factory private Factory(){ } /// - /// Public construction method to create a + /// Public construction method to create a /// object that represents a logical drive (eg 'C:\') /// /// diff --git a/source/FSC_Components/FolderControlsLib/FolderControlsLib.csproj b/source/FSC_Components/FolderControlsLib/FolderControlsLib.csproj index d518e17..6137ca0 100644 --- a/source/FSC_Components/FolderControlsLib/FolderControlsLib.csproj +++ b/source/FSC_Components/FolderControlsLib/FolderControlsLib.csproj @@ -22,6 +22,7 @@ DEBUG;TRACE prompt 4 + bin\Debug\FolderControlsLib.xml pdbonly @@ -30,6 +31,7 @@ TRACE prompt 4 + bin\Release\FolderControlsLib.xml diff --git a/source/FSC_Components/FolderControlsLib/ViewModels/FolderItemViewModel.cs b/source/FSC_Components/FolderControlsLib/ViewModels/FolderItemViewModel.cs index 0d0dce1..e34e6f1 100644 --- a/source/FSC_Components/FolderControlsLib/ViewModels/FolderItemViewModel.cs +++ b/source/FSC_Components/FolderControlsLib/ViewModels/FolderItemViewModel.cs @@ -32,7 +32,6 @@ internal class FolderItemViewModel : EditInPlaceViewModel, IFolderItemViewModel /// /// /// - /// public FolderItemViewModel(string curdir, FSItemType itemType, string displayName, @@ -48,7 +47,6 @@ public FolderItemViewModel(string curdir, /// /// /// - /// public FolderItemViewModel(string curdir, FSItemType itemType, string itemName) @@ -63,7 +61,7 @@ public FolderItemViewModel(string curdir, /// /// /// - /// + /// public FolderItemViewModel(IPathModel model, string itemName, bool isReadOnly = false) diff --git a/source/LICENSE b/source/LICENSE deleted file mode 100644 index b2d0bd8..0000000 --- a/source/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014 Dirkster99 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/source/README.md b/source/README.md deleted file mode 100644 index dc84633..0000000 --- a/source/README.md +++ /dev/null @@ -1,42 +0,0 @@ -[![Build status](https://ci.appveyor.com/api/projects/status/qapqvtyip5e8pis5?svg=true)](https://ci.appveyor.com/project/Dirkster99/fsc) -# WPF File System Controls # - -This project contains the source code for an implementation of controls that are related to browsing files within an existing application. Go to: https://github.com/Dirkster99/Edi to see the controls in full action (see Explorer tool window). - -This project contains: - - - - A folder browser control to browse folders with a treeview in your file system - - see: FolderBrowser/FolderBrowser/ViewModels/FolderViewModel.cs and FolderBrowser/FolderBrowser/Views/FolderBrowserView.xaml - - see /FolderBrowser/FolderBrowser/Readme.txt for more details - - - A path combobox control that lets you: - - enter a path (with copy and paste) or - - pick drives from a drop down list of currently recognized drives. - - see: FileListView/ViewModels/FolderComboBoxViewModel.cs and FileListView/Views/FolderComboBox.xaml - - - A folder and file listview control to list items within a given folder - - see FileListView/ViewModels/FileListViewModel.cs and FileListView/Views/FListView.xaml - - - A folder bookmark drop down list control to bookmark and quick access recently visited folders - - see also: https://github.com/Dirkster99/DropDownButtonLib - - - A text overlay edit-in-place textbox that is shown when a user renames or creates a new folder: - - see: https://github.com/Dirkster99/InplaceEditBoxLib - -Other features include: - - A forward and backward history control to navigated back and forth between recently visited folders - - A set of folder short-cut buttons to navigate directly to a folder. - -## Limitations ## - - - Universal Control (UNC) network share paths are not supported - - - Support for drives with exchangeable media (CD-ROM, USB Drive) is limited. Everything should work as expected but exchanging the media will not lead to updating displayed folder and file entries. - -## Removed Local Dependencies to NuGet instead: - -- Log4Net -- InPlaceEditbox (and UserNotification) -- DropDownButtonLib -- MsgBox (and UserNotification) diff --git a/source/ToDo.txt b/source/ToDo.txt deleted file mode 100644 index adc5f97..0000000 --- a/source/ToDo.txt +++ /dev/null @@ -1,6 +0,0 @@ - -Find Resoolution for these missing methods: - -- IBrowserViewModel.FolderSelectionChangedEvent (Event) -- IBrowserViewModel.RequestEditBookmarkedFolders (Event) -- IBrowserViewModel.SetSelectedFolder() \ No newline at end of file