/// <summary>
        /// Handles the Click event of the Open control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RoutedEventArgs"/> instance containing the event data.</param>
        private void Open_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog()
            {
                Filter = FILE_FILTER
            };

            while (true)
            {
                if (dialog.ShowDialog() == true)
                {
                    try
                    {
                        StopAll();
                        InstructionsTextBox.Document.Blocks.Clear();
                        string script = File.ReadAllText(dialog.FileName);

                        GlobalData = new GlobalData();

                        if (script.Contains(GLOBAL_AND_INSTRUCTIONS_SEPARATOR))
                        {
                            string[] splitted = script.Split(GLOBAL_AND_INSTRUCTIONS_SEPARATOR.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                            try
                            {
                                GlobalData = JsonConvert.DeserializeObject <GlobalData>(splitted[0]);
                            }
                            catch
                            {
                                MessageBox.Show("Error deserializing the global values. Using default values.");
                            }

                            InstructionsTextBox.Document.Blocks.Add(StringManager.ConvertStringToBlock(splitted[1].Trim()));
                        }
                        else
                        {
                            MessageBox.Show("Couldn't distinguish between global values and instructions.");
                            InstructionsTextBox.Document.Blocks.Add(StringManager.ConvertStringToBlock(script));
                        }

                        break;
                    }
                    catch
                    {
                        MessageBox.Show("File has wrong format or is corrupted.");
                    }
                }
                else
                {
                    break;
                }
            }
        }
        /// <summary>
        /// Handles the Click event of the Save control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RoutedEventArgs"/> instance containing the event data.</param>
        private void Save_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog dialog = new SaveFileDialog()
            {
                Filter = FILE_FILTER
            };

            if (dialog.ShowDialog() == true)
            {
                try
                {
                    StopAll();
                    string serialized = JsonConvert.SerializeObject(GlobalData);
                    serialized += GLOBAL_AND_INSTRUCTIONS_SEPARATOR;
                    serialized += StringManager.ConvertRichTextBoxToString(InstructionsTextBox);
                    File.WriteAllText(dialog.FileName, serialized);
                }
                catch
                {
                    MessageBox.Show("Couldn't write to file.");
                }
            }
        }