123 lines
7.9 KiB
XML
123 lines
7.9 KiB
XML
<UserControl x:Class="PettingZoo.UI.Tab.Subscriber.SubscriberView"
|
|
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:ui="clr-namespace:PettingZoo.UI"
|
|
xmlns:res="clr-namespace:PettingZoo.UI.Tab.Subscriber"
|
|
xmlns:svgc="http://sharpvectors.codeplex.com/svgc/"
|
|
xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit"
|
|
xmlns:connection="clr-namespace:PettingZoo.Core.Connection;assembly=PettingZoo.Core"
|
|
mc:Ignorable="d"
|
|
d:DesignHeight="450"
|
|
d:DesignWidth="800"
|
|
d:DataContext="{d:DesignInstance res:DesignTimeSubscriberViewModel, IsDesignTimeCreatable=True}"
|
|
Background="White">
|
|
<Grid Margin="4">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<ListBox Grid.Column="0" Grid.Row="0"
|
|
HorizontalAlignment="Stretch"
|
|
HorizontalContentAlignment="Stretch"
|
|
SelectedItem="{Binding Path=SelectedMessage, Mode=TwoWay}"
|
|
ui:ListBox.AutoScroll="True"
|
|
x:Name="ReferenceControlForBorder"
|
|
Grid.IsSharedSizeScope="True">
|
|
<ListBox.Resources>
|
|
<ui:BindingProxy x:Key="ContextMenuProxy" Data="{Binding}" />
|
|
<CollectionViewSource x:Key="Messages"
|
|
Source="{Binding Messages}" />
|
|
<CollectionViewSource x:Key="UnreadMessages"
|
|
Source="{Binding UnreadMessages}" />
|
|
</ListBox.Resources>
|
|
<ListBox.ItemsSource>
|
|
<CompositeCollection>
|
|
<CollectionContainer Collection="{Binding Source={StaticResource Messages}}" />
|
|
<ListBoxItem HorizontalContentAlignment="Stretch" IsEnabled="False" IsHitTestVisible="False">
|
|
<Grid Visibility="{Binding UnreadMessagesVisibility}">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition SharedSizeGroup="DateTime" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Separator Grid.Column="0" Margin="0,0,8,0" />
|
|
<TextBlock Grid.Column="1" Text="{x:Static res:SubscriberViewStrings.LabelNewMessages}" HorizontalAlignment="Center" Background="{Binding Background, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}" Foreground="{x:Static SystemColors.GrayTextBrush}" />
|
|
<Separator Grid.Column="2" Margin="8,0,0,0" />
|
|
</Grid>
|
|
</ListBoxItem>
|
|
<CollectionContainer Collection="{Binding Source={StaticResource UnreadMessages}}" />
|
|
</CompositeCollection>
|
|
</ListBox.ItemsSource>
|
|
<ListBox.ItemTemplate>
|
|
<DataTemplate DataType="{x:Type connection:ReceivedMessageInfo}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" MinWidth="150" SharedSizeGroup="DateTime"/>
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<TextBlock Grid.Column="0" Text="{Binding ReceivedTimestamp, StringFormat=g}" Style="{StaticResource Timestamp}" />
|
|
<!-- ReSharper disable Xaml.BindingWithContextNotResolved -->
|
|
<TextBlock Grid.Column="1" Text="{Binding RoutingKey}" Style="{StaticResource RoutingKey}" Visibility="{Binding Data.StandardTabVisibility, Source={StaticResource ContextMenuProxy}}" />
|
|
<TextBlock Grid.Column="1" Text="{Binding Properties.CorrelationId}" Style="{StaticResource RoutingKey}" Visibility="{Binding Data.ReplyToTabVisibility, Source={StaticResource ContextMenuProxy}}" />
|
|
<!-- ReSharper restore Xaml.BindingWithContextNotResolved -->
|
|
|
|
<Grid.ContextMenu>
|
|
<ContextMenu>
|
|
<!-- ReSharper disable once Xaml.BindingWithContextNotResolved - binding is correct, just weird because of the required proxy -->
|
|
<MenuItem Header="{x:Static res:SubscriberViewStrings.ContextPublish}" Command="{Binding Data.CreatePublisherCommand, Source={StaticResource ContextMenuProxy}}" InputGestureText="Ctrl+P" />
|
|
</ContextMenu>
|
|
</Grid.ContextMenu>
|
|
</Grid>
|
|
</DataTemplate>
|
|
</ListBox.ItemTemplate>
|
|
</ListBox>
|
|
<GridSplitter Width="5" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch"/>
|
|
<Grid Grid.Column="2" Grid.Row="0">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="200"/>
|
|
</Grid.RowDefinitions>
|
|
<ToolBar Grid.Column="0" Grid.Row="0" ToolBarTray.IsLocked="True" Margin="0,0,0,4" Background="Transparent" Loaded="Toolbar_Loaded">
|
|
<Button Command="{Binding CreatePublisherCommand}">
|
|
<StackPanel Orientation="Horizontal">
|
|
<Image Source="{svgc:SvgImage Source=/Images/Publish.svg, AppName=PettingZoo}" Width="16" Height="16" Style="{StaticResource ToolbarIcon}"/>
|
|
<TextBlock Margin="3,0,0,0" Text="{x:Static res:SubscriberViewStrings.ContextPublish}" />
|
|
</StackPanel>
|
|
</Button>
|
|
</ToolBar>
|
|
|
|
<Border Grid.Column="0" Grid.Row="1" Style="{StaticResource SidePanel}">
|
|
<DockPanel>
|
|
<Label DockPanel.Dock="Top" Style="{StaticResource HeaderLabel}" Content="{x:Static res:SubscriberViewStrings.PanelTitleBody}"/>
|
|
<Border Style="{StaticResource ControlBorder}" Name="EditorBorder">
|
|
<avalonedit:TextEditor
|
|
Name="Editor"
|
|
Style="{StaticResource Payload}" />
|
|
</Border>
|
|
</DockPanel>
|
|
</Border>
|
|
<GridSplitter HorizontalAlignment="Stretch" Grid.Column="0" Grid.Row="2" Height="5" ResizeDirection="Rows"/>
|
|
<Border Grid.Column="0" Grid.Row="3" Style="{StaticResource SidePanel}">
|
|
<DockPanel>
|
|
<Label DockPanel.Dock="Top" Style="{StaticResource HeaderLabel}" Content="{x:Static res:SubscriberViewStrings.PanelTitleProperties}"/>
|
|
<DataGrid ItemsSource="{Binding SelectedMessageProperties}" AutoGenerateColumns="False" IsReadOnly="True" Style="{StaticResource Properties}">
|
|
<DataGrid.Columns>
|
|
<!-- ReSharper disable Xaml.BindingWithContextNotResolved - bindings are correct -->
|
|
<DataGridTextColumn Binding="{Binding Key}" Header="{x:Static res:SubscriberViewStrings.PropertyName}" Width="100"/>
|
|
<DataGridTextColumn Binding="{Binding Value}" Header="{x:Static res:SubscriberViewStrings.PropertyValue}" Width="*"/>
|
|
<!-- ReSharper restore Xaml.BindingWithContextNotResolved -->
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</DockPanel>
|
|
</Border>
|
|
</Grid>
|
|
</Grid>
|
|
</UserControl>
|