/// <summary>
        /// Shows OpenFileDialog.
        /// </summary>
        /// <returns>TextEditorDocument with read data.</returns>
        public ITextEditorDocument OpenFile()
        {
            Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();

            if (ofd.ShowDialog() == false)
            {
                return null;
            }

            string filename = ofd.FileName;
            FileReaderStrategy fileReader = new DefaultFileReader(filename);

            return this.readWithReaderStrategy(filename, fileReader);
        }
        /// <summary>
        /// Reads file at 'filename' using encoding 'encodingName'.
        /// </summary>
        /// <param name="fileName">Path to file.</param>
        /// <param name="encodingName">Name of encoding to use.</param>
        /// <returns>New TextEditorDocument with data from 'fileName'.</returns>
        public ITextEditorDocument OpenFileUsingEncoding(string fileName, Encoding encoding)
        {
            FileReaderStrategy fileReader;
            if (encoding == Encoding.ASCII)
            {
                fileReader = new ASCIIFileReader(fileName);
            }
            else if (encoding == Encoding.UTF8)
            {
                fileReader = new UTF8FileReader(fileName);
            }
            else if (encoding == Encoding.Unicode)
            {
                fileReader = new UnicodeFileReader(fileName);
            }
            else
            {
                fileReader = new DefaultFileReader(fileName);
            }

            return this.readWithReaderStrategy(fileName, fileReader);
        }