Beispiel #1
0
        /// <summary>
        /// Will call SaveIfNeeded when closing the window.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Window_Closing(object sender, CancelEventArgs e)
        {
            var ok = await SaveIfNeeded();

            if (!ok)
            {
                e.Cancel = true;
            }
            else
            {
                var spreadsheetServiceClient = mySpreadsheetServiceClient;

                if (spreadsheetServiceClient != null)
                {
                    spreadsheetServiceClient.CellUpdated -= SpreadsheetServiceClient_CellUpdated;
                    mySpreadsheetServiceClient            = null;

                    await spreadsheetServiceClient.LeaveSession(mySpreadsheetName);

                    spreadsheetServiceClient.Dispose();
                }
            }

            return;
        }
        private async void JoinButton_Click(object sender, RoutedEventArgs e)
        {
            var parameters = myParameters;

            parameters.Password = MainPasswordBox.Password;

            if (!IsValid(parameters))
            {
                return;
            }

            EnableUI(false);

            SpreadsheetServiceClient spreadsheetServiceClient = null;
            JoinSessionResponse      response = null;
            string errorMessage;

            try
            {
                spreadsheetServiceClient = new SpreadsheetServiceClient();
                await spreadsheetServiceClient.Connect(parameters.Server);

                response = await spreadsheetServiceClient.JoinSession(parameters.SpreadsheetName, parameters.Password);

                errorMessage = response.ErrorMessage;
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message;
            }

            if (errorMessage == null)
            {
                new MainWindow(spreadsheetServiceClient, response).Show();
                Close();
            }
            else
            {
                spreadsheetServiceClient.Dispose();
                MessageBox.Show(this, "Unable to join the session:\r\n" + errorMessage, "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
                EnableUI(true);
            }

            return;
        }
        private async void CreateButton_Click(object sender, RoutedEventArgs e)
        {
            var parameters = myParameters;

            parameters.Password = MainPasswordBox.Password;

            if (!IsValid(parameters))
            {
                return;
            }

            EnableUI(false);

            CreateSessionResponse response;
            string errorMessage;

            try
            {
                using (var spreadsheetServiceClient = new SpreadsheetServiceClient())
                {
                    await spreadsheetServiceClient.Connect(parameters.Server);

                    response = await spreadsheetServiceClient.CreateSession(parameters.SpreadsheetName, parameters.Password);
                }
                errorMessage = response.ErrorMessage;
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message;
            }

            if (errorMessage == null)
            {
                MessageBox.Show(this, "Session created.", Title, MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                MessageBox.Show(this, "Unable to create a new session:\r\n" + errorMessage, "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            EnableUI(true);

            return;
        }
Beispiel #4
0
        /// <summary>
        /// initializes the MainWindow
        /// </summary>
        internal MainWindow(SpreadsheetServiceClient spreadsheetServiceClient, JoinSessionResponse joinSessionResponse)
        {
            mySpreadsheetServiceClient            = spreadsheetServiceClient;
            spreadsheetServiceClient.CellUpdated += SpreadsheetServiceClient_CellUpdated;

            InitializeComponent();

            myUpdateRowTimer = new Timer(UpdateRow);

            var viewModel = new ViewModel(this);

            myViewModel = viewModel;

            New(); // Create a new spread sheet with the data grid cleared and the name set to 'Untitled'.

            DataContext = viewModel;

            myCurrentColumn = MainDataGrid.Columns[0];
            myCurrentRow    = viewModel.Rows[0];
            SetFocusOnCurrentCell();

            Dispatcher.BeginInvoke(new Action <JoinSessionResponse>(joinSessionResponse0 => Load(joinSessionResponse0)), joinSessionResponse);
        }