胖胖的blog

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一个文件的诞生

根据上面的说明,我们对Sharpdevelop有了基本的了解,下面我们就逐步深入进去,一点点对我们感兴趣的功能进行分析。

对于一个IDE来说,最根本的功能还是创建一个文件然后进行编辑,我们就从创建文件着手,看看在Sharpdevelop里面是如何来实现的。

简单起见,假设我们已经创建了一个C#项目,叫Test,并且我们现在打开了这个项目,我们下一步要做的就是添加一个叫Hello的类。

首先,我们会在Project PadVS里叫解决方案资源管理器)上的项目节点上点击右键,在弹出菜单选择Add->New Item…,这时系统会调用ICSharpCode.SharpDevelop.Project.Commands.AddNewItemsToProject(ICSharpCode.SharpDevelop->Src->GUI->Pad->ProjectBrowser->Commands->FolderNodeCommands.cs文件中)Run方法。Run方法会进一步调用AddNewItems方法,在AddNewItems方法里系统会先找到项目节点,然后创建一个弹出新建文件对话框NewFileDialog,并且把项目节点的路径传递给该对话框。在这个新建文件对话框里会列出各种类型的文件,我们选择C#Class类型,然后把File Name改为Hello.cs,最后在Class模板图标上双击或者在Create按钮上单击都会调用NewFileDialogOpenEvent方法。在OpenEvent方法里,前半部分主要是为PropertyServiceStringParser设置一些辅助信息,并且取得选定的模板对象,对我们来说最关键的部分是这一行代码:

SaveFile(newfile, scriptRunner.CompileScript(item.Template, newfile), null);

我们转入到SaveFile方法去看一下,对于该方法,第一个参数是要保存的文件,第二个是文件的内容,第三个可以先不用考虑。该方法的前两行代码是取得文件名和文件内容,主要使用StringParserParse方法来完成的,我们需要注意的是,在前面我们给StringParser提供了一些辅助参数,所以在这里才可以取得文件名和文件内容。下面的代码需要注意的是这行代码:

IViewContent viewContent = FileService.NewFile(Path.GetFileName(parsedFileName), parsedContent);

这个NewFile方法会在内存中创建出这个代码文件,并且根据文件的扩展名绑定到合适的代码显示类上,然后在主窗口内显示该文件视图。

viewContent对象被创建出后,就可以调用它的viewContent.PrimaryFile.SaveToDisk(parsedFileName)方法把文件内容保存到硬盘上。

执行完SaveFile方法后,文件就被创建出来并且在IDE中显示。

OpenEvent方法的最后还有几行代码,主要是触发文件创建事件,目的是在有版本控制工具的情况下进行相应的处理。

至此,一个文件就诞生了。

posted on 2010-04-30 16:54  小胖胖  阅读(742)  评论(1编辑  收藏  举报