<UserControl x:Class="GeekDesk.Control.UserControls.PannelCard.RightCardControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             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:temp="clr-namespace:GeekDesk.ViewModel.Temp"
             xmlns:hc="https://handyorg.github.io/handycontrol"
             xmlns:cvt="clr-namespace:GeekDesk.Converts"
             xmlns:DraggAnimatedPanel="clr-namespace:DraggAnimatedPanel"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800"
             >
    <UserControl.Resources>
        <!--右侧栏样式动画-->
        <!--<Style x:Key="PanelStyle" TargetType="hc:SimpleStackPanel">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="Cursor" Value="Hand"/>
                </Trigger>
            </Style.Triggers>
        </Style>-->

        <Storyboard x:Key="Custom1Transition" x:Shared="False">
            <DoubleAnimation From="50" To="0" Duration="0:0:0.4" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                <DoubleAnimation.EasingFunction>
                    <ElasticEase Oscillations="1"/>
                </DoubleAnimation.EasingFunction>
            </DoubleAnimation>
        </Storyboard>

        <Style x:Key="ImageStyle" TargetType="Image">
            <Setter Property="Width"   Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageWidth, Mode=OneWay}"/>
            <Setter Property="Height"  Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageHeight, Mode=OneWay}"/>
            <Setter Property="Source"  Value="{Binding BitmapImage}"/>
        </Style>
        <Style x:Key="MyListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
            <Setter Property="FocusVisualStyle" Value="{x:Null}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Border>
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <cvt:OpcityConvert x:Key="OpcityConvert"/>
        <cvt:SearchResWidth x:Key="SearchResWidth"/>
        <temp:SearchIconList x:Key="SearchIconList"/>
    </UserControl.Resources>
    <!--右侧栏-->
    <Grid>
        <hc:Card AllowDrop="True" 
                 x:Name="WrapCard"
                 Visibility="Visible"
                 Drop="Wrap_Drop" 
                 BorderThickness="1" 
                 Effect="{DynamicResource EffectShadow2}" 
                 Margin="5,0,5,5" Grid.ColumnSpan="2">
            <hc:Card.Background>
                <SolidColorBrush Color="AliceBlue"  hc:GeometryEffect.GeometryEffect="20" Opacity="{Binding AppConfig.CardOpacity, Mode=TwoWay, Converter={StaticResource OpcityConvert}}"/>
            </hc:Card.Background>
            <hc:Card.BorderBrush>
                <SolidColorBrush Color="#FFFFFFFF" Opacity="0"/>
            </hc:Card.BorderBrush>
            <hc:Card.ContextMenu>
                <ContextMenu Width="200">
                    <MenuItem Header="添加URL项目" Click="AddUrlIcon"/>
                    <MenuItem Header="添加系统项目" Click="AddSystemIcon"/>
                </ContextMenu>
            </hc:Card.ContextMenu>
            <Grid>
                <StackPanel Panel.ZIndex="1" Margin="0,-10,-300,0" hc:Growl.GrowlParent="True" hc:Growl.Token="MainWindowGrowl"/>
                <WrapPanel Orientation="Horizontal" VirtualizingPanel.VirtualizationMode="Recycling"  
                   VirtualizingPanel.IsVirtualizing="True" 
                   VirtualizingPanel.IsContainerVirtualizable="True"
                   >
                    <ListBox x:Name="IconListBox" ItemsSource="{Binding AppConfig.SelectedMenuIcons, Mode=OneWay}" 
                                 BorderThickness="0"
                                Padding="0,10,0,0"
                                 >
                        <ListBox.Background>
                            <SolidColorBrush Opacity="0"/>
                        </ListBox.Background>
                        <ListBox.ItemsPanel>
                            <ItemsPanelTemplate>
                                <DraggAnimatedPanel:DraggAnimatedPanel Background="#00FFFFFF"
                                                               ItemsWidth="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelWidth, Mode=OneWay}"
                                                               ItemsHeight="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelHeight, Mode=OneWay}"
                                                               HorizontalAlignment="Center" 
                                                               SwapCommand="{Binding SwapCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
                            </ItemsPanelTemplate>
                        </ListBox.ItemsPanel>

                        <ListBox.Resources>
                            <ContextMenu x:Key="IconDialog" Width="200">
                                <MenuItem Header="管理员方式运行" Click="IconAdminStart" Tag="{Binding}"/>
                                <MenuItem Header="打开文件所在位置" Click="ShowInExplore" Tag="{Binding}"/>
                                <MenuItem Header="添加URL项目" Click="AddUrlIcon"/>
                                <MenuItem Header="添加系统项目" Click="AddSystemIcon"/>
                                <MenuItem Header="资源管理器菜单" Click="SystemContextMenu" Tag="{Binding}"/>
                                <MenuItem Header="属性" Click="PropertyConfig" Tag="{Binding}"/>
                                <MenuItem Header="从列表移除" Click="RemoveIcon" Tag="{Binding}"/>
                            </ContextMenu>
                        </ListBox.Resources>

                        <ListBox.ItemContainerStyle>
                            <Style TargetType="ListBoxItem" BasedOn="{StaticResource MyListBoxItemStyle}">
                                <Setter Property="ContextMenu" Value="{StaticResource IconDialog}"/>
                            </Style>
                        </ListBox.ItemContainerStyle>

                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <hc:SimpleStackPanel Tag="{Binding}"
                                                     Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelHeight, Mode=OneWay}" 
                                                     Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelWidth, Mode=OneWay}"
                                                     HorizontalAlignment="Center"
                                                     hc:Poptip.Content="{Binding Content}"
                                                     hc:Poptip.Placement="BottomLeft"
                                                     Background="#00FFFFFF"
                                                     MouseEnter="StackPanel_MouseEnter"
                                                     MouseLeave="StackPanel_MouseLeave"
                                                     MouseLeftButtonDown="Icon_MouseLeftButtonDown"
                                                     MouseLeftButtonUp="Icon_MouseLeftButtonUp"
                                                     >
                                    <!--<StackPanel Background="#00FFFFFF"
                                                MouseEnter="CursorPanel_MouseEnter"
                                                MouseLeave="CursorPanel_MouseLeave"
                                                Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageWidth, Mode=OneWay}">-->
                                            <Image Style="{StaticResource ImageStyle}"  
                                                   RenderOptions.BitmapScalingMode="HighQuality"/>
                                            <TextBlock MaxWidth="80"
                                                       Margin="0,5,0,0"
                                                       MaxHeight="40"
                                                       FontSize="13"
                                                       TextWrapping="Wrap" 
                                                       TextTrimming="WordEllipsis"
                                                       TextAlignment="Center" 
                                                       VerticalAlignment="Center" 
                                                       Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
                                                       Text="{Binding Name}"/>
                                    <!--</StackPanel>-->
                                    
                                </hc:SimpleStackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

                </WrapPanel>

            </Grid>
        </hc:Card>

        <hc:Card x:Name="VerticalCard"
                 Visibility="Hidden"
                 BorderThickness="1" 
                 Effect="{DynamicResource EffectShadow2}" 
                 Margin="5,0,5,5" Grid.ColumnSpan="2"
                 MouseLeftButtonDown="VerticalCard_MouseLeftButtonDown"
                >
            <hc:Card.Background>
                <SolidColorBrush Color="AliceBlue" 
                                 hc:GeometryEffect.GeometryEffect="20"
                                 Opacity="{Binding AppConfig.CardOpacity, Mode=TwoWay, Converter={StaticResource OpcityConvert}}"/>
            </hc:Card.Background>
            <hc:Card.BorderBrush>
                <SolidColorBrush Color="#FFFFFFFF" Opacity="0"/>
            </hc:Card.BorderBrush>
            <Grid>
                <StackPanel Panel.ZIndex="1" Margin="0,-10,-300,0" hc:Growl.GrowlParent="True" hc:Growl.Token="MainWindowGrowl"/>
                <WrapPanel Orientation="Horizontal" VirtualizingPanel.VirtualizationMode="Recycling"  
                   VirtualizingPanel.IsVirtualizing="True"  
                   VirtualizingPanel.IsContainerVirtualizable="True"
                   >
                    <hc:TransitioningContentControl TransitionStoryboard="{StaticResource Custom1Transition}">
                        <ListBox ItemsSource="{Binding Source={StaticResource SearchIconList},Path=IconList}" 
                             BorderThickness="0"
                             Padding="0,10,0,0"
                             >
                            <ListBox.Background>
                                <SolidColorBrush Opacity="0"/>
                            </ListBox.Background>

                            <ListBox.Resources>
                                <ContextMenu x:Key="IconDialog" Width="200">
                                    <MenuItem Header="管理员方式运行" Click="IconAdminStart" Tag="{Binding}"/>
                                    <MenuItem Header="打开文件所在位置" Click="ShowInExplore" Tag="{Binding}"/>
                                    <MenuItem Header="添加URL项目" Click="AddUrlIcon"/>
                                    <MenuItem Header="添加系统项目" Click="AddSystemIcon"/>
                                    <MenuItem Header="资源管理器菜单" Click="SystemContextMenu" Tag="{Binding}"/>
                                    <MenuItem Header="属性" Click="PropertyConfig" Tag="{Binding}"/>
                                </ContextMenu>
                            </ListBox.Resources>

                            <ListBox.ItemContainerStyle>
                                <Style TargetType="ListBoxItem" BasedOn="{StaticResource MyListBoxItemStyle}">
                                    <Setter Property="ContextMenu" Value="{StaticResource IconDialog}"/>
                                </Style>
                            </ListBox.ItemContainerStyle>

                            <ListBox.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <StackPanel Background="#00FFFFFF"
                                            Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.MenuCardWidth, Mode=OneWay, Converter={StaticResource SearchResWidth}, ConverterParameter=1}"
                                            />
                                </ItemsPanelTemplate>
                            </ListBox.ItemsPanel>

                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <WrapPanel Tag="{Binding}"
                                           Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageHeight, Mode=OneWay}" 
                                           Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.MenuCardWidth, Mode=OneWay, Converter={StaticResource SearchResWidth}, ConverterParameter=2}" 
                                           HorizontalAlignment="Left"
                                           hc:Poptip.HitMode="None"
                                           hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
                                           hc:Poptip.Content="{Binding Content}"
                                           hc:Poptip.Placement="BottomLeft"
                                           Background="#00FFFFFF"
                                           MouseLeftButtonDown="Icon_MouseLeftButtonDown"
                                           MouseLeftButtonUp="Icon_MouseLeftButtonUp"
                                           Margin="25,20,0,0"
                                           >
                                        <Image Style="{StaticResource ImageStyle}"  RenderOptions.BitmapScalingMode="HighQuality"/>
                                        <TextBlock
                                           Margin="10,5,0,0"
                                           MaxHeight="40"
                                           FontSize="13"
                                           TextWrapping="Wrap" 
                                           TextTrimming="WordEllipsis"
                                           TextAlignment="Left" 
                                           VerticalAlignment="Center" 
                                           Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
                                           Text="{Binding Name}"/>
                                    </WrapPanel>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </hc:TransitioningContentControl>
                    

                </WrapPanel>

            </Grid>
        </hc:Card>
    </Grid>
</UserControl>
