<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:cst="clr-namespace:GeekDesk.Constant"
             xmlns:DraggAnimatedPanel="clr-namespace:DraggAnimatedPanel"
             xmlns:xf="clr-namespace:XamlFlair;assembly=XamlFlair.WPF"
             xmlns:ot="clr-namespace:GeekDesk.Control.Other" 
             xmlns:viewmodel="clr-namespace:GeekDesk.ViewModel" d:DataContext="{d:DesignInstance Type=viewmodel:AppData}"
             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>-->
        <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>

        <Style x:Key="SearchListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
            <Setter Property="FocusVisualStyle" Value="{x:Null}" />
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Border>
                            <Border.Style>
                                <Style TargetType="Border">
                                    <Setter Property="VerticalAlignment" Value="Center"/>
                                </Style>
                            </Border.Style>
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style x:Key="MyPoptipStyle" TargetType="Border">
            <Setter Property="HorizontalAlignment" Value="Center"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="Background" Value="White"/>
            <Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}"/>
            <Setter Property="CornerRadius" Value="{StaticResource DefaultCornerRadius}"/>
            <Setter Property="Padding" Value="{StaticResource DefaultControlPadding}"/>
            <!--<Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="hc:Poptip">
                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}">
                            <ContentPresenter Margin="{TemplateBinding Padding}" ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}" ContentStringFormat="{TemplateBinding ContentStringFormat}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>-->
        </Style>

        <Storyboard x:Key="Custom1Transition1" 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>
        <Storyboard x:Key="Custom2Transition2" x:Shared="False">
            <DoubleAnimation From="10" To="0" Duration="0:0:0.4" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
                <DoubleAnimation.EasingFunction>
                    <ElasticEase Oscillations="1"/>
                </DoubleAnimation.EasingFunction>
            </DoubleAnimation>
        </Storyboard>

        <Storyboard x:Key="Custom3Transition3" x:Shared="False">
            <DoubleAnimation From=".8" To="1" Duration="0:0:0.4">
                <DoubleAnimation.EasingFunction>
                    <ElasticEase Oscillations="1"/>
                </DoubleAnimation.EasingFunction>
            </DoubleAnimation>
        </Storyboard>

        <cvt:OpcityConvert x:Key="OpcityConvert"/>
        <cvt:GetWidthByWWConvert x:Key="GetWidthByWWConvert"/>
        <temp:SearchIconList x:Key="SearchIconList"/>
    </UserControl.Resources>
    <!--右侧栏-->
    <Grid>
        <Popup Name="MyPoptip" FlowDirection="LeftToRight" 
               PopupAnimation="None" Placement="Mouse"
               IsOpen="False"
               AllowsTransparency="True"
               >
            <Grid Background="Transparent">
                <Border Style="{StaticResource MyPoptipStyle}">
                    <TextBlock Name="MyPoptipContent" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Left" Text="Test" FontSize="13"/>
                </Border>
            </Grid>
        </Popup>

        <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"
                 PreviewMouseRightButtonDown="WrapCard_PreviewMouseRightButtonDown"
                 hc:Dialog.Token="RightWrapCardDialog"
                 MouseWheel="IconListBox_MouseWheel"
                 >
            <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"/>
                    <MenuItem x:Name="CardLockCM" Header="锁定主面板" Click="LockAppPanel"/>
                </ContextMenu>
            </hc:Card.ContextMenu>
            <hc:DialogContainer>
                <Grid>
                    <ot:PasswordDialog xf:Animations.Primary="{xf:Animate BasedOn={StaticResource FadeInAndGrowHorizontally}, Event=Visibility, Duration=50, Delay=0}"
                                       x:Name="PDDialog"
                                       Panel.ZIndex="99"
                                       IsVisibleChanged="PDDialog_IsVisibleChanged"
                                       Margin="0,-100,0,0"/>
                    <StackPanel Panel.ZIndex="1" Margin="0,-10,-0,0"/>

                    <WrapPanel Orientation="Horizontal" 
                            VirtualizingPanel.VirtualizationMode="Recycling"  
                            VirtualizingPanel.IsVirtualizing="True" 
                            VirtualizingPanel.IsContainerVirtualizable="True"
                            >
                        <UniformGrid x:Name="WrapUFG" xf:Animations.Primary="{xf:Animate BasedOn={StaticResource FadeInAndGrowHorizontally}, Event=Visibility}">
                            <!--<hc:TransitioningContentControl TransitionStoryboard="{StaticResource Custom3Transition3}">-->
                            <ListBox x:Name="IconListBox" 
                                         ItemsSource="{Binding AppConfig.SelectedMenuIcons, Mode=OneWay}" 
                                         BorderThickness="0"
                                         Padding="0,10,0,0"
                                         ScrollViewer.CanContentScroll ="False"
                                         >
                                <ListBox.Template>
                                    <ControlTemplate TargetType="ListBox">
                                        <hc:ScrollViewer x:Name="WrapScroll"
                                                         Orientation="Vertical" 
                                                         HorizontalScrollBarVisibility="Hidden" 
                                                         VerticalScrollBarVisibility="Auto" 
                                                         IsInertiaEnabled="True"
                                                         CanContentScroll="True"
                                                         PreviewMouseWheel="IconListBox_MouseWheel"
                                                         >
                                            <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderBrush}">
                                                <ItemsPresenter/>

                                            </Border>
                                        </hc:ScrollViewer>
                                    </ControlTemplate>
                                </ListBox.Template>
                                <ListBox.Background>
                                    <SolidColorBrush Color="#00FFFFFF"  />
                                </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}}}"/>-->

                                        <WrapPanel Background="#00FFFFFF"
                                                Width="{Binding AppConfig.WindowWidth, Mode=OneWay, 
                                                Converter={StaticResource GetWidthByWWConvert}, 
                                                ConverterParameter={x:Static cst:WidthTypeEnum.RIGHT_CARD}}"
                                                />
                                    </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"
                                                                 Background="#00FFFFFF"
                                                                 MouseEnter="MenuIcon_MouseEnter"
                                                                 MouseLeave="MenuIcon_MouseLeave"
                                                                 MouseMove="MenuIcon_MouseMove"        
                                                                 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>
                            <!--</hc:TransitioningContentControl>-->
                        </UniformGrid>
                    </WrapPanel>

                </Grid>
            </hc:DialogContainer>
        </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>
                <WrapPanel Orientation="Horizontal" VirtualizingPanel.VirtualizationMode="Recycling"  
                   VirtualizingPanel.IsVirtualizing="True"  
                   VirtualizingPanel.IsContainerVirtualizable="True"
                   >
                    <UniformGrid x:Name="VerticalUFG" xf:Animations.Primary="{xf:Animate BasedOn={StaticResource FadeIn}, OffsetY= -10, Event=Visibility}">
                        <!--<hc:TransitioningContentControl TransitionMode="Left2RightWithFade">-->
                        <ListBox ItemsSource="{Binding Source={StaticResource SearchIconList},Path=IconList}" 
                                     BorderThickness="0"
                                     Padding="0,10,0,0"
                                     x:Name="SearchListBox"
                                     SelectionChanged="SearchListBox_SelectionChanged"
                                     >
                            <ListBox.Template>
                                <ControlTemplate TargetType="ListBox">
                                    <hc:ScrollViewer Orientation="Vertical" 
                                                     HorizontalScrollBarVisibility="Hidden" 
                                                     VerticalScrollBarVisibility="Auto" 
                                                     IsInertiaEnabled="True"
                                                     CanContentScroll="True"
                                                     PreviewMouseWheel="VerticalIconList_PreviewMouseWheel"
                                                     >
                                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderBrush}">
                                            <ItemsPresenter/>
                                        </Border>
                                    </hc:ScrollViewer>
                                </ControlTemplate>
                            </ListBox.Template>

                            <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 SearchListBoxItemStyle}">
                                    <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.WindowWidth, Mode=OneWay, 
                                                Converter={StaticResource GetWidthByWWConvert}, 
                                                ConverterParameter={x:Static cst:WidthTypeEnum.RIGHT_CARD}}"
                                            />
                                </ItemsPanelTemplate>
                            </ListBox.ItemsPanel>

                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <Border CornerRadius="8">
                                        <Border.Style>
                                            <Style TargetType="Border">
                                                <Setter Property="VerticalAlignment" Value="Center"/>
                                                <Style.Triggers>
                                                    <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem }}}"
                                                                 Value="True">
                                                        <Setter Property="Background">
                                                            <Setter.Value>
                                                                <SolidColorBrush Color="White" Opacity="0.68"/>
                                                            </Setter.Value>
                                                        </Setter>
                                                    </DataTrigger>
                                                </Style.Triggers>
                                            </Style>
                                        </Border.Style>
                                        <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.WindowWidth, Mode=OneWay, 
                                                        Converter={StaticResource GetWidthByWWConvert}, 
                                                        ConverterParameter={x:Static cst:WidthTypeEnum.RIGHT_CARD_HALF}}" 
                                                   HorizontalAlignment="Left"
                                                   VerticalAlignment="Center"
                                                   hc:Poptip.HitMode="None"
                                                   hc:Poptip.Placement="BottomLeft"
                                                   Background="#00FFFFFF"
                                                   MouseEnter="SearchIcon_MouseEnter"
                                                   MouseLeave="SearchIcon_MouseLeave"
                                                   MouseLeftButtonDown="Icon_MouseLeftButtonDown"
                                                   MouseLeftButtonUp="Icon_MouseLeftButtonUp"
                                                   MouseMove="SearchIcon_MouseMove"
                                                   Margin="25,10,0,10"
                                                   >
                                            <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>
                                    </Border>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>

                        <!--</hc:TransitioningContentControl>-->
                    </UniformGrid>
                </WrapPanel>

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