protected override SolutionDocument NewCore(string fullFilePath)
        {
            SolutionDocumentType documentType = new SolutionDocumentType();
            if (fullFilePath
                .Substring(fullFilePath.Length - documentType.FileExtension.Length)
                .CompareTo(documentType.FileExtension) != 0)
            {
                fullFilePath = fullFilePath + documentType.FileExtension;
            }

            SolutionDocument document = documentType.New(fullFilePath) as SolutionDocument;
            return document;
        }
        private SolutionDocument NewSolutionCore(string fullFilePath)
        {
            if (String.IsNullOrWhiteSpace(Path.GetDirectoryName(fullFilePath)))
            {
                this.messageService.ShowError(shellService.ShellView, string.Format(CultureInfo.CurrentCulture, Resources.NewSolutionPathInvalid, fullFilePath));
                return null;
            }

            // Check if solution already exists
            if (Directory.Exists(Path.GetDirectoryName(fullFilePath)))
            {
                this.messageService.ShowError(shellService.ShellView, string.Format(CultureInfo.CurrentCulture, Resources.SolutionAlreadyExisted, Path.GetFileNameWithoutExtension(fullFilePath)));
                return null;
            }

            SolutionDocumentType documentType = new SolutionDocumentType();
            if (fullFilePath
                .Substring(fullFilePath.Length - documentType.FileExtension.Length)
                .CompareTo(documentType.FileExtension) != 0)
            {
                fullFilePath = fullFilePath + documentType.FileExtension;
            }

            SolutionDocument document = documentType.New(fullFilePath) as SolutionDocument;

            this.recentSolutionList.AddFile(fullFilePath);
            fileService.AddDocument(document);
            return this.fileService.SolutionDoc;
        }