Răsfoiți Sursa

FilteredSolutionsExtension: correct solution directory structure

Dalibor Votruba 1 an în urmă
părinte
comite
2371847b6d
26 a modificat fișierele cu 208 adăugiri și 53 ștergeri
  1. BIN
      FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/bo_strong_key_pair.snk
  2. BIN
      FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/fse_icon.ico
  3. 121 0
      FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/licence.txt
  4. 0 0
      FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/readme.md
  5. 0 0
      FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/releasenote.txt
  6. BIN
      FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/screenshot.png
  7. 5 2
      FilteredSolutionsExtension/FilteredSolutionsExtension/Commands/ManualFilterCommand.cs
  8. 1 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/Converters/StringToVisibilityConverter.cs
  9. 36 17
      FilteredSolutionsExtension/FilteredSolutionsExtension/FilteredSolutionsExtension.csproj
  10. 3 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/FilteredSolutionsExtensionPackage.cs
  11. 1 5
      FilteredSolutionsExtension/FilteredSolutionsExtension/Handlers/ErrorHandler.cs
  12. 3 2
      FilteredSolutionsExtension/FilteredSolutionsExtension/Handlers/SolutionEventsHandler.cs
  13. 3 5
      FilteredSolutionsExtension/FilteredSolutionsExtension/Handlers/SolutionOpeningInterceptor.cs
  14. 1 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/DebugHelper.cs
  15. 1 4
      FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/ExtensionSettings.cs
  16. 1 3
      FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/FileUtils.cs
  17. 3 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/FilteredSolutionGenerator.cs
  18. 3 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/SolutionParser.cs
  19. 1 2
      FilteredSolutionsExtension/FilteredSolutionsExtension/Models/ProjectInfo.cs
  20. 1 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/Models/ProjectNode.cs
  21. 1 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/Models/ProjectTreeItem.cs
  22. 4 3
      FilteredSolutionsExtension/FilteredSolutionsExtension/Views/ProjectFilterDialog.xaml
  23. 4 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/Views/ProjectFilterDialog.xaml.cs
  24. 12 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/directory_structure.txt
  25. 3 1
      FilteredSolutionsExtension/FilteredSolutionsExtension/source.extension.vsixmanifest
  26. BIN
      FilteredSolutionsExtension/fse_icon.ico

BIN
FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/bo_strong_key_pair.snk


BIN
FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/fse_icon.ico


+ 121 - 0
FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/licence.txt

