Solution Layout and Namespaces - Ant-f/WorkingFilesList GitHub Wiki

WorkingFilesList

Files to build the extension and integrate it into Visual Studio.

  • ClassDiagram: Class diagrams for selected classes in the solution. Not used in the build process.

  • WorkingFilesList.Ioc: IoC related files, exclusive of the modules themselves.

    • WorkingFilesList.Ioc.Modules: Ninject modules specifying bindings for interfaces and implementations within the solution.
  • WorkingFilesList.Resources: Icons for the extension, exclusive of those used within the tool window.

WorkingFilesList.Core

Code used by within both WorkingFilesList.ToolWindow and WorkingFilesList.OptionsDialoguePage

  • WorkingFilesList.Core.Controls: Contains code for the NumericUpDown control.

    • WorkingFilesList.Core.Controls.Command: Commands for the buttons on the NumericUpDown control.
  • WorkingFilesList.Core.Interface: Interfaces used in both WorkingFilesList.ToolWindow and WorkingFilesList.OptionsDialoguePage

  • WorkingFilesList.Core.Model: Data model classes that contain minimal logic, e.g. to raise PropertyChanged where necessary.

    • WorkingFilesList.Core.Model.SortOption: Data model classes representing the user-selectable options for sorting/ordering the files displayed within the tool window.
  • WorkingFilesList.Core.Service

    • WorkingFilesList.Core.Service.Locator: Service locator; used to facilitate data binding in XAML, and also where constructor injection is not possible (e.g. the constructor of OptionsPage)
  • WorkingFilesList.Core.Theme: XAML resource dictionaries containing custom WPF styles and templates.

WorkingFilesList.OptionsDialoguePage

Code to add a page to the Visual Studio Tools -> Options dialogue.

  • WorkingFilesList.OptionsDialoguePage.Factory: Object factories, the use of which facilitate unit testing other components.

  • WorkingFilesList.OptionsDialoguePage.Interface: Interfaces for classes within WorkingFilesList.OptionsDialoguePage.

  • WorkingFilesList.OptionsDialoguePage.Service: Logic-encapsulating stateless services used to perform various tasks within the options page.

  • WorkingFilesList.OptionsDialoguePage.View: UI Layout for the options-page controls.

  • WorkingFilesList.OptionsDialoguePage.ViewModel: View model classes for data binding within the View layer.

    • WorkingFilesList.OptionsDialoguePage.ViewModel.Command: System.Windows.Input.ICommand implementations for data binding from the view layer.

WorkingFilesList.ToolWindow

Files to build the tool window itself.

  • WorkingFilesList.ToolWindow.Design.DesignTimeData: Data that is used (only) at design time within the Visual Studio XAML designer, to aid the layout/design process.

  • WorkingFilesList.ToolWindow.Factory: Data-object factories that encapsulate object-setup logic.

  • WorkingFilesList.ToolWindow.Interface: Interfaces for classes within WorkingFilesList.ToolWindow.

  • WorkingFilesList.ToolWindow.Repository: Repositories for retrieving/storing settings made within the tool window.

  • WorkingFilesList.ToolWindow.Service: Logic-encapsulating services used to perform various tasks within the tool window; generally stateless.

    • WorkingFilesList.ToolWindow.Service.EventRelay: Services that subscribe to events from the Visual Studio extensibility model, and invoke methods on relevant services/view model objects with the received event data when raised.

    • WorkingFilesList.ToolWindow.Service.DocumentIcon: Contains file-type icons.

  • WorkingFilesList.ToolWindow.View: Classes corresponding to the views of data within the tool window.

    • WorkingFilesList.ToolWindow.View.Controls: Custom controls used within the tool window.

      • WorkingFilesList.ToolWindow.View.Controls.Command: Implementations of System.Windows.Input.ICommand that view objects of custom controls can data bind to.
    • WorkingFilesList.ToolWindow.View.Icon: Icons used on buttons in the tool window.

    • WorkingFilesList.ToolWindow.View.Theme: XAML resource dictionaries containing custom WPF styles and templates used exclusively in WorkingFilesList.ToolWindow.

  • WorkingFilesList.ToolWindow.ViewModel: View model classes for data bind within the View layer; classes may or may not contain state.

    • WorkingFilesList.ToolWindow.ViewModel.Command: Implementations of System.Windows.Input.ICommand for data binding from the view layer.

    • WorkingFilesList.ToolWindow.ViewModel.UserPreference: View model classes related to and representing user preferences within the tool window, e.g. sorting-order of files that are open for editing; whether or not to associate projects with colours, etc.

      • WorkingFilesList.ToolWindow.ViewModel.UserPreference.UpdateReaction: Classes containing logic to be run as a reaction to updating specific user preferences.