diff --git a/VECTO3GUI2020/Behaviours/AutoScrollDataGridBehaviour.cs b/VECTO3GUI2020/Behaviours/AutoScrollDataGridBehaviour.cs index a8669cb427fc55d4f618a306929f64626502c2ea..3e283eed3cec9a2fff0097f9b8f067dee86017ec 100644 --- a/VECTO3GUI2020/Behaviours/AutoScrollDataGridBehaviour.cs +++ b/VECTO3GUI2020/Behaviours/AutoScrollDataGridBehaviour.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; +using System.Windows.Threading; using Microsoft.Xaml.Behaviors; namespace VECTO3GUI2020.Behaviours @@ -42,7 +43,11 @@ namespace VECTO3GUI2020.Behaviours private void SourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { var newIndex = e.NewStartingIndex; - this.AssociatedObject.ScrollIntoView(this.AssociatedObject.Items[newIndex]); + Dispatcher.CurrentDispatcher.BeginInvoke( + DispatcherPriority.ApplicationIdle, + new Action(() => this.AssociatedObject.ScrollIntoView(this.AssociatedObject.Items[newIndex])) + ); + } diff --git a/VECTO3GUI2020/MainWindow.xaml b/VECTO3GUI2020/MainWindow.xaml index 4da7c0c7084b6e06d67e550d6684ea70c212ab43..aca144dd8f4505e4eaae09bb33ea568d95e464cb 100644 --- a/VECTO3GUI2020/MainWindow.xaml +++ b/VECTO3GUI2020/MainWindow.xaml @@ -47,7 +47,7 @@ </Button> </Border> - <Border BorderThickness="{Binding ElementName=JobsButtonBorder, Path=BorderThickness}" > + <Border BorderThickness="{Binding ElementName=JobsButtonBorder, Path=BorderThickness}"> <Border.Style> <Style TargetType="Border"> <Style.Triggers> @@ -90,7 +90,8 @@ - <Border DockPanel.Dock="Top" BorderBrush="{DynamicResource AccentColorButton}" BorderThickness="3"> + <!--<Border DockPanel.Dock="Top" BorderBrush="{DynamicResource AccentColorButton}" BorderThickness="3" VerticalAlignment="Stretch" + Visibility="{Binding JobsSelected, Converter={StaticResource BooleanToVisibilityConverter}}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> @@ -106,6 +107,10 @@ <ContentControl Visibility="{Binding JobsSelected, Converter={StaticResource BooleanToVisibilityConverter}}" Grid.Row="2" Margin="0,0,0,0" Name="ContentControlBottom" Content="{Binding CurrentViewModelBottom}"/> </Grid> + </Border>--> + + <Border DockPanel.Dock="Top" BorderBrush="{DynamicResource AccentColorButton}" BorderThickness="3" VerticalAlignment="Stretch"> + <ContentControl Content="{Binding CurrentViewModelTop}"></ContentControl> </Border> </DockPanel> </Grid> diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs index de0acb88fcf17899d2b1969b35c54632e3821a99..08d76a8756f36440387fc8d09cde7083d17eb06c 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs @@ -13,6 +13,7 @@ using System.Windows; using System.Windows.Data; using System.Windows.Forms; using System.Windows.Input; +using System.Windows.Threading; using System.Xml; using System.Xml.Linq; using Microsoft.Toolkit.Mvvm.Input; @@ -87,7 +88,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation private ICommand _newMultiStageFileCommand; private IMultiStageViewModelFactory _multiStageViewModelFactory; private readonly IXMLInputDataReader _inputDataReader; - private readonly IOutputViewModel _outputViewModel; + private IOutputViewModel _outputViewModel; private IAsyncRelayCommand _addJobAsync; private IAsyncRelayCommand _simulationCommand; @@ -185,10 +186,10 @@ namespace VECTO3GUI2020.ViewModel.Implementation return; } if(evtInfo.Level == LogLevel.Error || evtInfo.Level == LogLevel.Warn || evtInfo.Level == LogLevel.Fatal) - _outputMessage.Report(new MessageEntry() { - Type = MessageType.ErrorMessage, - Message = evtInfo.FormattedMessage, - Source = evtInfo.CallerMemberName, + _outputMessage.Report(new MessageEntry() { + Type = MessageType.ErrorMessage, + Message = evtInfo.FormattedMessage, + Source = evtInfo.CallerMemberName, }); } @@ -829,7 +830,13 @@ namespace VECTO3GUI2020.ViewModel.Implementation } - private void MoveJobDownExecute(IDocumentViewModel selectedJob) + public IOutputViewModel OutputViewModel + { + get => _outputViewModel; + set => SetProperty(ref _outputViewModel, value); + } + + private void MoveJobDownExecute(IDocumentViewModel selectedJob) { Debug.WriteLine("move down command"); diff --git a/VECTO3GUI2020/Views/JoblistView.xaml b/VECTO3GUI2020/Views/JoblistView.xaml index 8716be765c0d3bfc1c6802a49b4fc532609a1646..6050a41aaf2aef17530a77b2669dced19fe5dcf2 100644 --- a/VECTO3GUI2020/Views/JoblistView.xaml +++ b/VECTO3GUI2020/Views/JoblistView.xaml @@ -9,36 +9,47 @@ AutomationProperties.Name="JobListView" d:DesignHeight="450" d:DesignWidth="1000"> + <Grid> <Grid.ColumnDefinitions> - <ColumnDefinition MinWidth="140" Width="1*"/> - <ColumnDefinition Name="MiddleColumn" Width="6*"/> - <ColumnDefinition MinWidth="140" Width="1*"/> + <ColumnDefinition Width="1*"/> </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="1.5*"/> + <RowDefinition Height="5"></RowDefinition> + <RowDefinition Height="1*"/> + </Grid.RowDefinitions> + + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition MinWidth="140" Width="1*"/> + <ColumnDefinition Name="MiddleColumn" Width="6*"/> + <ColumnDefinition MinWidth="140" Width="1*"/> + </Grid.ColumnDefinitions> - <Border BorderBrush="Transparent" BorderThickness="1"> - <Grid> - <StackPanel HorizontalAlignment="Stretch"> - <Button x:Name="button" Margin="4" HorizontalAlignment="Stretch" + <Border BorderBrush="Transparent" BorderThickness="1"> + <Grid> + <StackPanel HorizontalAlignment="Stretch"> + <Button x:Name="button" Margin="4" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding SimulationCommand}">Simulation</Button> - <Button Margin="4" HorizontalAlignment="Stretch" + <Button Margin="4" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding CancelSimulation}">Stop</Button> - <Button x:Name="button1" Margin="4" HorizontalAlignment="Stretch" + <Button x:Name="button1" Margin="4" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding moveJobUp}" CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Up</Button> - <Button x:Name="button2" Margin="4" HorizontalAlignment="Stretch" + <Button x:Name="button2" Margin="4" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding moveJobDown}" CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Down</Button> - </StackPanel> - </Grid> - </Border> - <Grid Grid.Column="1"> - <Border BorderBrush="{StaticResource AccentColorButton}" BorderThickness="0" > - <DataGrid ItemsSource="{Binding Jobs}" + </StackPanel> + </Grid> + </Border> + <Grid Grid.Column="1"> + <Border BorderBrush="{StaticResource AccentColorButton}" BorderThickness="0" > + <DataGrid ItemsSource="{Binding Jobs}" BorderBrush ="{StaticResource AccentColorButton}" BorderThickness="1" Name="JobDataGrid" HorizontalAlignment="Stretch" @@ -64,9 +75,9 @@ <DataGridCheckBoxColumn IsReadOnly="False" Header="Simulate" Binding="{Binding Selected}" Width="1*"></DataGridCheckBoxColumn> <DataGridTextColumn IsReadOnly="True" Header="Name" Binding="{Binding DocumentName}" Width="4*"></DataGridTextColumn> <DataGridTextColumn IsReadOnly ="True" Header="Type" Binding="{Binding DocumentType}" Width="4*"></DataGridTextColumn> - + </DataGrid.Columns> - <DataGrid.RowDetailsTemplate> + <DataGrid.RowDetailsTemplate> <DataTemplate> <StackPanel Orientation="Vertical"> <Label x:Name="label" Content="Filename"/> @@ -74,7 +85,7 @@ </StackPanel> </DataTemplate> </DataGrid.RowDetailsTemplate> - <DataGrid.InputBindings> + <DataGrid.InputBindings> <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding EditJob}" @@ -82,28 +93,32 @@ </DataGrid.InputBindings> </DataGrid> <!--<Label x:Name="label" Content="Loading . . ." Visibility="{Binding IsLoading, Converter={StaticResource BooleanToVisibilityConverter}}"/>--> - </Border> - </Grid> - <Grid Grid.Column="2"> - <Border BorderBrush="Transparent" BorderThickness="1"> - <StackPanel > - <Button x:Name="button3" Margin="4" HorizontalAlignment="Stretch" + </Border> + </Grid> + <Grid Grid.Column="2"> + <Border BorderBrush="Transparent" BorderThickness="1"> + <StackPanel > + <Button x:Name="button3" Margin="4" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding AddJobAsyncCommand, IsAsync=True}" Background="#FFDDDDDD"> - Add Job</Button> - <Button x:Name="button4" Margin ="4" HorizontalAlignment="Stretch" + Add Job</Button> + <Button x:Name="button4" Margin ="4" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding EditJob}" CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Edit Job</Button> - <Button x:Name="button5" Margin="4" HorizontalAlignment="Stretch" + <Button x:Name="button5" Margin="4" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding NewManufacturingStageFile}" AutomationProperties.AutomationId="JobListViewNewManufacturingStageFileButton">New Multistage Job</Button> - <Button x:Name="button6" Margin="4" HorizontalAlignment="Stretch" + <Button x:Name="button6" Margin="4" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding RemoveJob, IsAsync=True}" CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Remove Job</Button> - </StackPanel> - </Border> + </StackPanel> + </Border> + </Grid> </Grid> + <GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" Height="5"/> + <ContentControl Grid.Row="2" Margin="0,0,0,0" Name="ContentControlBottom" Content="{Binding OutputViewModel }"/> </Grid> + </UserControl>