261 lines · 20.4 KB · Text
RawDownload
<UserControl x:Class="GSF.PhasorProtocols.UI.UserControls.DeviceUserControl"             xmlns:sys="clr-namespace:System;assembly=mscorlib"             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.PhasorProtocols.UI.Properties"             xmlns:uc="clr-namespace:GSF.TimeSeries.UI.UserControls;assembly=GSF.TimeSeries.UI.WPF"             xmlns:tsfBinding="clr-namespace:GSF.TimeSeries.UI.Binding;assembly=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">         <StackPanel.Resources>            <CollectionViewSource Source="{Binding Path=NodeLookupList}" x:Key="NodeLookupList"/>            <CollectionViewSource Source="{Binding Path=ConcentratorDeviceLookupList}" x:Key="ConcentratorDeviceLookupList"/>            <CollectionViewSource Source="{Binding Path=CompanyLookupList}" x:Key="CompanyLookupList"/>            <CollectionViewSource Source="{Binding Path=HistorianLookupList}" x:Key="HistorianLookupList"/>            <CollectionViewSource Source="{Binding Path=InterconnectionLookupList}" x:Key="InterconnectionLookupList"/>            <CollectionViewSource Source="{Binding Path=ProtocolLookupList}" x:Key="ProtocolLookupList"/>            <CollectionViewSource Source="{Binding Path=VendorDeviceLookupList}" x:Key="VendorDeviceLookupList"/>            <CollectionViewSource Source="{Binding Path=TimezoneLookupList}" x:Key="TimezoneLookupList"/>        </StackPanel.Resources>         <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" />                <RowDefinition Height="Auto" />                <RowDefinition Height="Auto" />                <RowDefinition Height="Auto" />                <RowDefinition Height="Auto" />                <RowDefinition Height="Auto" />                <RowDefinition Height="Auto" />                <RowDefinition Height="Auto" />                <RowDefinition Height="Auto" />                <RowDefinition Height="Auto" />                <RowDefinition Height="Auto" />            </Grid.RowDefinitions>                         <!--First row-->            <StackPanel Orientation="Horizontal" Grid.Column="0" Grid.ColumnSpan="4" HorizontalAlignment="Right">                <Button Template="{StaticResource HyperlinkStyleButtonTemplate}" Content="Phasors" Command="{tsfBinding:GridButtonCommand Path=DataContext.PhasorCommand, RelativeSource={RelativeSource AncestorType=UserControl}}">                    <Button.Visibility>                        <Binding Path="DataContext.IsNewRecord" RelativeSource="{RelativeSource AncestorType=UserControl}" Converter="{StaticResource ObjectToVisibilityConverter}">                            <Binding.ConverterParameter>                                <sys:Boolean>True</sys:Boolean>                            </Binding.ConverterParameter>                        </Binding>                    </Button.Visibility>                </Button>                <Button Template="{StaticResource HyperlinkStyleButtonTemplate}" Content="Measurements" Command="{tsfBinding:GridButtonCommand Path=DataContext.MeasurementCommand, RelativeSource={RelativeSource AncestorType=UserControl}}" Width="Auto">                    <Button.Visibility>                        <Binding Path="DataContext.IsNewRecord" RelativeSource="{RelativeSource AncestorType=UserControl}" Converter="{StaticResource ObjectToVisibilityConverter}">                            <Binding.ConverterParameter>                                <sys:Boolean>True</sys:Boolean>                            </Binding.ConverterParameter>                        </Binding>                    </Button.Visibility>                </Button>            </StackPanel>             <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right">                <TextBlock Text="Acronym" Style="{StaticResource RequiredLabel}" />                <TextBlock Style="{StaticResource RequiredMarker}" />            </StackPanel>            <TextBox x:Name="TextBoxAcronym" Grid.Row="1" Grid.Column="1" Text="{tsfBinding:Column Path=Acronym}" CharacterCasing="Upper" MaxLength="50"/>             <TextBlock Text="Concentrator" Grid.Row="1" Grid.Column="2" />            <StackPanel Grid.Row="1" Grid.Column="3" Orientation="Horizontal">                <ComboBox x:Name="ComboBoxConcentrator" ItemsSource="{Binding Source={StaticResource ConcentratorDeviceLookupList}}" DisplayMemberPath="Value"                      SelectedItem="{tsfBinding:Column Path=ParentID, Converter={StaticResource DictionaryToKeyValuePairConverter}, ConverterParameter={StaticResource ConcentratorDeviceLookupList}}"                      IsEnabled="{Binding ElementName=CheckBoxConcentrator, Path=IsChecked, Converter={StaticResource NotConverter}}"/>                <Button ToolTip="View Concentrator Configuration" Width="Auto" Visibility="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource ObjectToVisibilityConverter}}"                        Command="{Binding Path=DataContext.ConfigureConcentratorCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel, AncestorLevel=2}}">                    <Button.Template>                        <ControlTemplate>                            <Image Source="/GSF.TimeSeries.UI;component/images/EditConfiguration.png" Height="16" Width="16" />                        </ControlTemplate>                    </Button.Template>                </Button>            </StackPanel>                        <TextBlock Text="{x:Static p:Resources.DeviceUserControl_NameLabel}" Grid.Row="2" Grid.Column="0"/>            <TextBox Grid.Row="2" Grid.Column="1" Text="{tsfBinding:Column Path=Name}" MaxLength="100" />             <TextBlock Text="Time Zone" Grid.Row="2" Grid.Column="2" />            <ComboBox Grid.Row="2" Grid.Column="3" ItemsSource="{Binding Source={StaticResource TimezoneLookupList}}" DisplayMemberPath="Value"                      SelectedItem="{tsfBinding:Column Path=TimeZone, Converter={StaticResource DictionaryToKeyValuePairConverter}, ConverterParameter={StaticResource TimezoneLookupList}}"/>             <StackPanel Orientation="Horizontal" Grid.Row="3" Grid.Column="0" HorizontalAlignment="Right">                <TextBlock Text="ID Code (Access ID)" Style="{StaticResource RequiredLabel}" />                <TextBlock Style="{StaticResource RequiredMarker}" />            </StackPanel>            <TextBox Grid.Row="3" Grid.Column="1" Text="{tsfBinding:Column Path=AccessID}" Width="{StaticResource XXSmallItemSize}"/>             <TextBlock Text="Frames Per Second" Grid.Row="3" Grid.Column="2" />            <TextBox Grid.Row="3" Grid.Column="3" Text="{tsfBinding:Column Path=FramesPerSecond}" Width="35" />             <TextBlock Text="Company" Grid.Row="4" Grid.Column="0" />            <ComboBox Grid.Row="4" Grid.Column="1" ItemsSource="{Binding Source={StaticResource CompanyLookupList}}" DisplayMemberPath="Value"                      SelectedItem="{tsfBinding:Column Path=CompanyID, Converter={StaticResource DictionaryToKeyValuePairConverter}, ConverterParameter={StaticResource CompanyLookupList}}"/>             <TextBlock Text="Historian" Grid.Row="4" Grid.Column="2" />            <ComboBox Grid.Row="4" Grid.Column="3" ItemsSource="{Binding Source={StaticResource HistorianLookupList}}" DisplayMemberPath="Value"                      SelectedItem="{tsfBinding:Column Path=HistorianID, Converter={StaticResource DictionaryToKeyValuePairConverter}, ConverterParameter={StaticResource HistorianLookupList}}"/>             <TextBlock Text="Protocol" Grid.Row="5" Grid.Column="0" />            <ComboBox Grid.Row="5" Grid.Column="1" ItemsSource="{Binding Source={StaticResource ProtocolLookupList}}" DisplayMemberPath="Value"                      SelectedItem="{tsfBinding:Column Path=ProtocolID, Converter={StaticResource DictionaryToKeyValuePairConverter}, ConverterParameter={StaticResource ProtocolLookupList}}"                      IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />             <TextBlock Text="Device Vendor" Grid.Row="5" Grid.Column="2" />            <ComboBox Grid.Row="5" Grid.Column="3" ItemsSource="{Binding Source={StaticResource VendorDeviceLookupList}}" DisplayMemberPath="Value"                      SelectedItem="{tsfBinding:Column Path=VendorDeviceID, Converter={StaticResource DictionaryToKeyValuePairConverter}, ConverterParameter={StaticResource VendorDeviceLookupList}}"/>             <TextBlock Text="Connection String" Grid.Row="6" Grid.Column="0" />            <StackPanel Orientation="Horizontal" Grid.Row="6" Grid.Column="1">                <TextBox Text="{tsfBinding:Column Path=ConnectionString}" Height="50" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"                          IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}"/>                <Button Command="{Binding Path=DataContext.BuildConnectionStringCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel, AncestorLevel=2}}"                            IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" VerticalAlignment="Top" ToolTip="Build connection string" Width="Auto">                    <Button.Template>                        <ControlTemplate>                            <Image Source="/GSF.TimeSeries.UI;component/images/Edit.png" Height="24" Width="24" />                        </ControlTemplate>                    </Button.Template>                </Button>            </StackPanel>                        <TextBlock Text="Alternate Command Channel" Grid.Row="6" Grid.Column="2"/>            <StackPanel Orientation="Horizontal" Grid.Row="6" Grid.Column="3">                <TextBox Text="{tsfBinding:Column Path=AlternateCommandChannel}" Height="50" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"                           IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}"/>                <Button Command="{Binding Path=DataContext.BuildAlternateCommandChannelCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel, AncestorLevel=2}}"                             IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" VerticalAlignment="Top" ToolTip="Build alternate command channel" Width="Auto">                    <Button.Template>                        <ControlTemplate>                            <Image Source="/GSF.TimeSeries.UI;component/images/Edit.png" Height="24" Width="24" />                        </ControlTemplate>                    </Button.Template>                </Button>            </StackPanel>                         <StackPanel Orientation="Horizontal" Grid.Row="7" Grid.Column="0" HorizontalAlignment="Right">                <TextBlock Text="Data Loss Interval" Style="{StaticResource RequiredLabel}"/>                <TextBlock Style="{StaticResource RequiredMarker}" />            </StackPanel>            <TextBox Grid.Row="7" Grid.Column="1" Text="{tsfBinding:Column Path=DataLossInterval}" MaxLength="50" Width="{StaticResource XSmallItemSize}"                     IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />             <StackPanel Orientation="Horizontal" Grid.Row="7" Grid.Column="2" HorizontalAlignment="Right">                <TextBlock Text="Time Adjustment Ticks" Style="{StaticResource RequiredLabel}" />                <TextBlock Style="{StaticResource RequiredMarker}"/>            </StackPanel>            <TextBox Grid.Row="7" Grid.Column="3" Text="{tsfBinding:Column Path=TimeAdjustmentTicks}" MaxLength="50" Width="{StaticResource XSmallItemSize}"                     IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />             <StackPanel Orientation="Horizontal" Grid.Row="8" Grid.Column="0" HorizontalAlignment="Right">                <TextBlock Text="Allowed Parsing Exception" Style="{StaticResource RequiredLabel}" />                <TextBlock Style="{StaticResource RequiredMarker}" />            </StackPanel>            <TextBox Grid.Row="8" Grid.Column="1" Text="{tsfBinding:Column Path=AllowedParsingExceptions}" MaxLength="50" Width="35"                     IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />             <StackPanel Orientation="Horizontal" Grid.Row="8" Grid.Column="2" HorizontalAlignment="Right">                <TextBlock Text="Parsing Exception Window" Style="{StaticResource RequiredLabel}" />                <TextBlock Style="{StaticResource RequiredMarker}" />            </StackPanel>            <TextBox Grid.Row="8" Grid.Column="3" Text="{tsfBinding:Column Path=ParsingExceptionWindow}" MaxLength="50" Width="{StaticResource XSmallItemSize}"                     IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />             <StackPanel Orientation="Horizontal" Grid.Row="9" Grid.Column="0" HorizontalAlignment="Right">                <TextBlock Text="Delayed Connection Interval" Style="{StaticResource RequiredLabel}" TextWrapping="Wrap" />                <TextBlock Style="{StaticResource RequiredMarker}" />            </StackPanel>            <TextBox Grid.Row="9" Grid.Column="1" Text="{tsfBinding:Column Path=DelayedConnectionInterval}" MaxLength="50" Width="{StaticResource XSmallItemSize}"                      IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />             <StackPanel Orientation="Horizontal" Grid.Row="9" Grid.Column="2" HorizontalAlignment="Right">                <TextBlock Text="Measurement Reporting Interval" Style="{StaticResource RequiredLabel}" />                <TextBlock Style="{StaticResource RequiredMarker}" />            </StackPanel>            <TextBox Grid.Row="9" Grid.Column="3" Text="{tsfBinding:Column Path=MeasurementReportingInterval}" MaxLength="50" Width="{StaticResource XXSmallItemSize}"                     IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />             <TextBlock Text="Longitude" Grid.Row="10" Grid.Column="0"/>            <TextBox Grid.Row="10" Grid.Column="1" Text="{tsfBinding:Column Path=Longitude, UpdateSourceTrigger=LostFocus}" />             <TextBlock Text="Latitude" Grid.Row="10" Grid.Column="2"/>            <TextBox Grid.Row="10" Grid.Column="3" Text="{tsfBinding:Column Path=Latitude, UpdateSourceTrigger=LostFocus}" />                        <TextBlock Text="Interconnection" Grid.Row="11" Grid.Column="0" />            <ComboBox Grid.Row="11" Grid.Column="1" ItemsSource="{Binding Source={StaticResource InterconnectionLookupList}}" DisplayMemberPath="Value"                      SelectedItem="{tsfBinding:Column Path=InterconnectionID, Converter={StaticResource DictionaryToKeyValuePairConverter}, ConverterParameter={StaticResource InterconnectionLookupList}}"/>                        <StackPanel Orientation="Horizontal" Grid.Row="12" Grid.ColumnSpan="4">                <CheckBox Content="Skip Disable Real-time Data" IsChecked="{tsfBinding:Column Path=SkipDisableRealTimeData}"                           IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />                <CheckBox Content="Allow Use Of Cached Configuration" IsChecked="{tsfBinding:Column Path=AllowUseOfCachedConfiguration}"                          IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}"/>                <CheckBox Content="Auto Start Data Parsing Sequence" IsChecked="{tsfBinding:Column Path=AutoStartDataParsingSequence}"                          IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />                <CheckBox x:Name="CheckBoxConcentrator" Content="Concentrator" IsChecked="{tsfBinding:Column Path=IsConcentrator}"/>                            </StackPanel>             <TextBlock Text="Runtime ID" Grid.Row="13" Grid.Column="0" />            <StackPanel Orientation="Horizontal" Grid.Row="13" Grid.Column="1">                <TextBlock Text="{tsfBinding:Column Path=DataContext.RuntimeID, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl, AncestorLevel=1}}" />                <Button Content="Initialize" 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="Connect On Demand" IsChecked="{tsfBinding:Column Path=ConnectOnDemand}" Grid.Row="13" Grid.Column="2"                       IsEnabled="{Binding ElementName=ComboBoxConcentrator, Path=SelectedIndex, Converter={StaticResource IndexToBooleanConverter}}" />            <CheckBox Content="Enabled" IsChecked="{tsfBinding:Column Path=Enabled}" Grid.Row="13" Grid.Column="3"/>         </Grid>         <uc:DetailViewFooterUserControl x:Name="UserControlDetailViewFooter" DeleteCommand="{Binding DeleteCommand}" ClearCommand="{Binding ClearCommand}" SaveCommand="{Binding SaveCommand}"                SaveEnabled="{tsfBinding:DataOperation Path=(Validation.HasError)}" />           <TextBlock Text="Concentrator Device List" FontWeight="Bold" HorizontalAlignment="Left" Visibility="{Binding Path=CurrentItem.IsConcentrator, Converter={StaticResource ObjectToVisibilityConverter}}"/>         <sdk:DataGrid x:Name="DataGridList" ItemsSource="{tsfBinding:Column Path=PdcDevices}" SelectedItem="{Binding Path=CurrentItem, Mode=TwoWay}"                       Visibility="{Binding Path=CurrentItem.IsConcentrator, Converter={StaticResource ObjectToVisibilityConverter}}" Height="100">            <sdk:DataGrid.Columns>                <sdk:DataGridTextColumn Header="Acronym" Width="*" Binding="{tsfBinding:Column Path= Acronym}"/>                <sdk:DataGridTextColumn Header="Name" Width="2*" Binding="{tsfBinding:Column Path= Name}" />                            </sdk:DataGrid.Columns>        </sdk:DataGrid>     </StackPanel></UserControl>

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t