结构合并查看器对其输入执行两方或三方比较,在分层视图中显示结果,并让用户合并输入。结构合并查看器对于工作区资源或归档文件的成员是公共的。
因为许多结构比较查看器的实现都是基于树的,所以比较插件提供了基于树的类属 StructureDiffViewer。插件负责提供将单个输入对象分为分层结构的结构创建程序。StructureDiffViewer 执行对生成结构的比较并将结果显示为树。
使用 org.eclipse.compare.structureCreators 扩展为插件指定结构创建程序。
在某些情况下,基于树的 StructureDiffViewer 可能不适用于您的插件。org.eclipse.compare.structureMergeViewers 扩展点允许您为结构合并查看器定义您自己的实现。提供了实用程序类来帮助您实现查看器。
Differencer 是分层结构数据的求差引擎。它接收两个或三个输入并对它们执行两方或三方比较。
如果求差引擎的输入元素实现了 IStructureComparator 接口,则该引擎以递归方式将其本身应用于输入元素的子代。叶元素必须实现 IStreamContentAccessor 接口,以便区分器执行对其内容的字节比较。
有几个示例较好地演示了包括在平台实现中的区分器:
缺省情况下,区分引擎将比较操作的结果作为 DiffNode 对象的树返回。DiffNode 描述两个或三个输入之间的更改。可以通过覆盖引擎的单个方法来更改结果节点的类型。
可以将 DiffNode 树显示在 DiffTreeViewer 中。 DiffTreeViewer 要求树的内部节点实现 IDiffContainer 接口并且各叶实现 IDiffElement 接口。
比较分层结构数据和显示差别的典型步骤如下:
ZipFileStructureCreator 是 IStructureCreator 接口的实现,并以 IStructureComparator 的分层结构的形式提供 ZIP 归档的内容,求差引擎 (Differencer)可以很容易地比较它。这个示例很好地演示了如何使结构化文件可供比较插件的分层比较功能使用。