Ejemplo n.º 1
0
        public WorkflowEditorViewModel(ISelectedProfileProvider selectedProfileProvider,
                                       ITranslationUpdater translationUpdater, MetadataViewModel metadataViewModel,
                                       IEnumerable <IActionFacade> actionFacades, IInteractionRequest interactionRequest,
                                       ITokenViewModelFactory tokenViewModelFactory,
                                       IEventAggregator eventAggregator, ICommandLocator commandLocator) : base(translationUpdater)
        {
            _selectedProfileProvider = selectedProfileProvider;
            _translationUpdater      = translationUpdater;
            _interactionRequest      = interactionRequest;
            _tokenViewModelFactory   = tokenViewModelFactory;
            _eventAggregator         = eventAggregator;
            _commandLocator          = commandLocator;

            ActionFacades      = actionFacades;
            _metadataViewModel = metadataViewModel;

            RemoveActionCommand          = new DelegateCommand(ExecuteRemoveAction);
            EditActionCommand            = new DelegateCommand(ExecuteEditAction);
            OpenAddActionOverviewCommand = new DelegateCommand(OpenAddActionOverview);

            SetMetaDataCommand     = new DelegateCommand(async _ => await OpenEditDialog(ViewProvider.MetaDataOverlay, Translation.MetadataTab));
            SetSaveCommand         = new DelegateCommand(async _ => await OpenEditDialog(ViewProvider.SaveOverlay, Translation.Save));
            SetOutputFormatCommand = new DelegateCommand(async _ => await OpenEditDialog(ViewProvider.OutputFormatOverlay, Translation.OutputFormat));
            SetPrinterCommand      = new DelegateCommand(async _ => await OpenEditDialog((ViewProvider as ServerWorkflowEditorSubViewProvider)?.PrinterOverlay, Translation.OutputFormat));

            PreparationDropTarget   = new WorkflowEditorActionDropTargetHandler <IPreConversionAction>();
            ModifyDropTarget        = new WorkflowEditorActionDropTargetHandler <IConversionAction>();
            ModifyDragSourceHandler = new WorkflowEditorActionDragSourceHandler(obj =>
            {
                var facade           = (IActionFacade)obj;
                var isAssignableFrom = typeof(IFixedOrderAction).IsAssignableFrom(facade.SettingsType);
                return(!isAssignableFrom);
            });
            SendDropTarget = new WorkflowEditorActionDropTargetHandler <IPostConversionAction>();

            _translationUpdater.RegisterAndSetTranslation(tf => _metadataViewModel.SetTokenViewModels(tokenViewModelFactory));

            if (_selectedProfileProvider != null)
            {
                _selectedProfileProvider.SelectedProfileChanged += SelectedProfileOnPropertyChanged;
            }
        }
        public WorkflowEditorViewModel(ISelectedProfileProvider selectedProfileProvider,
                                       ITranslationUpdater translationUpdater,
                                       IEnumerable <IActionFacade> actionFacades,
                                       IInteractionRequest interactionRequest,
                                       IEventAggregator eventAggregator,
                                       ICommandLocator commandLocator,
                                       IWorkflowEditorSubViewProvider viewProvider,
                                       ICommandBuilderProvider commandBuilderProvider,
                                       IDispatcher dispatcher
                                       ) : base(translationUpdater, selectedProfileProvider, dispatcher)
        {
            _interactionRequest = interactionRequest;
            _eventAggregator    = eventAggregator;
            _commandLocator     = commandLocator;

            ActionFacades = actionFacades;

            RemoveActionCommand          = new DelegateCommand(ExecuteRemoveAction);
            EditActionCommand            = new DelegateCommand(ExecuteEditAction);
            OpenAddActionOverviewCommand = new DelegateCommand(OpenAddActionOverview);

            var UpdateSettingsPreviewsCommand = new DelegateCommand(o => UpdateSettingsPreviews());

            SetMetaDataCommand = commandBuilderProvider.ProvideBuilder(_commandLocator)
                                 .AddInitializedCommand <WorkflowEditorCommand>(c => c.Initialize(viewProvider.MetaDataOverlay, t => t.MetaData))
                                 .AddCommand(UpdateSettingsPreviewsCommand)
                                 .Build();

            SetSaveCommand = commandBuilderProvider.ProvideBuilder(_commandLocator)
                             .AddInitializedCommand <WorkflowEditorCommand>(c => c.Initialize(viewProvider.SaveOverlay, t => t.Save))
                             .AddCommand(UpdateSettingsPreviewsCommand)
                             .Build();

            SetOutputFormatCommand = commandBuilderProvider.ProvideBuilder(_commandLocator)
                                     .AddInitializedCommand <WorkflowEditorCommand>(c => c.Initialize(viewProvider.OutputFormatOverlay, t => t.OutputFormat))
                                     .AddCommand(UpdateSettingsPreviewsCommand)
                                     .Build();

            SetPrinterCommand = commandBuilderProvider.ProvideBuilder(_commandLocator)
                                .AddInitializedCommand <WorkflowEditorCommand>(c => c.Initialize((viewProvider as ServerWorkflowEditorSubViewProvider)?.PrinterOverlay, t => t.Printer))
                                .Build();

            PreparationDropTarget   = new WorkflowEditorActionDropTargetHandler <IPreConversionAction>();
            ModifyDropTarget        = new WorkflowEditorActionDropTargetHandler <IConversionAction>();
            ModifyDragSourceHandler = new WorkflowEditorActionDragSourceHandler(obj =>
            {
                var facade           = (IActionFacade)obj;
                var isAssignableFrom = typeof(IFixedOrderAction).IsAssignableFrom(facade.SettingsType);
                return(!isAssignableFrom);
            });

            SendDropTarget = new WorkflowEditorActionDropTargetHandler <IPostConversionAction>();

            selectedProfileProvider.SelectedProfileChanged += SelectedProfileOnPropertyChanged;

            eventAggregator.GetEvent <WorkflowSettingsChanged>().Subscribe(() =>
            {
                GenerateCollectionViewsOfActions();
                UpdateSettingsPreviews();
            });
        }