JD2022-TU1/main/tools/apps/ConfigurePlus/MainView.xaml

411 lines
26 KiB
XML

<UserControl x:Class="ConfigurePlus.MainView"
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:models="clr-namespace:ConfigurePlus.Models"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="1000">
<UserControl.Resources>
<ResourceDictionary Source="LocalResources.xaml" />
</UserControl.Resources>
<DockPanel>
<StatusBar DockPanel.Dock="Bottom" Style="{DynamicResource StatusBarBaseStyle}">
<StatusBarItem>
<TextBlock Text="{Binding StatusInformation}" />
</StatusBarItem>
</StatusBar>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<DockPanel Grid.Column="0">
<Border DockPanel.Dock="Top" BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}">
<TextBlock Background="{DynamicResource BackgroundBrush}" Margin="0" Height="16"
TextAlignment="Center" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Text="Available Projects" />
</Border>
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" FlowDirection="RightToLeft" HorizontalAlignment="Right">
<Button Name="RegisterAllButton" Width="75" Margin="10,10,10,10" Click="RegisterAllButton_Click">Register All</Button>
<Button Name="RegisterButton" Width="75" Margin="10,10,10,10" Click="RegisterButton_Click" Content="Register">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource ButtonBaseStyle}">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ProjectList, Path=SelectedItem, Converter={StaticResource NullToBooleanConverter}, ConverterParameter=True}" Value="True" >
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" FlowDirection="RightToLeft" HorizontalAlignment="Right">
<Button Name="CreateNewButton" Width="75" Margin="10,10,10,10" Click="CreateNewButton_Click">Create New</Button>
<Button Name="DeleteProjectButton" Width="75" Margin="10,10,10,10" Click="DeleteProjectButton_Click" Content="Delete">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource ButtonBaseStyle}">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedProject.IsGlobalProject}" Value="True" >
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</StackPanel>
<ListBox Name="ProjectList" Grid.Row="1" Style="{DynamicResource ListBoxBaseStyle}" ItemContainerStyle="{DynamicResource ListBoxItemBaseStyle}" ItemsSource="{Binding Projects}" HorizontalContentAlignment="Stretch" SelectedItem="{Binding SelectedProject, Mode=TwoWay}" SelectionChanged="ListView_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel>
<TextBlock DockPanel.Dock="Right" Text="[Official]" Margin="0,0,4,0">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsGlobalProject}" Value="False" >
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Text="{Binding Name, Mode=TwoWay}" />
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel>
<GridSplitter Grid.Column="1" Style="{StaticResource GridSplitterVerticalStyle}" />
<DockPanel Grid.Column="2">
<DockPanel.Style>
<Style TargetType="DockPanel">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedProject}" Value="{x:Null}" >
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" FlowDirection="RightToLeft" HorizontalAlignment="Right">
<Button Name="SelectProjectButton" Width="90" Margin="10,10,10,10" Click="SelectProjectButton_Click">Select Project</Button>
<Button Name="AutoFillButton" Width="90" Margin="10,10,10,10" Click="AutoFillButton_Click"
Content="Auto Fill" ToolTipService.ShowOnDisabled="True">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource ButtonBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedProject.PerforceServer, Converter={StaticResource NullToBooleanConverter}, ConverterParameter={StaticResource True}}" Value="False">
<Setter Property="ToolTip" Value="Fill Perforce Server and Project Key to use Auto Fill" />
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding SelectedProject.ProjectId, Converter={StaticResource NullToBooleanConverter}, ConverterParameter={StaticResource True}}" Value="False">
<Setter Property="ToolTip" Value="Fill Perforce Server and Project Key to use Auto Fill" />
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</StackPanel>
<!-- TODO : Replace me by a PropertyGrid? -->
<StackPanel Grid.Row="0" DataContext="{Binding SelectedProject}">
<Grid HorizontalAlignment="Stretch" Margin="4,2,4,2">
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsGlobalProject, Mode=OneTime}" Value="False">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.ProjectId}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource PropertyGridNameWidth}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Project Key" />
<TextBox Grid.Column="1" Text="{Binding ProjectId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
<Grid HorizontalAlignment="Stretch" Margin="4,2,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource PropertyGridNameWidth}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Project Id" />
<TextBox Grid.Column="1" Text="{Binding ProjectId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.ProjectId}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
<Grid HorizontalAlignment="Stretch" Margin="4,2,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource PropertyGridNameWidth}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Game name" />
<TextBox Grid.Column="1" Text="{Binding GameName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.GameName}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
<Grid HorizontalAlignment="Stretch" Margin="4,2,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource PropertyGridNameWidth}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Branch name" />
<TextBox Grid.Column="1" Text="{Binding BranchName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.BranchName}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
<Grid HorizontalAlignment="Stretch" Margin="4,2,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource PropertyGridNameWidth}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Engine Start Mode" />
<StackPanel Grid.Column="1" >
<ComboBox HorizontalAlignment="Stretch" Width="Auto" IsEditable="False"
SelectedIndex="{Binding EngineStartMode, Converter={StaticResource EnumToIntConverter}, Mode=TwoWay}"
Style="{DynamicResource ComboBoxBaseStyle}" >
<ComboBoxItem>UA_Engine</ComboBoxItem>
<ComboBoxItem>UA_Framework</ComboBoxItem>
</ComboBox>
</StackPanel>
</Grid>
<Grid HorizontalAlignment="Stretch" Margin="4,2,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource PropertyGridNameWidth}" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="32" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Data Path" />
<TextBox Grid.Column="1" Text="{Binding DataPath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.DataPath}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<Button Grid.Column="2" Content="..." Click="DataPathBrowse_Click" Width="30" Margin="2,0,0,0">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource ButtonBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.DataPath}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
<Grid HorizontalAlignment="Stretch" Margin="4,2,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource PropertyGridNameWidth}" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="32" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Engine Path" />
<TextBox Grid.Column="1" Text="{Binding EnginePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.EnginePath}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<Button Grid.Column="2" Content="..." Click="EnginePathBrowse_Click" Width="30" Margin="2,0,0,0">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource ButtonBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.EnginePath}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
<Grid HorizontalAlignment="Stretch" Margin="4,2,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource PropertyGridNameWidth}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Perforce Server" />
<TextBox Grid.Column="1" Text="{Binding PerforceServer, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.PerforceServer}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
<Grid HorizontalAlignment="Stretch" Margin="4,2,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource PropertyGridNameWidth}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Fields Descriptor" />
<TextBox Grid.Column="1" Text="{Binding FieldsDescriptor, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxBaseStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Mode="OneWay" Converter="{StaticResource FlagsToBooleanConverter}">
<Binding Path="ReadOnlyFields" />
<Binding Source="{x:Static models:ProjectViewModel+LockedFields.FieldsDescriptor}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
</StackPanel>
</DockPanel>
</Grid>
</DockPanel>
</UserControl>