Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 162 additions & 22 deletions src/MedWNetworkSim.App/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@
<Thumb Width="{Binding Width}"
Height="{Binding Height}"
Cursor="SizeAll"
PreviewMouseLeftButtonDown="NodeThumb_OnPreviewMouseLeftButtonDown"
DragDelta="NodeThumb_OnDragDelta"
ToolTip="{Binding FullTrafficSummary}">
<Thumb.Template>
Expand Down Expand Up @@ -536,6 +537,95 @@
</Grid>
</TabItem>

<TabItem Header="Node Roles">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="8" />
<RowDefinition Height="Auto" />
<RowDefinition Height="12" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<TextBlock FontSize="12"
Foreground="{StaticResource MutedForegroundBrush}"
Text="Choose the node and traffic-role entry from dropdown lists here, then open the dedicated node editor window to make changes."
TextWrapping="Wrap" />

<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="280" />
<ColumnDefinition Width="16" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="280" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<TextBlock VerticalAlignment="Center"
FontSize="12"
FontWeight="SemiBold"
Text="Node" />
<ComboBox Grid.Column="1"
ItemsSource="{Binding Nodes}"
SelectedItem="{Binding SelectedNode, Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="{x:Type vm:NodeViewModel}">
<TextBlock>
<Run Text="{Binding Name}" />
<Run Text=" (" />
<Run Text="{Binding Id}" />
<Run Text=")" />
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

<TextBlock Grid.Column="3"
VerticalAlignment="Center"
FontSize="12"
FontWeight="SemiBold"
Text="Traffic Role" />
<ComboBox Grid.Column="4"
ItemsSource="{Binding SelectedNode.TrafficProfiles}"
SelectedItem="{Binding SelectedNodeTrafficProfile, Mode=TwoWay}"
DisplayMemberPath="SelectionLabel" />
</Grid>

<Border Grid.Row="4"
Padding="14"
Background="#FFFFFBF4"
BorderBrush="{StaticResource BorderBrush}"
BorderThickness="1"
CornerRadius="14">
<StackPanel>
<TextBlock FontSize="15"
FontWeight="SemiBold"
Text="Use The Node Editor Window" />
<TextBlock Margin="0,8,0,0"
FontSize="12"
Foreground="{StaticResource MutedForegroundBrush}"
Text="The dedicated node editor provides dropdowns for node, traffic role, traffic type, and role, and keeps the amount fields together in a single place."
TextWrapping="Wrap" />
<WrapPanel Margin="0,14,0,0">
<Button Content="Open Node Editor..." Click="EditSelectedNode_Click" />
<Button Content="Add Traffic Role" Click="AddTrafficProfile_Click" />
<Button Content="Remove Selected" Click="RemoveTrafficProfile_Click" />
</WrapPanel>
<TextBlock Margin="0,14,0,0"
FontSize="12"
FontWeight="SemiBold"
Foreground="{StaticResource AccentStrongBrush}"
Text="{Binding SelectedNodeTrafficProfile.SelectionLabel}" />
<TextBlock Margin="0,4,0,0"
FontSize="12"
Foreground="{StaticResource MutedForegroundBrush}"
Text="{Binding SelectedNodeTrafficProfile.RoleSummary}" />
</StackPanel>
</Border>
</Grid>
</TabItem>

<TabItem Header="Network Editor">
<Grid Margin="10">
<Grid.RowDefinitions>
Expand Down Expand Up @@ -591,14 +681,27 @@
ItemsSource="{Binding TrafficDefinitions}"
SelectedItem="{Binding SelectedTrafficDefinition, Mode=TwoWay}"
AutoGenerateColumns="False"
CanUserAddRows="False"
IsReadOnly="False"
SelectionMode="Single"
SelectionUnit="FullRow">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name, Mode=TwoWay}" Header="Name" Width="95" />
<DataGridComboBoxColumn Header="Preference"
Width="110"
SelectedItemBinding="{Binding RoutingPreference, Mode=TwoWay}"
ItemsSource="{Binding DataContext.RoutingPreferences, RelativeSource={RelativeSource AncestorType=Window}}" />
<DataGridTemplateColumn Header="Preference" Width="118">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="{x:Type vm:TrafficTypeDefinitionEditorViewModel}">
<TextBlock Text="{Binding RoutingPreference}" VerticalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate DataType="{x:Type vm:TrafficTypeDefinitionEditorViewModel}">
<ComboBox Padding="2"
MinWidth="96"
ItemsSource="{Binding DataContext.RoutingPreferences, RelativeSource={RelativeSource AncestorType=Window}}"
SelectedItem="{Binding RoutingPreference, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding CapacityBidPerUnit, Mode=TwoWay, StringFormat={}{0:0.##}}" Header="Bid / Unit" Width="90" />
<DataGridTextColumn Binding="{Binding Description, Mode=TwoWay}" Header="Description" Width="*" />
</DataGrid.Columns>
Expand Down Expand Up @@ -633,13 +736,15 @@

