<UserControl x:Class="GSF.TimeSeries.UI.UserControls.AdapterUserControl" 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" mc:Ignorable="d" d:DesignHeight="650" d:DesignWidth="850" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:p="clr-namespace:GSF.TimeSeries.UI.Properties" xmlns:uc="clr-namespace:GSF.TimeSeries.UI.UserControls" xmlns:tsfBinding="clr-namespace:GSF.TimeSeries.UI.Binding;assembly=GSF.TimeSeries.UI" xmlns:tsf="clr-namespace:GSF.TimeSeries.UI" Background="Transparent"> <UserControl.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/GSF.TimeSeries.UI.WPF;Component/Resources/CommonResource.xaml" /> <ResourceDictionary Source="/GSF.TimeSeries.UI.WPF;Component/Resources/StyleResource.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </UserControl.Resources> <StackPanel Orientation="Vertical" IsEnabled="{Binding ElementName=CustomConfigurationPopup, Path=IsOpen, Converter={StaticResource NotConverter}}"> <StackPanel.Resources> <CollectionViewSource Source="{Binding Path=AdapterTypeList}" x:Key="AdapterTypeList" /> <CollectionViewSource Source="{Binding Path=ParameterList}" x:Key="ParameterList" /> </StackPanel.Resources> <tsf:TsfPopup x:Name="CustomConfigurationPopup" Placement="Center" Topmost="False" Visibility="Collapsed" Button.Click="CustomConfigurationPopup_ButtonClick"> <Border CornerRadius="5" BorderThickness="2" Background="White" BorderBrush="Blue"> <StackPanel Name="CustomConfigurationPanel" Margin="5" /> </Border> </tsf:TsfPopup> <Grid x:Name="GridDetailView" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="5" DataContext="{Binding Path=CurrentItem, Mode=TwoWay}" DataContextChanged="GridDetailView_DataContextChanged"> <Grid.BindingGroup > <BindingGroup Name="input"/> </Grid.BindingGroup> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right"> <TextBlock Text="{x:Static p:Resources.AdapterUserControl_NameLabel}" Style="{StaticResource RequiredLabel}" /> <TextBlock Style="{StaticResource RequiredMarker}" /> </StackPanel> <TextBox Grid.Row="0" Grid.Column="1" CharacterCasing="Upper" Text="{tsfBinding:Column Path=AdapterName}" MaxLength="50"/> <StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="2" HorizontalAlignment="Right"> <TextBlock Text="{x:Static p:Resources.AdapterUserControl_LoadOrderLabel}" Style="{StaticResource RequiredLabel}" /> <TextBlock Style="{StaticResource RequiredMarker}" /> </StackPanel> <TextBox Grid.Row="0" Grid.Column="3" Text="{tsfBinding:Column Path=LoadOrder}" Width="35" /> <GroupBox Grid.Row="2" Grid.ColumnSpan="4" Header="{Binding TypeInfo}" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Path=DataContext}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="{x:Static p:Resources.AdapterUserControl_SearchDirectoryLabel}" /> <StackPanel Grid.Row="0" Grid.Column="1" HorizontalAlignment="Stretch" Orientation="Horizontal"> <TextBox Name="SearchDirectoryTextBox" Text="{tsfBinding:Column Path=SearchDirectory}" Width="525" /> <Button Click="Browse_Click" Width="Auto" ToolTip="{x:Static p:Resources.AdapterUserControl_BrowseButtonTooltip}"> <Button.Template> <ControlTemplate> <Image Source="/GSF.TimeSeries.UI;component/images/Folder.png" Height="24" Width="24" /> </ControlTemplate> </Button.Template> </Button> </StackPanel> <TextBlock Grid.Row="1" Grid.Column="0" Text="{x:Static p:Resources.AdapterUserControl_TypeLabel}" /> <ComboBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" ItemsSource="{Binding Source={StaticResource AdapterTypeList}}" HorizontalContentAlignment="Left" Width="560" SelectedIndex="{Binding Mode=TwoWay, Path=AdapterTypeSelectedIndex}"> <ComboBox.ItemTemplate> <DataTemplate> <Border Padding="5"> <StackPanel Orientation="Horizontal"> <TextBlock FontWeight="Bold" Text="{Binding Path=Item2.Header}" Visibility="{Binding Path=Item2.HeaderVisibility}" Margin="0" /> <TextBlock Text=": " Visibility="{Binding Path=Item2.HeaderVisibility}" Margin="0" /> <TextBlock Text="{Binding Path=Item2.Description}" Margin="0" /> </StackPanel> </Border> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> </Grid> </GroupBox> <GroupBox Grid.Row="3" Grid.ColumnSpan="4" Header="{x:Static p:Resources.AdapterUserControl_ConnectionStringGroupBox}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Button Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" Width="Auto" FontSize="16" FontWeight="Bold" Foreground="Blue" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Path=DataContext}" Visibility="{Binding CustomConfigurationButtonVisibility}" Content="{x:Static p:Resources.AdapterUserControl_CustomConfigurationWizardButton}" Click="ButtonOpenCustomConfiguration_Click"> <Button.Template> <ControlTemplate TargetType="Button"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> <Image Source="/GSF.TimeSeries.UI;component/Images/Wand.png" /> <TextBlock Text="{TemplateBinding Content}" TextDecorations="Underline" Cursor="Hand" VerticalAlignment="Center" Width="Auto" Height="Auto" Foreground="{TemplateBinding Foreground}"/> </StackPanel> </ControlTemplate> </Button.Template> </Button> <TextBlock Text="{x:Static p:Resources.AdapterUserControl_ParametersLabel}" VerticalAlignment="Top" Grid.Row="1" Grid.Column="0" /> <ListBox Grid.Row="1" Grid.Column="1" Width="{StaticResource XLargeItemSize}" Height="{StaticResource XSmallItemSize}" HorizontalContentAlignment="Stretch" Name="ParameterListBox" ItemsSource="{Binding Source={StaticResource ParameterList}}" SelectedItem="{Binding Path=SelectedParameter}" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext}" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Margin="0" Padding="0" FontWeight="{Binding Path=Boldness}" Foreground="{Binding Path=Color}" Text="{Binding Path=Name}" ToolTipService.InitialShowDelay="0" Width="Auto" TextAlignment="Left" HorizontalAlignment="Left"> <TextBlock.ToolTip> <ToolTip> <TextBlock Text="{Binding Path=Description}" /> </ToolTip> </TextBlock.ToolTip> </TextBlock> </DataTemplate> </ListBox.ItemTemplate> </ListBox> <StackPanel Grid.Row="1" Grid.Column="2" Margin="10,5,0,0"> <TextBlock Name="ParameterValueTextBlock" Margin="0" Text="{x:Static p:Resources.AdapterUserControl_ValueLabel}" HorizontalAlignment="Center" VerticalAlignment="Top" /> <Button Content="{x:Static p:Resources.AdapterUserControl_DefaultButton}" Margin="0" Padding="2" Width="Auto" HorizontalAlignment="Center" ToolTip="Click to restore the default value." Click="Default_Click" /> </StackPanel> <StackPanel Grid.Row="1" Grid.Column="3" DataContext="{Binding ElementName=ParameterListBox, Path=SelectedItem}"> <TextBox Name="ParameterValueTextBox" Width="{StaticResource XLargeItemSize}" Height="{StaticResource XSmallItemSize}" Text="{tsfBinding:Column Path=Value}" TextWrapping="Wrap" Visibility="{Binding Path=IsOther, Converter={StaticResource ObjectToVisibilityConverter}}" VerticalScrollBarVisibility="Auto"/> <StackPanel> <StackPanel.Style> <Style TargetType="{x:Type StackPanel}"> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=ParameterListBox, Path=SelectedItem}" Value="{x:Null}"> <Setter Property="Visibility" Value="Collapsed" /> </DataTrigger> </Style.Triggers> </Style> </StackPanel.Style> <StackPanel Margin="5" Width="{Binding ElementName=ParameterValueTextBox, Path=Width}" Height="{Binding ElementName=ParameterValueTextBox, Path=Height}" Visibility="{Binding Path=IsBoolean, Converter={StaticResource ObjectToVisibilityConverter}}"> <RadioButton Content="True" GroupName="BooleanParameter" IsChecked="{Binding Path=Value}" /> <RadioButton Content="False" GroupName="BooleanParameter" IsChecked="{Binding Mode=OneWay, Path=IsFalseChecked}" /> </StackPanel> <StackPanel Margin="5" Width="{Binding ElementName=ParameterValueTextBox, Path=Width}" Visibility="{Binding Path=IsEnum, Converter={StaticResource ObjectToVisibilityConverter}}"> <Grid Height="{Binding ElementName=ParameterListBox, Path=Height}"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*" /> </Grid.RowDefinitions> <ComboBox Grid.Row="0" IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Stretch" Width="Auto" ItemsSource="{Binding Path=EnumValues}" SelectedItem="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 0 2" /> <TextBox Grid.Row="1" Name="EnumDescriptionTextBox" VerticalAlignment="Stretch" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" Text="{tsfBinding:Column Path=EnumDescription}" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" IsReadOnly="True" Margin="0" BorderThickness="0" Padding="0" Background="Transparent" /> </Grid> </StackPanel> <StackPanel Margin="5" Width="{Binding ElementName=ParameterValueTextBox, Path=Width}" Height="{Binding ElementName=ParameterValueTextBox, Path=Height}" Visibility="{Binding Path=IsCustom, Converter={StaticResource ObjectToVisibilityConverter}}"> <Button Width="Auto" Height="Auto" HorizontalAlignment="Center" FontSize="14" Foreground="Blue" Click="ButtonOpenParameterConfiguration_Click"> <Button.Template> <ControlTemplate TargetType="Button"> <StackPanel Orientation="Horizontal"> <Image Source="/GSF.TimeSeries.UI;component/Images/Configure.png" /> <TextBlock Text="{TemplateBinding Content}" TextDecorations="Underline" Cursor="Hand" Width="Auto" Height="Auto" Foreground="{TemplateBinding Foreground}" VerticalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap"> Click here to edit<LineBreak/> parameter value. </TextBlock> </StackPanel> </ControlTemplate> </Button.Template> </Button> </StackPanel> </StackPanel> </StackPanel> <TextBlock Grid.Row="2" Grid.Column="0" Text="{x:Static p:Resources.AdapterUserControl_ConnectionStringLabel}" VerticalAlignment="Top" /> <TextBox Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Width="560" Height="{StaticResource XSmallItemSize}" HorizontalAlignment="Stretch" Text="{tsfBinding:Column Path=ConnectionString}" TextWrapping="Wrap" AcceptsReturn="True" ScrollViewer.VerticalScrollBarVisibility="Visible" /> </Grid> </GroupBox> <TextBlock Text="{x:Static p:Resources.AdapterUserControl_RuntimeIDLabel}" Grid.Row="4" Grid.Column="0" /> <StackPanel Orientation="Horizontal" Grid.Row="4" Grid.Column="1"> <TextBlock Text="{tsfBinding:Column Path=DataContext.RuntimeID, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}}" /> <Button Content="{x:Static p:Resources.AdapterUserControl_InitializeButton}" Command="{Binding Path=DataContext.InitializeCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}}" IsEnabled="{Binding Path=DataContext.IsNewRecord, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Converter={StaticResource NotConverter}}"/> </StackPanel> <CheckBox Content="{x:Static p:Resources.AdapterUserControl_EnabledCheckBox}" Grid.Row="4" Grid.Column="3" IsChecked="{tsfBinding:Column Path=Enabled}"/> </Grid> <uc:DetailViewFooterUserControl x:Name="UserControlDetailViewFooter" DeleteCommand="{Binding DeleteCommand}" ClearCommand="{Binding ClearCommand}" SaveCommand="{Binding SaveCommand}" SaveEnabled="{tsfBinding:DataOperation Path=(Validation.HasError)}" /> <sdk:DataGrid x:Name="DataGridList" ItemsSource="{Binding CurrentPage}" SelectedItem="{Binding Path=CurrentItem, Mode=TwoWay}" Height="Auto" PreviewKeyDown="DataGrid_PreviewKeyDown" Sorting="DataGrid_Sorting" SelectedIndex="{tsfBinding:Column Path=CurrentSelectedIndex}"> <sdk:DataGrid.Columns> <sdk:DataGridTextColumn Header="{x:Static p:Resources.AdapterUserControl_NameDataGridColumn}" Width="*" Binding="{tsfBinding:Column Path=AdapterName}"/> <sdk:DataGridTextColumn Header="{x:Static p:Resources.AdapterUserControl_AssemblyNameDataGridColumn}" Width="*" Binding="{tsfBinding:Column Path=AssemblyName}" /> <sdk:DataGridTextColumn Header="{x:Static p:Resources.AdapterUserControl_TypeNameDataGridColumn}" Width="2*" Binding="{tsfBinding:Column Path=TypeName}" /> <sdk:DataGridTemplateColumn Header="{x:Static p:Resources.AdapterUserControl_EnabledDataGridColumn}" Width="*" SortMemberPath="Enabled" > <sdk:DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{tsfBinding:Column Path=Enabled}" Margin="0" HorizontalAlignment="Center" Click="DataGridEnabledCheckBox_Click" /> </DataTemplate> </sdk:DataGridTemplateColumn.CellTemplate> </sdk:DataGridTemplateColumn> </sdk:DataGrid.Columns> </sdk:DataGrid> <uc:DataPagerUserControl CurrentPageNumber="{Binding CurrentPageNumber}" PageCount="{Binding PageCount}" FirstCommand="{Binding FirstCommand}" PreviousCommand="{Binding PreviousCommand}" NextCommand="{Binding NextCommand}" LastCommand="{Binding LastCommand}"/> </StackPanel></UserControl>
<UserControl x:Class="GSF.TimeSeries.UI.UserControls.AdapterUserControl"
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"
mc:Ignorable="d" d:DesignHeight="650" d:DesignWidth="850"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:p="clr-namespace:GSF.TimeSeries.UI.Properties"
xmlns:uc="clr-namespace:GSF.TimeSeries.UI.UserControls"
xmlns:tsfBinding="clr-namespace:GSF.TimeSeries.UI.Binding;assembly=GSF.TimeSeries.UI"
xmlns:tsf="clr-namespace:GSF.TimeSeries.UI"
Background="Transparent">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/GSF.TimeSeries.UI.WPF;Component/Resources/CommonResource.xaml" />
<ResourceDictionary Source="/GSF.TimeSeries.UI.WPF;Component/Resources/StyleResource.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<StackPanel Orientation="Vertical" IsEnabled="{Binding ElementName=CustomConfigurationPopup, Path=IsOpen, Converter={StaticResource NotConverter}}">
<StackPanel.Resources>
<CollectionViewSource Source="{Binding Path=AdapterTypeList}" x:Key="AdapterTypeList" />
<CollectionViewSource Source="{Binding Path=ParameterList}" x:Key="ParameterList" />
</StackPanel.Resources>
<tsf:TsfPopup x:Name="CustomConfigurationPopup" Placement="Center" Topmost="False" Visibility="Collapsed" Button.Click="CustomConfigurationPopup_ButtonClick">
<Border CornerRadius="5" BorderThickness="2" Background="White" BorderBrush="Blue">
<StackPanel Name="CustomConfigurationPanel" Margin="5" />
</Border>
</tsf:TsfPopup>
<Grid x:Name="GridDetailView" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="5" DataContext="{Binding Path=CurrentItem, Mode=TwoWay}" DataContextChanged="GridDetailView_DataContextChanged">
<Grid.BindingGroup >
<BindingGroup Name="input"/>
</Grid.BindingGroup>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right">
<TextBlock Text="{x:Static p:Resources.AdapterUserControl_NameLabel}" Style="{StaticResource RequiredLabel}" />
<TextBlock Style="{StaticResource RequiredMarker}" />
</StackPanel>
<TextBox Grid.Row="0" Grid.Column="1" CharacterCasing="Upper" Text="{tsfBinding:Column Path=AdapterName}" MaxLength="50"/>
<StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="2" HorizontalAlignment="Right">
<TextBlock Text="{x:Static p:Resources.AdapterUserControl_LoadOrderLabel}" Style="{StaticResource RequiredLabel}" />
<TextBlock Style="{StaticResource RequiredMarker}" />
</StackPanel>
<TextBox Grid.Row="0" Grid.Column="3" Text="{tsfBinding:Column Path=LoadOrder}" Width="35" />
<GroupBox Grid.Row="2" Grid.ColumnSpan="4" Header="{Binding TypeInfo}" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Path=DataContext}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{x:Static p:Resources.AdapterUserControl_SearchDirectoryLabel}" />
<StackPanel Grid.Row="0" Grid.Column="1" HorizontalAlignment="Stretch" Orientation="Horizontal">
<TextBox Name="SearchDirectoryTextBox" Text="{tsfBinding:Column Path=SearchDirectory}" Width="525" />
<Button Click="Browse_Click" Width="Auto" ToolTip="{x:Static p:Resources.AdapterUserControl_BrowseButtonTooltip}">
<Button.Template>
<ControlTemplate>
<Image Source="/GSF.TimeSeries.UI;component/images/Folder.png" Height="24" Width="24" />
</ControlTemplate>
</Button.Template>
</Button>
</StackPanel>
<TextBlock Grid.Row="1" Grid.Column="0" Text="{x:Static p:Resources.AdapterUserControl_TypeLabel}" />
<ComboBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" ItemsSource="{Binding Source={StaticResource AdapterTypeList}}"
HorizontalContentAlignment="Left" Width="560" SelectedIndex="{Binding Mode=TwoWay, Path=AdapterTypeSelectedIndex}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Border Padding="5">
<StackPanel Orientation="Horizontal">
<TextBlock FontWeight="Bold" Text="{Binding Path=Item2.Header}" Visibility="{Binding Path=Item2.HeaderVisibility}" Margin="0" />
<TextBlock Text=": " Visibility="{Binding Path=Item2.HeaderVisibility}" Margin="0" />
<TextBlock Text="{Binding Path=Item2.Description}" Margin="0" />
</StackPanel>
</Border>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</GroupBox>
<GroupBox Grid.Row="3" Grid.ColumnSpan="4" Header="{x:Static p:Resources.AdapterUserControl_ConnectionStringGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Button Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" Width="Auto" FontSize="16" FontWeight="Bold" Foreground="Blue"
DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Path=DataContext}"
Visibility="{Binding CustomConfigurationButtonVisibility}" Content="{x:Static p:Resources.AdapterUserControl_CustomConfigurationWizardButton}" Click="ButtonOpenCustomConfiguration_Click">
<Button.Template>
<ControlTemplate TargetType="Button">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Image Source="/GSF.TimeSeries.UI;component/Images/Wand.png" />
<TextBlock Text="{TemplateBinding Content}" TextDecorations="Underline" Cursor="Hand"
VerticalAlignment="Center" Width="Auto" Height="Auto" Foreground="{TemplateBinding Foreground}"/>
</StackPanel>
</ControlTemplate>
</Button.Template>
</Button>
<TextBlock Text="{x:Static p:Resources.AdapterUserControl_ParametersLabel}" VerticalAlignment="Top" Grid.Row="1" Grid.Column="0" />
<ListBox Grid.Row="1" Grid.Column="1" Width="{StaticResource XLargeItemSize}" Height="{StaticResource XSmallItemSize}" HorizontalContentAlignment="Stretch"
Name="ParameterListBox" ItemsSource="{Binding Source={StaticResource ParameterList}}" SelectedItem="{Binding Path=SelectedParameter}"
DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext}" ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Margin="0" Padding="0" FontWeight="{Binding Path=Boldness}" Foreground="{Binding Path=Color}" Text="{Binding Path=Name}" ToolTipService.InitialShowDelay="0" Width="Auto" TextAlignment="Left" HorizontalAlignment="Left">
<TextBlock.ToolTip>
<ToolTip>
<TextBlock Text="{Binding Path=Description}" />
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<StackPanel Grid.Row="1" Grid.Column="2" Margin="10,5,0,0">
<TextBlock Name="ParameterValueTextBlock" Margin="0" Text="{x:Static p:Resources.AdapterUserControl_ValueLabel}" HorizontalAlignment="Center" VerticalAlignment="Top" />
<Button Content="{x:Static p:Resources.AdapterUserControl_DefaultButton}" Margin="0" Padding="2" Width="Auto" HorizontalAlignment="Center" ToolTip="Click to restore the default value." Click="Default_Click" />
</StackPanel>
<StackPanel Grid.Row="1" Grid.Column="3" DataContext="{Binding ElementName=ParameterListBox, Path=SelectedItem}">
<TextBox Name="ParameterValueTextBox" Width="{StaticResource XLargeItemSize}" Height="{StaticResource XSmallItemSize}" Text="{tsfBinding:Column Path=Value}" TextWrapping="Wrap"
Visibility="{Binding Path=IsOther, Converter={StaticResource ObjectToVisibilityConverter}}" VerticalScrollBarVisibility="Auto"/>
<StackPanel>
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ParameterListBox, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<StackPanel Margin="5" Width="{Binding ElementName=ParameterValueTextBox, Path=Width}" Height="{Binding ElementName=ParameterValueTextBox, Path=Height}"
Visibility="{Binding Path=IsBoolean, Converter={StaticResource ObjectToVisibilityConverter}}">
<RadioButton Content="True" GroupName="BooleanParameter" IsChecked="{Binding Path=Value}" />
<RadioButton Content="False" GroupName="BooleanParameter" IsChecked="{Binding Mode=OneWay, Path=IsFalseChecked}" />
</StackPanel>
<StackPanel Margin="5" Width="{Binding ElementName=ParameterValueTextBox, Path=Width}"
Visibility="{Binding Path=IsEnum, Converter={StaticResource ObjectToVisibilityConverter}}">
<Grid Height="{Binding ElementName=ParameterListBox, Path=Height}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ComboBox Grid.Row="0" IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Stretch" Width="Auto" ItemsSource="{Binding Path=EnumValues}"
SelectedItem="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 0 2" />
<TextBox Grid.Row="1" Name="EnumDescriptionTextBox" VerticalAlignment="Stretch" Height="Auto" Width="Auto" HorizontalAlignment="Stretch"
Text="{tsfBinding:Column Path=EnumDescription}" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" IsReadOnly="True" Margin="0"
BorderThickness="0" Padding="0" Background="Transparent" />
</Grid>
</StackPanel>
<StackPanel Margin="5" Width="{Binding ElementName=ParameterValueTextBox, Path=Width}" Height="{Binding ElementName=ParameterValueTextBox, Path=Height}"
Visibility="{Binding Path=IsCustom, Converter={StaticResource ObjectToVisibilityConverter}}">
<Button Width="Auto" Height="Auto" HorizontalAlignment="Center"
FontSize="14" Foreground="Blue" Click="ButtonOpenParameterConfiguration_Click">
<Button.Template>
<ControlTemplate TargetType="Button">
<StackPanel Orientation="Horizontal">
<Image Source="/GSF.TimeSeries.UI;component/Images/Configure.png" />
<TextBlock Text="{TemplateBinding Content}" TextDecorations="Underline" Cursor="Hand"
Width="Auto" Height="Auto" Foreground="{TemplateBinding Foreground}"
VerticalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap">
Click here to edit<LineBreak/>
parameter value.
</TextBlock>
</StackPanel>
</ControlTemplate>
</Button.Template>
</Button>
</StackPanel>
</StackPanel>
</StackPanel>
<TextBlock Grid.Row="2" Grid.Column="0" Text="{x:Static p:Resources.AdapterUserControl_ConnectionStringLabel}" VerticalAlignment="Top" />
<TextBox Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Width="560" Height="{StaticResource XSmallItemSize}" HorizontalAlignment="Stretch"
Text="{tsfBinding:Column Path=ConnectionString}" TextWrapping="Wrap" AcceptsReturn="True" ScrollViewer.VerticalScrollBarVisibility="Visible" />
</Grid>
</GroupBox>
<TextBlock Text="{x:Static p:Resources.AdapterUserControl_RuntimeIDLabel}" Grid.Row="4" Grid.Column="0" />
<StackPanel Orientation="Horizontal" Grid.Row="4" Grid.Column="1">
<TextBlock Text="{tsfBinding:Column Path=DataContext.RuntimeID, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}}" />
<Button Content="{x:Static p:Resources.AdapterUserControl_InitializeButton}" Command="{Binding Path=DataContext.InitializeCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}}"
IsEnabled="{Binding Path=DataContext.IsNewRecord, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Converter={StaticResource NotConverter}}"/>
</StackPanel>
<CheckBox Content="{x:Static p:Resources.AdapterUserControl_EnabledCheckBox}" Grid.Row="4" Grid.Column="3" IsChecked="{tsfBinding:Column Path=Enabled}"/>
</Grid>
<uc:DetailViewFooterUserControl x:Name="UserControlDetailViewFooter" DeleteCommand="{Binding DeleteCommand}" ClearCommand="{Binding ClearCommand}" SaveCommand="{Binding SaveCommand}"
SaveEnabled="{tsfBinding:DataOperation Path=(Validation.HasError)}" />
<sdk:DataGrid x:Name="DataGridList" ItemsSource="{Binding CurrentPage}" SelectedItem="{Binding Path=CurrentItem, Mode=TwoWay}" Height="Auto" PreviewKeyDown="DataGrid_PreviewKeyDown" Sorting="DataGrid_Sorting"
SelectedIndex="{tsfBinding:Column Path=CurrentSelectedIndex}">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="{x:Static p:Resources.AdapterUserControl_NameDataGridColumn}" Width="*" Binding="{tsfBinding:Column Path=AdapterName}"/>
<sdk:DataGridTextColumn Header="{x:Static p:Resources.AdapterUserControl_AssemblyNameDataGridColumn}" Width="*" Binding="{tsfBinding:Column Path=AssemblyName}" />
<sdk:DataGridTextColumn Header="{x:Static p:Resources.AdapterUserControl_TypeNameDataGridColumn}" Width="2*" Binding="{tsfBinding:Column Path=TypeName}" />
<sdk:DataGridTemplateColumn Header="{x:Static p:Resources.AdapterUserControl_EnabledDataGridColumn}" Width="*" SortMemberPath="Enabled" >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{tsfBinding:Column Path=Enabled}" Margin="0" HorizontalAlignment="Center" Click="DataGridEnabledCheckBox_Click" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<uc:DataPagerUserControl CurrentPageNumber="{Binding CurrentPageNumber}" PageCount="{Binding PageCount}"
FirstCommand="{Binding FirstCommand}" PreviousCommand="{Binding PreviousCommand}"
NextCommand="{Binding NextCommand}" LastCommand="{Binding LastCommand}"/>
</StackPanel>
</UserControl>