@@ -0,0 +1,121 @@
+Creative Commons Legal Code
+
+CC0 1.0 Universal
+
+    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+    LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
+    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+    REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
+    PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
+    THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
+    HEREUNDER.
+
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer
+exclusive Copyright and Related Rights (defined below) upon the creator
+and subsequent owner(s) (each and all, an "owner") of an original work of
+authorship and/or a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for
+the purpose of contributing to a commons of creative, cultural and
+scientific works ("Commons") that the public can reliably and without fear
+of later claims of infringement build upon, modify, incorporate in other
+works, reuse and redistribute as freely as possible in any form whatsoever
+and for any purposes, including without limitation commercial purposes.
+These owners may contribute to the Commons to promote the ideal of a free
+culture and the further production of creative, cultural and scientific
+works, or to gain reputation or greater distribution for their Work in
+part through the use and efforts of others.
+
+For these and/or other purposes and motivations, and without any
+expectation of additional consideration or compensation, the person
+associating CC0 with a Work (the "Affirmer"), to the extent that he or she
+is an owner of Copyright and Related Rights in the Work, voluntarily
+elects to apply CC0 to the Work and publicly distribute the Work under its
+terms, with knowledge of his or her Copyright and Related Rights in the
+Work and the meaning and intended legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be
+protected by copyright and related or neighboring rights ("Copyright and
+Related Rights"). Copyright and Related Rights include, but are not
+limited to, the following:
+
+  i. the right to reproduce, adapt, distribute, perform, display,
+     communicate, and translate a Work;
+ ii. moral rights retained by the original author(s) and/or performer(s);
+iii. publicity and privacy rights pertaining to a person's image or
+     likeness depicted in a Work;
+ iv. rights protecting against unfair competition in regards to a Work,
+     subject to the limitations in paragraph 4(a), below;
+  v. rights protecting the extraction, dissemination, use and reuse of data
+     in a Work;
+ vi. database rights (such as those arising under Directive 96/9/EC of the
+     European Parliament and of the Council of 11 March 1996 on the legal
+     protection of databases, and under any national implementation
+     thereof, including any amended or successor version of such
+     directive); and
+vii. other similar, equivalent or corresponding rights throughout the
+     world based on applicable law or treaty, and any national
+     implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention
+of, applicable law, Affirmer hereby overtly, fully, permanently,
+irrevocably and unconditionally waives, abandons, and surrenders all of
+Affirmer's Copyright and Related Rights and associated claims and causes
+of action, whether now known or unknown (including existing as well as
+future claims and causes of action), in the Work (i) in all territories
+worldwide, (ii) for the maximum duration provided by applicable law or
+treaty (including future time extensions), (iii) in any current or future
+medium and for any number of copies, and (iv) for any purpose whatsoever,
+including without limitation commercial, advertising or promotional
+purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
+member of the public at large and to the detriment of Affirmer's heirs and
+successors, fully intending that such Waiver shall not be subject to
+revocation, rescission, cancellation, termination, or any other legal or
+equitable action to disrupt the quiet enjoyment of the Work by the public
+as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason
+be judged legally invalid or ineffective under applicable law, then the
+Waiver shall be preserved to the maximum extent permitted taking into
+account Affirmer's express Statement of Purpose. In addition, to the
+extent the Waiver is so judged Affirmer hereby grants to each affected
+person a royalty-free, non transferable, non sublicensable, non exclusive,
+irrevocable and unconditional license to exercise Affirmer's Copyright and
+Related Rights in the Work (i) in all territories worldwide, (ii) for the
+maximum duration provided by applicable law or treaty (including future
+time extensions), (iii) in any current or future medium and for any number
+of copies, and (iv) for any purpose whatsoever, including without
+limitation commercial, advertising or promotional purposes (the
+"License"). The License shall be deemed effective as of the date CC0 was
+applied by Affirmer to the Work. Should any part of the License for any
+reason be judged legally invalid or ineffective under applicable law, such
+partial invalidity or ineffectiveness shall not invalidate the remainder
+of the License, and in such case Affirmer hereby affirms that he or she
+will not (i) exercise any of his or her remaining Copyright and Related
+Rights in the Work or (ii) assert any associated claims and causes of
+action with respect to the Work, in either case contrary to Affirmer's
+express Statement of Purpose.
+
+4. Limitations and Disclaimers.
+
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
+    surrendered, licensed or otherwise affected by this document.
+ b. Affirmer offers the Work as-is and makes no representations or
+    warranties of any kind concerning the Work, express, implied,
+    statutory or otherwise, including without limitation warranties of
+    title, merchantability, fitness for a particular purpose, non
+    infringement, or the absence of latent or other defects, accuracy, or
+    the present or absence of errors, whether or not discoverable, all to
+    the greatest extent permissible under applicable law.
+ c. Affirmer disclaims responsibility for clearing rights of other persons
+    that may apply to the Work or any use thereof, including without
+    limitation any person's Copyright and Related Rights in the Work.
+    Further, Affirmer disclaims responsibility for obtaining any necessary
+    consents, permissions or other rights required for any use of the
+    Work.
+ d. Affirmer understands and acknowledges that Creative Commons is not a
+    party to this document and has no duty or obligation with respect to
+    this CC0 or use of the Work.

+ 0 - 0
FilteredSolutionsExtension/FilteredSolutionsExtension/readme.md → FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/readme.md


+ 0 - 0
FilteredSolutionsExtension/FilteredSolutionsExtension/releasenote.txt → FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/releasenote.txt


BIN
FilteredSolutionsExtension/FilteredSolutionsExtension/Assets/screenshot.png


+ 5 - 2
FilteredSolutionsExtension/FilteredSolutionsExtension/ManualFilterCommand.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Commands/ManualFilterCommand.cs

@@ -1,8 +1,11 @@
 using Microsoft.VisualStudio.Shell;
 using System;
 using System.ComponentModel.Design;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Views;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Helpers;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Commands
 {
     internal sealed class ManualFilterCommand
     {
@@ -24,7 +27,7 @@ namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
 
         public static ManualFilterCommand Instance { get; private set; }
 
-        private Microsoft.VisualStudio.Shell.IAsyncServiceProvider ServiceProvider => _package;
+        private IAsyncServiceProvider ServiceProvider => _package;
 
         public static async System.Threading.Tasks.Task InitializeAsync(AsyncPackage package)
         {

+ 1 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/StringToVisibilityConverter.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Converters/StringToVisibilityConverter.cs

@@ -3,7 +3,7 @@ using System.Globalization;
 using System.Windows;
 using System.Windows.Data;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Converters
 {
     public class StringToVisibilityConverter : IValueConverter
     {

+ 36 - 17
FilteredSolutionsExtension/FilteredSolutionsExtension/FilteredSolutionsExtension.csproj

@@ -4,6 +4,15 @@
     <MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
   </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>Assets\bo_strong_key_pair.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>Assets\fse_icon.ico</ApplicationIcon>
+  </PropertyGroup>
   <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -45,27 +54,28 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Compile Include="DebugHelper.cs" />
-    <Compile Include="ErrorHandler.cs" />
-    <Compile Include="ExtensionSettings.cs" />
-    <Compile Include="FileUtils.cs" />
-    <Compile Include="FilteredSolutionGenerator.cs" />
-    <Compile Include="ManualFilterCommand.cs" />
-    <Compile Include="ProjectFilterDialog.xaml.cs">
+    <Compile Include="Helpers\DebugHelper.cs" />
+    <Compile Include="Handlers\ErrorHandler.cs" />
+    <Compile Include="Helpers\ExtensionSettings.cs" />
+    <Compile Include="Helpers\FileUtils.cs" />
+    <Compile Include="Helpers\FilteredSolutionGenerator.cs" />
+    <Compile Include="Commands\ManualFilterCommand.cs" />
+    <Compile Include="Views\ProjectFilterDialog.xaml.cs">
       <DependentUpon>ProjectFilterDialog.xaml</DependentUpon>
     </Compile>
-    <Compile Include="ProjectInfo.cs" />
-    <Compile Include="ProjectNode.cs" />
-    <Compile Include="ProjectTreeItem.cs" />
+    <Compile Include="Models\ProjectInfo.cs" />
+    <Compile Include="Models\ProjectNode.cs" />
+    <Compile Include="Models\ProjectTreeItem.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="FilteredSolutionsExtensionPackage.cs" />
-    <Compile Include="SolutionEventsHandler.cs" />
-    <Compile Include="SolutionOpeningInterceptor.cs" />
-    <Compile Include="SolutionParser.cs" />
-    <Compile Include="StringToVisibilityConverter.cs" />
+    <Compile Include="Handlers\SolutionEventsHandler.cs" />
+    <Compile Include="Handlers\SolutionOpeningInterceptor.cs" />
+    <Compile Include="Helpers\SolutionParser.cs" />
+    <Compile Include="Converters\StringToVisibilityConverter.cs" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="readme.md" />
+    <None Include="Assets\bo_strong_key_pair.snk" />
+    <None Include="Assets\readme.md" />
     <None Include="source.extension.vsixmanifest">
       <SubType>Designer</SubType>
     </None>
@@ -85,19 +95,28 @@
     </PackageReference>
   </ItemGroup>
   <ItemGroup>
-    <Page Include="ProjectFilterDialog.xaml">
+    <Page Include="Views\ProjectFilterDialog.xaml">
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
   </ItemGroup>
   <ItemGroup>
+    <Content Include="Assets\fse_icon.ico">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <IncludeInVSIX>true</IncludeInVSIX>
+    </Content>
+    <Content Include="Assets\licence.txt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <IncludeInVSIX>true</IncludeInVSIX>
+    </Content>
     <Content Include="Menus.vsct" />
-    <Content Include="releasenote.txt">
+    <Content Include="Assets\releasenote.txt">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
       <IncludeInVSIX>true</IncludeInVSIX>
     </Content>
     <Content Include="Resources\FilterSolutionsCommand.png" />
   </ItemGroup>
+  <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

+ 3 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/FilteredSolutionsExtensionPackage.cs

@@ -1,6 +1,8 @@
 using Microsoft.VisualStudio.Shell;
 using Microsoft.VisualStudio.Shell.Interop;
-using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Handlers;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Views;
 using System;
 using System.ComponentModel.Design;
 using System.Runtime.InteropServices;

+ 1 - 5
FilteredSolutionsExtension/FilteredSolutionsExtension/ErrorHandler.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Handlers/ErrorHandler.cs

@@ -1,13 +1,9 @@
 using Microsoft.VisualStudio.Shell;
 using Microsoft.VisualStudio.Shell.Interop;
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 using System.Windows;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Handlers
 {
    public static class ErrorHandler
     {

+ 3 - 2
FilteredSolutionsExtension/FilteredSolutionsExtension/SolutionEventsHandler.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Handlers/SolutionEventsHandler.cs

@@ -1,14 +1,15 @@
 using Microsoft.VisualStudio;
 using Microsoft.VisualStudio.Shell;
 using Microsoft.VisualStudio.Shell.Interop;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Views;
 using System;
 using System.Collections.Generic;
 using System.IO;
-using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Handlers
 {
     public class SolutionEventsHandler : IVsSolutionEvents3, IVsSolutionLoadEvents
     {

+ 3 - 5
FilteredSolutionsExtension/FilteredSolutionsExtension/SolutionOpeningInterceptor.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Handlers/SolutionOpeningInterceptor.cs

@@ -1,15 +1,13 @@
 using EnvDTE;
-using Microsoft.VisualStudio;
 using Microsoft.VisualStudio.Shell;
 using Microsoft.VisualStudio.Shell.Interop;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Views;
 using System;
 using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
 using System.Threading.Tasks;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Handlers
 {
      public class SolutionOpeningInterceptor : IVsRunningDocTableEvents, IDisposable
     {

+ 1 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/DebugHelper.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/DebugHelper.cs

@@ -3,7 +3,7 @@ using Microsoft.VisualStudio.Shell.Interop;
 using System;
 using System.IO;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Helpers
 {
     public static class DebugHelper
     {

+ 1 - 4
FilteredSolutionsExtension/FilteredSolutionsExtension/ExtensionSettings.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/ExtensionSettings.cs

@@ -1,12 +1,9 @@
 using System;
 using System.Collections.Generic;
 using System.IO;
-using System.Linq;
-using System.Text;
 using System.Text.Json;
-using System.Threading.Tasks;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Helpers
 {
    public class ExtensionSettings
     {

+ 1 - 3
FilteredSolutionsExtension/FilteredSolutionsExtension/FileUtils.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/FileUtils.cs

@@ -1,12 +1,10 @@
 using System;
-using System.Collections.Generic;
 using System.IO;
-using System.Linq;
 using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Helpers
 {
     /// <summary>
     /// Provides async file operations compatible with .NET 4.7.2

+ 3 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/FilteredSolutionGenerator.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/FilteredSolutionGenerator.cs

@@ -1,3 +1,5 @@
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Handlers;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
@@ -5,7 +7,7 @@ using System.Text;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Helpers
 {
     public class FilteredSolutionGenerator
     {

+ 3 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/SolutionParser.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Helpers/SolutionParser.cs

@@ -1,3 +1,5 @@
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Handlers;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models;
 using System;
 using System.Collections.Generic;
 using System.IO;
@@ -5,7 +7,7 @@ using System.Linq;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Helpers
 {
     public class SolutionParser
     {

+ 1 - 2
FilteredSolutionsExtension/FilteredSolutionsExtension/ProjectInfo.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Models/ProjectInfo.cs

@@ -1,8 +1,7 @@
 using System;
 using System.Collections.Generic;
-using System.IO;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models
 {
     public class ProjectInfo
     {

+ 1 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/ProjectNode.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Models/ProjectNode.cs

@@ -2,7 +2,7 @@
 using System.ComponentModel;
 using System.Runtime.CompilerServices;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models
 {
    public class ProjectNode : INotifyPropertyChanged
     {

+ 1 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/ProjectTreeItem.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Models/ProjectTreeItem.cs

@@ -7,7 +7,7 @@ using System.Windows;
 using System.Windows.Media;
 using System.Windows.Media.Imaging;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models
 {
     public class ProjectTreeItem : INotifyPropertyChanged
     {

+ 4 - 3
FilteredSolutionsExtension/FilteredSolutionsExtension/ProjectFilterDialog.xaml → FilteredSolutionsExtension/FilteredSolutionsExtension/Views/ProjectFilterDialog.xaml

@@ -1,7 +1,8 @@
-<Window x:Class="Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.ProjectFilterDialog"
+<Window x:Class="Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Views.ProjectFilterDialog"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:local="clr-namespace:Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension"
+        xmlns:local="clr-namespace:Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Converters" 
+        xmlns:local1="clr-namespace:Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models" 
         Title="Select Projects for Solution" Height="800" Width="1200" 
         WindowStartupLocation="CenterScreen" ResizeMode="CanResize"
         MinHeight="600" MinWidth="1000">
@@ -76,7 +77,7 @@
                       ScrollViewer.VerticalScrollBarVisibility="Auto" Padding="5">
                 <TreeView.Resources>
                     <!-- Clean hierarchical template -->
-                    <HierarchicalDataTemplate DataType="{x:Type local:ProjectTreeItem}" ItemsSource="{Binding Children}">
+                    <HierarchicalDataTemplate DataType="{x:Type local1:ProjectTreeItem}" ItemsSource="{Binding Children}">
                         <StackPanel Orientation="Vertical" Margin="0,2">
                             <!-- Main project line -->
                             <StackPanel Orientation="Horizontal">

+ 4 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/ProjectFilterDialog.xaml.cs → FilteredSolutionsExtension/FilteredSolutionsExtension/Views/ProjectFilterDialog.xaml.cs

@@ -1,5 +1,8 @@
 using Microsoft.VisualStudio.Shell;
 using Microsoft.Win32;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Handlers;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Helpers;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models;
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -12,7 +15,7 @@ using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Threading;
 
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Views
 {
     public partial class ProjectFilterDialog : Window, INotifyPropertyChanged
     {

+ 12 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/directory_structure.txt

@@ -2,12 +2,20 @@ Properties
 + AssemblyInfo.cs
 Resources
 + FilterSolutionsCommand.png
+bo_strong_key_pair.snk
 DebugHelper.cs
+directory_structure.txt
+ErrorHandler.cs
+ExtensionSettings.cs
 FileUtils.cs
 FilteredSolutionGenerator.cs
 FilteredSolutionsExtension.csproj
+FilteredSolutionsExtension.csproj.user
 FilteredSolutionsExtensionPackage.cs
+fse_icon.ico
+licence.txt
 ManualFilterCommand.cs
+Menus.vsct
 ProjectFilterDialog.xaml
 ProjectFilterDialog.xaml.cs
 ProjectInfo.cs
@@ -15,6 +23,9 @@ ProjectNode.cs
 ProjectTreeItem.cs
 readme.md
 releasenote.txt
+Resources
 SolutionEventsHandler.cs
+SolutionOpeningInterceptor.cs
 SolutionParser.cs
-source.extension.vsixmanifest
+source.extension.vsixmanifest
+StringToVisibilityConverter.cs

+ 3 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/source.extension.vsixmanifest

@@ -4,7 +4,9 @@
         <Identity Id="FilteredSolutionsExtension.e12e79ba-6c63-4737-868d-4e888accaed1" Version="1.0.0" Language="en-US" Publisher="Dalibor Votruba" />
         <DisplayName>FilteredSolutionsExtension</DisplayName>
         <Description xml:space="preserve">Visual Studio extension to filter projects when opening solutions.</Description>
-        <ReleaseNotes>releasenote.txt</ReleaseNotes>
+        <License>Assets\licence.txt</License>
+        <ReleaseNotes>Assets\releasenote.txt</ReleaseNotes>
+        <Icon>Assets\fse_icon.ico</Icon>
     </Metadata>
     <Installation>
         <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0, 18.0)">

BIN
FilteredSolutionsExtension/fse_icon.ico