public MainViewModel( IDialogService dialogService, IViewStateService viewStateService, IFontColourLookupService fontColourLookupService, IFontFamilyLookupService fontFamilyLookupService, IFontZoomLookupService fontZoomLookupService, IFileModelService fileModelService) { if (dialogService is null) { throw new ArgumentNullException(nameof(dialogService)); } if (viewStateService is null) { throw new ArgumentNullException(nameof(viewStateService)); } if (fontColourLookupService is null) { throw new ArgumentNullException(nameof(fontColourLookupService)); } if (fontFamilyLookupService is null) { throw new ArgumentNullException(nameof(fontFamilyLookupService)); } if (fontZoomLookupService is null) { throw new ArgumentNullException(nameof(fontZoomLookupService)); } if (fileModelService is null) { throw new ArgumentNullException(nameof(fileModelService)); } _fileModelService = fileModelService; _dialogService = dialogService; _dialogService.DialogDone += OnDialogDone; const string filter = "Text Documents|*.txt|All files (*.*)|*.*"; _openFileDialog = _dialogService.GetFileDialog <OpenFileDialog>(); if (_openFileDialog != null) { _openFileDialog.Filter = filter; } _saveFileDialog = _dialogService.GetFileDialog <SaveFileDialog>(); if (_saveFileDialog != null) { _saveFileDialog.Filter = filter; } _viewStateService = viewStateService; ViewState = _viewStateService.Open(); FontColours = fontColourLookupService.GetIndex(); ApplySelectedOnFontColour(); FontFamilyNames = fontFamilyLookupService.GetIndex(); ApplySelectedOnFontFamily(); _fontZoomIndex = fontZoomLookupService.GetIndex(); _defaultZoom = fontZoomLookupService.GetDefault().Zoom; _isFontZoomMin = ViewState.SelectedFontZoom.Key == _fontZoomIndex.First().Key; _isFontZoomMax = ViewState.SelectedFontZoom.Key == _fontZoomIndex.Last().Key; _busyRegister = new List <string>(); SelectedItem = new FileModel(); NewCmd = new RelayCommand(OnNew, () => CanExecute); OpenCmd = new RelayCommand(OnOpen, () => CanExecuteOpen); SaveCmd = new RelayCommand(OnSave, () => CanExecute); SaveAsCmd = new RelayCommand(OnSaveAs, () => CanExecute); ExitCmd = new RelayCommand(OnExit, () => CanExecute); FindCmd = new RelayCommand(OnFind, () => CanExecuteFind); FindNextCmd = new RelayCommand(OnFindNext, () => CanExecuteFindNext); EscCmd = new RelayCommand(OnEsc, () => CanExecuteEsc); ReplaceCmd = new RelayCommand(OnReplace, () => CanExecuteReplace); GoToCmd = new RelayCommand(OnGoTo, () => CanExecute); TimeDateCmd = new RelayCommand(OnTimeDate, () => CanExecute); WordWrapCmd = new RelayCommand(OnWordWrap, () => CanExecute); ZoomInCmd = new RelayCommand(OnZoomIn, () => CanExecuteZoomIn); ZoomOutCmd = new RelayCommand(OnZoomOut, () => CanExecuteZoomOut); RestoreDefaultZoomCmd = new RelayCommand( OnRestoreDefaultZoom, () => CanExecute); StatusBarCmd = new RelayCommand(OnStatusBar, () => CanExecute); HelpCmd = new RelayCommand(OnHelp, () => CanExecute); AboutCmd = new RelayCommand(OnAbout, () => CanExecute); FontColourCmd = new RelayCommand <FontColourModel>( OnFontColour, (b) => CanExecute); FontFamilyCmd = new RelayCommand <FontFamilyModel>( OnFontFamily, (b) => CanExecute); PrettifyJsonCmd = new RelayCommand( OnPrettifyJson, () => CanExecutePrettifyJson); _findDialog = _dialogService .GetDialogViewModel <IFindDialogViewModel>(); if (_findDialog != null) { _findDialog.FindNextRaisedByDialog += OnFindNextRaisedByDialog; _findDialog.ReplaceCmd = ReplaceCmd; _findDialog.GoToCmd = GoToCmd; _findDialog.PropertyChanged += OnFindDialogPropertyChanged; } _replaceDialog = _dialogService .GetDialogViewModel <IReplaceDialogViewModel>(); if (_replaceDialog != null) { _replaceDialog.FindNextRaisedByDialog += OnFindNextRaisedByDialog; _replaceDialog.ReplaceRaisedByDialog += OnReplaceRaisedByDialog; _replaceDialog.ReplaceAllRaisedByDialog += OnReplaceAllRaisedByDialog; _replaceDialog.FindCmd = FindCmd; _replaceDialog.GoToCmd = GoToCmd; _replaceDialog.PropertyChanged += OnFindDialogPropertyChanged; } }
public void Init() { _fontZoomLookupService = new FontZoomLookupService(); _fontFamilyLookupService = new FontFamilyLookupService(); _fontColourLookupService = new FontColourLookupService(); var exampleViewStateModel = new ViewStateModel( _fontColourLookupService.GetDefault(), _fontFamilyLookupService.GetDefault(), _fontZoomLookupService.GetDefault()); var mockViewStateService = new Mock <IViewStateService>(); mockViewStateService.Setup(s => s.Open()) .Returns(exampleViewStateModel); _viewStateService = mockViewStateService.Object; MockDialogService = new Mock <IDialogService>(); MockDialogService.Setup( s => s.GetFileDialog <OpenFileDialog>()) .Returns(It.IsAny <OpenFileDialog>()); MockDialogService.Setup( s => s.GetFileDialog <SaveFileDialog>()) .Returns(It.IsAny <SaveFileDialog>()); var mockGoToVm = new Mock <IGoToDialogViewModel>(); mockGoToVm.SetupGet(vm => vm.LineNumber) .Returns(DefaultLineToGoTo); MockDialogService.Setup( s => s.GetDialogViewModel <IGoToDialogViewModel>()) .Returns(mockGoToVm.Object); var findVm = new FindDialogViewModel(); MockDialogService.Setup( s => s.GetDialogViewModel <IFindDialogViewModel>()) .Returns(findVm); var replaceVm = new ReplaceDialogViewModel(); MockDialogService.Setup( s => s.GetDialogViewModel <IReplaceDialogViewModel>()) .Returns(replaceVm); MockDialogService.Setup( s => s.ShowDialog(mockGoToVm.Object)).Returns(true); _dialogService = MockDialogService.Object; var mockFileModelService = new Mock <IFileModelService>(); // TODO mock Load and Save _fileModelService = mockFileModelService.Object; MainVm = new MainViewModel( _dialogService, _viewStateService, _fontColourLookupService, _fontFamilyLookupService, _fontZoomLookupService, _fileModelService); MainVm.SelectedItem.Content = DefaultContent; MainVm.GoToRequested += OnGoToRequested; }