Exemple #1
0
        public MainViewModel(
            IClosable mainWindow,
            IDataApiClient dataApiClient,
            UploadedFileProcessor uploadedFileProcessor,
            IObjectDatabase <DataSet> dataSetDatabase,
            IObjectDatabase <DataTag> tagDatabase,
            IObjectDatabase <DataProject> projectDatabase,
            IObjectDatabase <DataCollectionProtocol> protocolDatabase,
            IObjectDatabase <DataCollectionProtocolParameter> protocolParameterDatabase)
        {
            this.mainWindow                = mainWindow;
            this.dataApiClient             = dataApiClient;
            this.uploadedFileProcessor     = uploadedFileProcessor;
            this.dataSetDatabase           = dataSetDatabase;
            this.tagDatabase               = tagDatabase;
            this.projectDatabase           = projectDatabase;
            this.protocolDatabase          = protocolDatabase;
            this.protocolParameterDatabase = protocolParameterDatabase;

            var passwordBoxSpawner = new WpfPasswordBoxSpawner();
            var loginViewSpawner   = new WpfWindowSpawner <LoginViewModel>(vm => new LoginWindow {
                ViewModel = vm
            });
            var changePasswordViewSpawner = new WpfWindowSpawner <ChangePasswordViewModel>(vm => new ChangePasswordWindow {
                ViewModel = vm
            });

            UserSwitchViewModel = new UserSwitchViewModel(
                dataApiClient,
                LoginSuccessful,
                LoginFailed,
                passwordBoxSpawner,
                loginViewSpawner,
                changePasswordViewSpawner);
            ProjectAutoCompleteViewModel = new AutoCompleteTextBoxViewModel <DataProject>(
                x => x.Id,
                projectDatabase,
                new DataProjectAutoCompleteMatcher());
            ProjectAutoCompleteViewModel.PropertyChanged += ProjectAutoCompleteViewModel_PropertyChanged;
            DataSetAutoCompleteViewModel = new AutoCompleteTextBoxViewModel <DataSet>(
                x => x.Id,
                dataSetDatabase,
                new DataSetAutoCompleteMatcher(),
                allowNewValue: true,
                objectBuilder: id => new DataSet(id));
            CreateNewProjectCommand          = new RelayCommand(CreateNewProject);
            AddSelectedFilesToDataSetCommand = new AsyncRelayCommand(AddSelectedFilesToDataSet, CanAddSelectedFilesToDataSet);
            SelectAllCommand       = new RelayCommand(SelectAll, CanSelectAll);
            DeselectAllCommand     = new RelayCommand(DeselectAll, CanDeselectAll);
            OpenAboutWindowCommand = new RelayCommand(OpenAboutWindow);
        }
Exemple #2
0
        private void App_OnStartup(object sender, StartupEventArgs e)
        {
            StaticMessageBoxSpawner.Spawner = new WpfMessageBoxSpawner();
            StaticUiUpdateNotifier.Notifier = new WpfUiUpdateNotifier();
            var clipboard = new WpfClipboard();

            var startWindow = new StartupWindow {
                ApplicationName = "File uploader"
            };

            startWindow.Show();
            var apiConfiguration = new ApiConfiguration(
                Settings.Default.ApiServerAddress,
                Settings.Default.ApiServerPort);
            var dataApiClient = new DataApiClient(apiConfiguration);

            if (!dataApiClient.IsAvailable())
            {
                MessageBox.Show($"Cannot contact DataAPI @ '{apiConfiguration.ServerAddress}:{apiConfiguration.ServerPort}'. Shutting down...");
                Current.Shutdown(-1);
                return;
            }
            try
            {
                dataApiClient.Login();
            }
            catch
            {
                // Ignore. If Active Directory is not available, in some other way later.
            }

            var imageDatabase                 = new GenericDatabase <Image>(dataApiClient);
            var shortIdDatabase               = new GenericDatabase <ShortId>(dataApiClient);
            var dataSetDatabase               = new GenericDatabase <DataSet>(dataApiClient);
            var tagDatabase                   = new GenericDatabase <DataTag>(dataApiClient);
            var projectDatabase               = new GenericDatabase <DataProject>(dataApiClient);
            var protocolDatabase              = new GenericDatabase <DataCollectionProtocol>(dataApiClient);
            var protocolParameterDatabase     = new GenericDatabase <DataCollectionProtocolParameter>(dataApiClient);
            var dataBlobDatabase              = new GenericDatabase <DataBlob>(dataApiClient);
            var dataProjectUploadInfoDatabase = new GenericDatabase <DataProjectUploadInfo>(dataApiClient);

            var fileHandlers = new IFileHandler[]
            {
                new ImageFileHandler(imageDatabase)
            };
            var additionalInformationViewSpawner = new WpfAdditionalInformationViewSpawner();
            var fileManager = new UploadedFileProcessor(
                fileHandlers,
                dataApiClient,
                dataBlobDatabase,
                dataProjectUploadInfoDatabase,
                clipboard,
                additionalInformationViewSpawner);

            var mainWindow    = new MainWindow();
            var mainViewModel = new MainViewModel(
                mainWindow,
                dataApiClient,
                fileManager,
                dataSetDatabase,
                tagDatabase,
                projectDatabase,
                protocolDatabase,
                protocolParameterDatabase);

            mainWindow.ViewModel = mainViewModel;
            startWindow.Close();
            mainWindow.ShowDialog();
        }