Example #1
0
        public async void OnOperationClick(object sender, ItemClickEventArgs e)
        {
            if (!(e.ClickedItem is OperationListViewItemViewModel selectedOperation))
            {
                return;
            }

            var editOperationDialog = new OperationDialog(new OperationDialogViewModel(selectedOperation.Model, selectedOperation.ViewType, _toastService, _localizationService))
            {
                PrimaryButtonText = _localizationService.GetTranslateByKey(Localization.Save),
                CloseButtonText   = _localizationService.GetTranslateByKey(Localization.Cancel)
            };
            await editOperationDialog.ShowAsync();

            switch (editOperationDialog.Result)
            {
            case DialogResult.Save:
                await _model.UpdateOperation(selectedOperation.Model, GetCancellationToken());
                await UpdateOperations();

                break;

            case DialogResult.Delete:
                await _model.DeleteOperation(selectedOperation.Model, GetCancellationToken());
                await UpdateOperations();

                break;
            }
        }
Example #2
0
        public async void OnAddOperationClick(object sender, RoutedEventArgs e)
        {
            var newOperation        = new OperationListViewItemViewModel(_model.CreateNewOperation(), _localizationService);
            var editOperationDialog = new OperationDialog(new OperationDialogViewModel(newOperation.Model, newOperation.ViewType, _toastService, _localizationService))
            {
                PrimaryButtonText = _localizationService.GetTranslateByKey(Localization.Save),
                CloseButtonText   = _localizationService.GetTranslateByKey(Localization.Cancel)
            };
            await editOperationDialog.ShowAsync();

            if (editOperationDialog.Result == DialogResult.Save)
            {
                await _model.SaveOperation(newOperation.Model, GetCancellationToken());
                await UpdateOperations();
            }
        }
Example #3
0
        public MainWindow(IInteractionService interactions)
        {
            InitializeComponent();

            ViewModel = Application.Current // get the bootstrapper from App resources
                        .FindResource("MainWindowViewModel") as IMainWindowViewModel;

            this.interactions = interactions ?? Locator.Current.GetService <IInteractionService>();

            IDisposable activation = null;

            activation = this.WhenActivated(disposables =>
            {
                activation
                .DisposeWith(disposables);

                this // ViewModel -> DataContext
                .WhenAnyValue(v => v.ViewModel)
                .BindTo(this, v => v.DataContext)
                .DisposeWith(disposables);

                this // KeyDown -> ViewModel.KeyDown
                .WhenAnyValue(v => v.ViewModel)
                .Select(_ => this.Events().KeyDown)
                .BindTo(ViewModel, vm => vm.KeyDown)
                .DisposeWith(disposables);

                this // Handle GetNodeColor interaction
                .interactions
                .GetNodeColor
                .RegisterHandler(async interaction =>
                {
                    var dialog = new ColorDialog
                    {
                        Color = interaction.Input     // dialog edits what the node sent here
                    };

                    await this.ShowMetroDialogAsync(dialog);
                    var isAccepted = await dialog.WaitUntilClosedAsync();
                    await this.HideMetroDialogAsync(dialog);

                    if (isAccepted)
                    {
                        interaction.SetOutput(dialog.Color);     // return new color
                    }
                    else
                    {
                        interaction.SetOutput(interaction.Input);     // return old color
                    }
                })
                .DisposeWith(disposables);

                this
                .interactions
                .GetNodeOperation
                .RegisterHandler(async interaction =>
                {
                    var dialog = new OperationDialog
                    {
                        Operation = interaction.Input     // dialog edits what the node sent here
                    };

                    await this.ShowMetroDialogAsync(dialog);
                    var isAccepted = await dialog.WaitUntilClosedAsync();
                    await this.HideMetroDialogAsync(dialog);

                    if (isAccepted)
                    {
                        interaction.SetOutput(dialog.Operation);     // return new operation
                    }
                    else
                    {
                        interaction.SetOutput(interaction.Input);     // return old operation
                    }
                })
                .DisposeWith(disposables);
            });
        }