<WrapPanel Grid.Row="2">
<Button Content="Add Node" Click="AddNode_Click" />
<Button Content="Edit Selected Node..." Click="EditSelectedNode_Click" />
<Button Content="Remove Selected" Click="RemoveNode_Click" />
</WrapPanel>

<DataGrid Grid.Row="4"
ItemsSource="{Binding Nodes}"
SelectedItem="{Binding SelectedNode, Mode=TwoWay}"
AutoGenerateColumns="False"
CanUserAddRows="False"
SelectionMode="Single"
SelectionUnit="FullRow">
<DataGrid.Columns>
Expand All @@ -653,26 +758,34 @@
<TextBlock Grid.Row="6"
FontSize="16"
FontWeight="SemiBold"
Text="Selected Node Traffic Profiles" />
Text="Node Role Editing" />

<WrapPanel Grid.Row="8">
<Button Content="Add Profile" Click="AddTrafficProfile_Click" />
<Button Content="Remove Selected" Click="RemoveTrafficProfile_Click" />
<Button Content="Open Node Editor..." Click="EditSelectedNode_Click" />
</WrapPanel>

<DataGrid Grid.Row="10"
ItemsSource="{Binding SelectedNode.TrafficProfiles}"
SelectedItem="{Binding SelectedNodeTrafficProfile, Mode=TwoWay}"
AutoGenerateColumns="False"
SelectionMode="Single"
SelectionUnit="FullRow">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding TrafficType, Mode=TwoWay}" Header="Traffic Type" Width="*" />
<DataGridTextColumn Binding="{Binding Production, Mode=TwoWay, StringFormat={}{0:0.##}}" Header="Production" Width="82" />
<DataGridTextColumn Binding="{Binding Consumption, Mode=TwoWay, StringFormat={}{0:0.##}}" Header="Consumption" Width="90" />
<DataGridCheckBoxColumn Binding="{Binding CanTransship, Mode=TwoWay}" Header="Transship" Width="75" />
</DataGrid.Columns>
</DataGrid>
<Border Grid.Row="10"
Padding="12"
Background="#FFF8F1E7"
BorderBrush="{StaticResource BorderBrush}"
BorderThickness="1"
CornerRadius="12">
<StackPanel>
<TextBlock FontSize="12"
Foreground="{StaticResource MutedForegroundBrush}"
Text="Use the dedicated node editor window to choose nodes, traffic-role entries, traffic types, and roles from dropdown lists."
TextWrapping="Wrap" />
<TextBlock Margin="0,10,0,0"
FontSize="12"
FontWeight="SemiBold"
Foreground="{StaticResource AccentStrongBrush}"
Text="{Binding SelectedNodeTrafficProfile.SelectionLabel}" />
<TextBlock Margin="0,4,0,0"
FontSize="12"
Foreground="{StaticResource MutedForegroundBrush}"
Text="{Binding SelectedNodeTrafficProfile.RoleSummary}" />
</StackPanel>
</Border>
</Grid>
</Border>

Expand Down Expand Up @@ -704,12 +817,39 @@
ItemsSource="{Binding Edges}"
SelectedItem="{Binding SelectedEdge, Mode=TwoWay}"
AutoGenerateColumns="False"
CanUserAddRows="False"
SelectionMode="Single"
SelectionUnit="FullRow">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Id, Mode=TwoWay}" Header="Id" Width="70" />
<DataGridTextColumn Binding="{Binding FromNodeId, Mode=TwoWay}" Header="From" Width="82" />
<DataGridTextColumn Binding="{Binding ToNodeId, Mode=TwoWay}" Header="To" Width="82" />
<DataGridTemplateColumn Header="From" Width="110">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="{x:Type vm:EdgeViewModel}">
<TextBlock VerticalAlignment="Center"
Text="{Binding FromNodeId}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate DataType="{x:Type vm:EdgeViewModel}">
<ComboBox ItemsSource="{Binding DataContext.NodeIdOptions, RelativeSource={RelativeSource AncestorType=Window}}"
SelectedItem="{Binding FromNodeId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="To" Width="110">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="{x:Type vm:EdgeViewModel}">
<TextBlock VerticalAlignment="Center"
Text="{Binding ToNodeId}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate DataType="{x:Type vm:EdgeViewModel}">
<ComboBox ItemsSource="{Binding DataContext.NodeIdOptions, RelativeSource={RelativeSource AncestorType=Window}}"
SelectedItem="{Binding ToNodeId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Time, Mode=TwoWay, StringFormat={}{0:0.##}}" Header="Time" Width="68" />
<DataGridTextColumn Binding="{Binding Cost, Mode=TwoWay, StringFormat={}{0:0.##}}" Header="Cost" Width="68" />
<DataGridTextColumn Binding="{Binding Capacity, Mode=TwoWay, StringFormat={}{0:0.##}}" Header="Capacity" Width="80" />
Expand Down
Loading
Loading