基于 JFace Text Framework 构建全功能代码编辑器: 第 10 部分:Text Formatting
2010-03-18 00:00:00 来源:WEB开发网Text Formatting
Text Formatting(文本格式化)可以快速的将源代码按照预定的规则排版,JTF 只是定义了这个框架,将其发挥到极致的是 JDT。打开 Eclipse 的设置页,找到 General->Java->Code Style->Formatter,你会发现在这里可以编辑名目繁多的格式化选项。JDT 提供的代码格式化功能强大的令人眩目,但本文的目的是介绍这个强大功能下的基础设施。
IFormattingStrategy
IFormattingStrategy(格式化策略)是格式化真正完成的地方,它代表一种格式化的方式。格式化策略是和文本类型相关联的,所以可以为每一种文本类型创建一个格式化策略,这是 JTF 的一个基本做法,你还能回忆起还有哪些功能是和文本类型绑定在一起的吗?这个接口有一个扩展接口 IFormattingStrategyExtension,它引入了 Formatting Context(格式化上下文)的概念,下面会有介绍。
IContentFormatter
IContentFormatter 是最基本的接口,它代表了一个格式化器。既然实际的格式化工作应该放到 IFormattingStrategy 中,那 IContentFormatter 做什么呢?可以说,它基本上相当于一个调度器,它会决定要格式化的内容具有什么样的文本类型,然后调用不同的 IFormattingStrategy 实现。不过,这只是推荐行为,你可以在 IContentFormatter 的实现里做任何事,但是不推荐刻意超越这个架构的约束。JTF有这个接口的缺省实现:ContentFormatter,一般我们直接使用它就可以了。
IFormattingContext
IFormattingContext 为格式化提供附加信息,它采用键值对的方式保存信息,所以你可以存任何格式化需要知道的东西。不过这是一个相对较新的接口,从 Eclipse 3.0 开始才出现,你实现了 IFormattingStrategyExtension 才需要用到它。记住,不要忘了查查是否每个接口都有扩展接口,也许你会有很多新的发现,因为 JTF 中到处都是,或者说 Eclipse 中到处都是扩展接口。
更多精彩
赞助商链接