`

关于编辑器

 
阅读更多

在IDE中编辑器是一个比较丰富的东西,它本身的操作比较丰富,另外就是它跟很多辅助的视图建立了很多联系。如果处理不好,会很难用实现起来也不爽。eclipse中目前编辑器都是基于gef框架进行实现的。

 

gef是一个MVC的三层结构,其实就算是不是gef,想合理实现一个编辑器,也应该采用这样一个结构。(设计模式比框架更宽泛,框架只是设计模型的具体体现)

 

编辑器的模型(model):

如果想你的IDE更灵活,那么编辑器的模型涉及到的不仅仅是业务层的模型,也就是编辑器需要编辑的文件的模型。你需要为你的所有的需要展现的视图建立一套自己的定制的和描述的模型。

例如,你要使你的属性视图可配置,就应该有描述属性视图中的属性显示的方式的模型。还有palette面板,也可以实现可配置,这样在添加新的组件的时候,不至于需要写一大堆东西。

属性视图的描述模型和palette的描述模型的模型都是描述某类型节点的,例如button拥有属性,那属性描述模型就是描述button(这一类)的而不是描述button1(这一个)的,palette的是一样的效果。所以,属性描述文件,palette描述文件和业务流程文件的对应关系是1:1:n的。

 

我自己在实现编辑器的时候,是把属性描述文件的root放到业务模型的root里面保存的,而palette描述文件的root是放到编辑器里面的。主要是因为属性描述文件一般在属性视图中用到,这样我在选中某个节点的时候,获得业务模型的时候,同事获取到属性描述模型。而palette描述文件是在编辑器中用到,所以不用放到业务模型中。

 

除了模型的设计以外,每个model的属性也要进行考虑,无论在那个系统中模型都是用于存放数据的,而数据的存放就涉及到一个数据类型的转换。我的思路是实现一个数据转换器,当需要转换的时候,传入属性的类型和数据。它就根据属性的类型把数据转换成某种类型的数据。另外在使用数据的时候,如果没有特殊情况,我都是传输字符串的,等到使用的时候才转换。

 

 

编辑器的控制(Control):

说道控制器,我就想起command,其实就是操作,只是换了个地方,换了个形式。只要稍加熟悉,会用这种方式创建command和响应就行了,不只是gef中,就算是其他的地方也就这个样。它的功能无非就是把电脑的输入端传递进来的操作,进行合理的变换,而这个变换就体现在view层上。

尽管如此,还是得提一下,因为编辑器和大纲,以及编辑器和属性视图的联动还是需要进行设计的。当然这个eclipse已经帮我们提供好了思路,思路的最根本原则就是,对方变我听的到,具体实现就不详述了。

 

编辑器的显示(view):

说实在的,尽管它跟其它的模块联系的紧密度最低,但是想做好也是很需要基本功的,这也是我一直想多练习练习的地方。其实一个任何带界面的软件,除了操作的简洁和响应的速度以外就数这个好看了,很重要。

 

 

 

 

分享到:
评论

相关推荐

    jiejie.rar_jiejie编辑器_serdir.d_www.7jiejie.com_ЛěЛě编辑器_七jiejie

    “serdir.d”和“www.7jiejie.com”可能是与该编辑器相关的域名或项目名称,暗示了该编辑器可能有一个在线社区或资源站点,用户可以在那里获取更多关于编辑器的信息、更新和用户支持。然而,具体细节需要进一步调查...

    vue+elmentui +ueditor编辑器 +数学公式 de 两个例子删除新增编辑器以及切换编辑器.zip

    在`src`目录下的Vue组件文件中,我们可以找到关于编辑器实例化的代码,可能使用了`mounted`生命周期钩子来确保在DOM加载完成后初始化编辑器。 对于"切换编辑器内容出错"的问题,这可能涉及到多个编辑器实例之间的...

    asp网页编辑器

    在压缩包中,"说明.htm"是关于编辑器如何使用的文档,用户可以通过阅读它来了解编辑器的具体操作和配置方法。"kindeditor.js"和"kindeditor-min.js"是编辑器的核心JavaScript文件,分别代表完整版和压缩版,它们实现...

    网易qq 新浪编辑器

    1. **说明.htm**:这是一个HTML文件,通常用于提供关于编辑器的详细使用说明、功能介绍或者安装指南。 2. **SinaEditor.rar**:这可能是新浪编辑器的源代码或组件包,使用RAR格式压缩,用户可以解压后查看或应用编辑...

    Effidit文涌编辑器v0.1 AI辅助写作工具.zip

    压缩包内的"Effidit文涌编辑器v0.1 AI辅助写作工具.txt"文件可能是介绍、说明文档,包含了关于编辑器的详细信息,如安装指南、使用方法、功能介绍以及可能的API文档等。用户可以通过阅读此文件来了解如何有效利用这...

    富文本编辑器markitup

    开发者可以通过这些链接获取更多关于编辑器和服务器集成的知识,比如如何在服务器端处理编辑器提交的内容,或者如何在不同的服务器环境下部署和运行编辑器。 `latest`这个文件名可能是指最新版本的更新日志或者下载...

    ace 编辑器 git源码

    通过研究Ace编辑器的源码,我们可以学习到关于编辑器设计、文本处理、语言模式识别和事件驱动编程等多个方面的知识。同时,熟悉其API和配置选项,可以让我们更有效地利用Ace编辑器来满足项目中的各种需求,例如添加...

    西门子关于编辑器交互主题的SIMATIC S7网络广播.pdf

    给定的文件内容涉及西门子SIMATIC S7系列的网络广播演示系统,特别是以STEP 7 V11和WinCC V11为配套的TIA Portal,这是一个综合的工程系统,主要介绍其在编辑器交互方面的优势和功能。 STEP 7 V11与WinCC V11结合的...

    AuroraGT动画编辑器

    4. **SpriteEditor.txt、GameEditor.txt、AuroraGT.txt**:这些是文本文件,可能包含了关于编辑器特定部分的说明或教程,如精灵编辑器、游戏编辑器的使用细节,或者AuroraGT编辑器本身的概述。 5. **使用说明.txt**...

    大容量编辑器

    5. Readme.txt:通常包含有关软件的基本信息、安装指南、使用注意事项等内容,用户应先阅读此文件以获取更多关于编辑器的使用信息。 综合以上信息,我们可以得出“大容量编辑器”是一个专为处理大型文件设计的、...

    一款新浪的非常好用的在线编辑器

    用户可以访问这个网站获取更多关于编辑器的使用指南、技巧以及可能的插件和扩展,进一步提升编辑体验。 总的来说,新浪在线编辑器凭借其易用性、强大的功能和出色的用户体验,成为了一款值得信赖的在线编辑工具。...

    Pascal语言编辑器

    "说明.txt"文件可能包含了关于编辑器的使用指南、版本信息以及许可协议等,对于初学者来说,这是了解和掌握编辑器操作的重要资源。而"更多实用小工具.url"可能是一个链接,指向一个包含其他编程辅助工具的网站或者...

    UG GRIP 代码编辑器

    用户可以通过查阅这个CHM文件获取关于编辑器的所有操作说明和功能解释。 "自定义语句.edb" 和 "自定义语句.edt" 文件可能是用于存储用户自定义的语句或宏,它们可能允许用户扩展编辑器的功能,定制自己的编程环境,...

    kindeditor在线HTML代码编辑器

    `README.txt`和`LICENCE.txt`则是关于编辑器的使用说明和许可协议,对如何合法地使用和分发软件做了详细的规定。 至于`skins`目录,它通常包含编辑器的皮肤和样式文件,允许用户根据网站设计自定义编辑器的外观。...

    自动排版编辑器,编辑者的好帮手

    这可能是指编辑器的安装包、程序文件或者是一份关于编辑器的使用指南。如果这是一个安装包,用户在下载后可以按照提示进行安装,享受自动排版带来的便利;如果是使用指南,那么里面将包含详细的软件操作步骤、快捷键...

    编辑器代码

    【描述】:虽然描述为空,但我们可以推测“编辑器代码”可能是指一个特定的编辑器项目或者一篇关于编辑器使用的博客文章。根据提供的博文链接,我们可以访问到iteye.com上的一个博客,博主lixue150分享了关于编辑器...

    袖珍在线编辑器,一个小的Html编辑器

    - **程序说明.txt、系统说明.txt**:这些文件提供了关于编辑器的使用说明和系统需求,帮助用户更好地理解和操作编辑器。 - **ASP300工具条.url、ASP300使用注意.url**:这两个URL可能指向ASP300相关的工具条资源或...

    as3 45度视角 地图游戏编辑器 源码

    1. "说明.html":这通常包含关于编辑器的使用指南、功能介绍以及可能的故障排除信息。用户可以在这里找到如何启动编辑器、创建新地图、导入资源等操作的步骤。 2. "Eb163MapEditor_code_1_6_2":这个名字暗示这可能...

Global site tag (gtag.js) - Google Analytics