public void OpenFile(string fileName)
        {
            FileUtilityService fileUtilityService = (FileUtilityService)ServiceManager.Services.GetService(typeof(FileUtilityService));

            Debug.Assert(fileUtilityService.IsValidFileName(fileName));

            // test, if file fileName exists
            if (!fileName.StartsWith("http://"))
            {
                // test, if an untitled file should be opened
                if (!Path.IsPathRooted(fileName))
                {
                    foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection)
                    {
                        if (content.IsUntitled && content.UntitledName == fileName)
                        {
                            content.SelectView();
                            return;
                        }
                    }
                }
                else if (!fileUtilityService.TestFileExists(fileName))
                {
                    return;
                }
            }
            //检查当前文件有没有在视图中打开过.
            foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection)
            {
                // WINDOWS DEPENDENCY : ToUpper()
                if (content.ContentName != null &&
                    content.ContentName.ToUpper() == fileName.ToUpper())
                {
                    //content.SelectView();
                    MessageBox.Show("该文件已经打开!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
            }

            ViewTypeService viewTypeService = (ViewTypeService)ServiceManager.Services.GetService(typeof(ViewTypeService));

            IFileService fileService = (IFileService)ServiceManager.Services.GetService(typeof(IFileService));
            IViewType    viewType    = viewTypeService.GetViewTypePerFileName(fileName);

            if (viewType != null)
            {
                LoadFileWrapper            fileWrapper = new LoadFileWrapper(viewType);
                NamedFileOperationDelegate nameFileOperationDelegate = new NamedFileOperationDelegate(fileWrapper.Invoke);
                FileOperationResult        result = fileUtilityService.ObservedLoad(nameFileOperationDelegate, fileName);
                if (result == FileOperationResult.OK)                  //如果当前文档打开成功,则把当前打开的文档添加到最近打开的列表中.
                {
                    fileService.RecentOpenMemeto.AddLastFile(fileName);
                }
            }
            else
            {
                throw new ApplicationException("Can't open " + fileName + ", no display codon found.");
            }
        }
        public void NewFile(string defaultName, string language, string content)
        {
            ViewTypeService viewTypeService = (ViewTypeService)ServiceManager.Services.GetService(typeof(ViewTypeService));

            IViewType viewType = viewTypeService.GetViewTypePerLanguageName(language);

            if (viewType != null)
            {
                IViewContent newContent = viewType.CreateContentForLanguage(language, content);
                newContent.UntitledName = defaultName;
                newContent.IsDirty      = false;
                WorkbenchSingleton.Workbench.ShowView(newContent);
            }
            else
            {
                throw new ApplicationException("Can't create display binding for language " + language);
            }
        }