| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <Window x:Class="Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.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"
- Title="Select Projects for Solution" Height="800" Width="1200"
- WindowStartupLocation="CenterScreen" ResizeMode="CanResize"
- MinHeight="600" MinWidth="1000">
- <Window.Resources>
- <local:StringToVisibilityConverter x:Key="StringToVisibilityConverter"/>
- <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
- </Window.Resources>
-
- <Grid Margin="15">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- </Grid.RowDefinitions>
-
- <!-- Solution Info -->
- <GroupBox Grid.Row="0" Header="Solution Information" Padding="10" Margin="0,0,0,10">
- <StackPanel>
- <TextBlock x:Name="SolutionNameTextBlock" FontWeight="Bold" Margin="0,0,0,5" FontSize="14"/>
- <TextBlock x:Name="ProjectCountTextBlock" Foreground="Gray"/>
- <TextBlock Text="💡 Dependencies are automatically selected/deselected when you check/uncheck projects"
- Foreground="DarkBlue" FontStyle="Italic" Margin="0,5,0,0" TextWrapping="Wrap"/>
- </StackPanel>
- </GroupBox>
-
- <!-- Filter Section -->
- <GroupBox Grid.Row="1" Header="Filter Projects" Padding="10" Margin="0,0,0,10">
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto"/>
- <ColumnDefinition Width="*"/>
- <ColumnDefinition Width="Auto"/>
- </Grid.ColumnDefinitions>
-
- <Label Grid.Column="0" Content="Filter pattern:" VerticalAlignment="Center"/>
- <TextBox Grid.Column="1" x:Name="FilterTextBox" Margin="5,0"
- VerticalAlignment="Center" Height="25"
- ToolTip="Use * for wildcards (e.g., Test*, *Core*, *.Data) - filters as you type"
- TextChanged="FilterTextBox_TextChanged"/>
- <Button Grid.Column="2" x:Name="ClearFilterButton" Content="Clear"
- Width="60" Click="ClearFilterButton_Click" Margin="5,0,0,0"/>
- </Grid>
- </GroupBox>
-
- <!-- Selection Controls -->
- <StackPanel Grid.Row="2" Orientation="Horizontal" Margin="0,0,0,10">
- <Button x:Name="SelectAllButton" Content="Select All" Width="90" Height="32"
- Click="SelectAllButton_Click" Margin="0,0,8,0"/>
- <Button x:Name="ClearAllButton" Content="Clear All" Width="90" Height="32"
- Click="ClearAllButton_Click" Margin="0,0,8,0"/>
- <Button x:Name="SelectTestsButton" Content="Select Tests" Width="90" Height="32"
- Click="SelectTestsButton_Click" Margin="0,0,8,0"
- ToolTip="Select projects with 'Test' in name and their dependencies"/>
- <Separator Width="1" Margin="8,0"/>
- <Button x:Name="ExpandAllButton" Content="Expand All" Width="80" Height="32"
- Click="ExpandAllButton_Click" Margin="8,0,8,0"
- ToolTip="Expand all project dependency trees"/>
- <Button x:Name="CollapseAllButton" Content="Collapse All" Width="90" Height="32"
- Click="CollapseAllButton_Click" Margin="0,0,8,0"
- ToolTip="Collapse all project dependency trees"/>
- <Separator Width="1" Margin="8,0"/>
- <TextBlock x:Name="SelectionCountTextBlock" VerticalAlignment="Center"
- Margin="8,0,0,0" Foreground="DarkBlue" FontWeight="Medium"/>
- </StackPanel>
-
- <!-- Project Tree -->
- <Border Grid.Row="3" BorderBrush="LightGray" BorderThickness="1" Margin="0,0,0,15">
- <TreeView x:Name="ProjectTreeView" ScrollViewer.HorizontalScrollBarVisibility="Auto"
- ScrollViewer.VerticalScrollBarVisibility="Auto" Padding="5">
- <TreeView.Resources>
- <!-- Template for dependency items (children) -->
- <DataTemplate x:Key="DependencyTemplate" DataType="{x:Type local:ProjectTreeItem}">
- <StackPanel Orientation="Horizontal" Margin="0,1">
- <TextBlock Text=" " Width="24"/> <!-- Indentation -->
- <Image Source="{Binding ProjectTypeIcon}" Width="14" Height="14"
- Margin="0,0,4,0" VerticalAlignment="Center"/>
- <TextBlock Text="{Binding DisplayName}"
- Foreground="Gray" FontStyle="Italic"
- VerticalAlignment="Center"
- ToolTip="{Binding ToolTipText}"/>
- </StackPanel>
- </DataTemplate>
-
- <!-- Template for main projects -->
- <HierarchicalDataTemplate DataType="{x:Type local:ProjectTreeItem}" ItemsSource="{Binding Children}"
- ItemTemplate="{StaticResource DependencyTemplate}">
- <StackPanel Orientation="Vertical" Margin="0,2">
- <!-- Main project line -->
- <StackPanel Orientation="Horizontal">
- <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}"
- Checked="ProjectTreeItem_Checked"
- Unchecked="ProjectTreeItem_Unchecked"
- Margin="0,0,8,0"
- VerticalAlignment="Center"
- IsEnabled="{Binding IsSelectable}"/>
- <Image Source="{Binding ProjectTypeIcon}" Width="16" Height="16"
- Margin="0,0,6,0" VerticalAlignment="Center"/>
- <TextBlock Text="{Binding DisplayName}" VerticalAlignment="Center"
- FontWeight="{Binding FontWeight}"
- Foreground="{Binding TextBrush}"
- ToolTip="{Binding ToolTipText}"/>
- </StackPanel>
-
- <!-- Dependencies label (only for projects with dependencies) -->
- <StackPanel Orientation="Horizontal" Margin="24,2,0,0"
- Visibility="{Binding HasDependencies, Converter={StaticResource BooleanToVisibilityConverter}}">
- <TextBlock Text="Dependencies:"
- FontWeight="Normal" Foreground="DarkBlue" FontSize="11"/>
- </StackPanel>
- </StackPanel>
- </HierarchicalDataTemplate>
- </TreeView.Resources>
- <TreeView.ItemContainerStyle>
- <Style TargetType="{x:Type TreeViewItem}">
- <Setter Property="IsExpanded" Value="True"/>
- <Setter Property="Margin" Value="0,1"/>
- </Style>
- </TreeView.ItemContainerStyle>
- </TreeView>
- </Border>
-
- <!-- Status Bar -->
- <StatusBar Grid.Row="4" Height="25" Margin="0,0,0,10">
- <StatusBarItem>
- <TextBlock x:Name="StatusTextBlock" Text="Ready" />
- </StatusBarItem>
- </StatusBar>
-
- <!-- Action Buttons -->
- <StackPanel Grid.Row="5" Orientation="Horizontal" HorizontalAlignment="Right">
- <Button x:Name="SaveAsButton" Content="Save As..." Width="100" Height="35"
- Click="SaveAsButton_Click" Margin="0,0,10,0"
- Background="Green" Foreground="White" FontWeight="Medium"
- ToolTip="Save filtered solution to a custom location"/>
- <Button x:Name="OkButton" Content="Create Filtered Solution" Width="160" Height="35"
- Click="OkButton_Click" IsDefault="True" Margin="0,0,10,0"
- Background="DodgerBlue" Foreground="White" FontWeight="Medium"/>
- <Button x:Name="CancelButton" Content="Open All Projects" Width="130" Height="35"
- Click="CancelButton_Click" IsCancel="True"/>
- </StackPanel>
- </Grid>
- </Window>
|