From daf9b86e23869ad2df9b46146739aa630d0ab904 Mon Sep 17 00:00:00 2001 From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at> Date: Fri, 30 Jul 2021 10:39:45 +0200 Subject: [PATCH] Fixed disabled save button in StageInputView --- .../MultistageJobViewModel_v0_1.cs | 4 +-- .../Implementation/StageInputViewModel.cs | 2 ++ .../Implementation/StageViewModelBase.cs | 25 +++++++++++-------- .../ViewModelTests/StageViewModelTests.cs | 2 +- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs index f656e1deaa..a18970ab18 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs @@ -277,10 +277,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public string VehicleInputDataFilePath { - get => ManufacturingStageViewModel.InputDataFilePath; + get => ManufacturingStageViewModel.VehicleInputDataFilePath; set { - ManufacturingStageViewModel.InputDataFilePath = value; + ManufacturingStageViewModel.VehicleInputDataFilePath = value; OnPropertyChanged(); } } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs index 2b08c6e6e4..29818686e8 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs @@ -56,6 +56,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation (_vehicleViewModel as InterimStageBusVehicleViewModel_v2_8).ShowConsolidatedData = false; _dataSource = inputData.DataSource; + VehicleInputDataFilePath = _dataSource.SourceFile; Title = $"Edit Stage Input - {Path.GetFileName(_dataSource.SourceFile)}"; Init(); @@ -69,6 +70,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation protected override void LoadStageInputDataFollowUp(IDeclarationInputDataProvider loadedInputData) { DataSource = loadedInputData.DataSource; + VehicleInputDataFilePath = DataSource.SourceFile; UpdateTitle(); DocumentName = loadedInputData.JobInputData.JobName; } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs index b89f5f0265..622e89e146 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs @@ -7,6 +7,7 @@ using System.Windows; using System.Windows.Input; using System.Xml.Linq; using Castle.Core.Internal; +using Microsoft.Toolkit.Mvvm.Input; using Ninject; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.FileIO.XML; @@ -14,20 +15,20 @@ using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; using VECTO3GUI2020.Ninject; using VECTO3GUI2020.Properties; -using VECTO3GUI2020.Util; using VECTO3GUI2020.Util.XML; using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.ViewModel.Interfaces.Common; using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; +using RelayCommand = VECTO3GUI2020.Util.RelayCommand; namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { public interface IStageViewModelBase { - string InputDataFilePath { get; set; } + string VehicleInputDataFilePath { get; set; } IMultistageVehicleViewModel VehicleViewModel { get; set; } ICommand SwitchComponentViewCommand { get; } - ICommand SaveInputDataCommand { get; } + IRelayCommand SaveInputDataCommand { get; } ICommand SaveInputDataAsCommand { get; } ICommand LoadVehicleDataCommand { get; } bool ShowSaveAndCloseButtons { get; set; } @@ -91,7 +92,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get { return _switchComponentViewCommand ?? - new RelayCommand<string>(SwitchViewExecute, (string s) => SwitchViewCanExecute(s)); + new Util.RelayCommand<string>(SwitchViewExecute, (string s) => SwitchViewCanExecute(s)); } } @@ -109,14 +110,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation return Components[viewToShow] != null; } - private ICommand _saveInputDataCommand; + private IRelayCommand _saveInputDataCommand; private ICommand _saveInputDataAsCommand; private IMultistageDependencies _multistageDependencies; private IXMLInputDataReader _inputDataReader; - public ICommand SaveInputDataCommand => + public IRelayCommand SaveInputDataCommand => _saveInputDataCommand ?? - new RelayCommand(() => { SaveInputDataExecute(filename: _vehicleInputDataFilePath); }, + new Microsoft.Toolkit.Mvvm.Input.RelayCommand(() => { SaveInputDataExecute(filename: _vehicleInputDataFilePath); }, () => _vehicleInputDataFilePath != null); public ICommand SaveInputDataAsCommand => @@ -232,7 +233,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation var inputData = (IDeclarationInputDataProvider)_inputDataReader.Create(fileName); var vehicleInputData = inputData.JobInputData.Vehicle; VehicleViewModel.SetVehicleInputData(vehicleInputData); - InputDataFilePath = inputData.DataSource.SourceFile; + VehicleInputDataFilePath = inputData.DataSource.SourceFile; LoadStageInputDataFollowUp(inputData); @@ -251,10 +252,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } - public string InputDataFilePath + public string VehicleInputDataFilePath { get => _vehicleInputDataFilePath; - set => SetProperty(ref _vehicleInputDataFilePath, value); + set + { + SetProperty(ref _vehicleInputDataFilePath, value); + _saveInputDataCommand?.NotifyCanExecuteChanged(); + } } #endregion diff --git a/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs index 3cf07d8a49..f2362460d5 100644 --- a/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs @@ -32,7 +32,7 @@ namespace Vecto3GUI2020Test.ViewModelTests var fileName = TestHelper.GetMethodName() + ".xml"; StageInput.SaveInputDataExecute(GetFullPath(fileName)); Assert.True(checkFileNameExists(fileName)); - Assert.AreEqual(GetFullPath(fileName), StageInput.InputDataFilePath); + Assert.AreEqual(GetFullPath(fileName), StageInput.VehicleInputDataFilePath); //Check if title is updated StringAssert.Contains(fileName, StageInput.Title); -- GitLab