实现结构查看器

结构合并查看器对其输入执行两方或三方比较,在分层视图中显示结果,并让用户合并输入。结构合并查看器对于工作区资源或归档文件的成员是公共的。

与树形结构相似的结构查看器

因为许多结构比较查看器的实现都是基于树的,所以比较插件提供了基于树的类属 StructureDiffViewer。插件负责提供将单个输入对象分为分层结构的结构创建程序StructureDiffViewer 执行对生成结构的比较并将结果显示为树。

使用 org.eclipse.compare.structureCreators 扩展为插件指定结构创建程序。

其它分层结构查看器

在某些情况下,基于树的 StructureDiffViewer 可能不适用于您的插件。org.eclipse.compare.structureMergeViewers 扩展点允许您为结构合并查看器定义您自己的实现。提供了实用程序类来帮助您实现查看器。

区分器

Differencer 是分层结构数据的求差引擎。它接收两个或三个输入并对它们执行两方或三方比较。

如果求差引擎的输入元素实现了 IStructureComparator 接口,则该引擎以递归方式将其本身应用于输入元素的子代。叶元素必须实现 IStreamContentAccessor 接口,以便区分器执行对其内容的字节比较。

有几个示例较好地演示了包括在平台实现中的区分器:

缺省情况下,区分引擎将比较操作的结果作为 DiffNode 对象的树返回。DiffNode 描述两个或三个输入之间的更改。可以通过覆盖引擎的单个方法来更改结果节点的类型。

差别查看器

可以将 DiffNode 树显示在 DiffTreeViewer 中。 DiffTreeViewer 要求树的内部节点实现 IDiffContainer 接口并且各叶实现 IDiffElement 接口。

比较分层结构数据和显示差别的典型步骤如下:

  1. 将输入数据映射到对象树内将实现 IStructureComparatorIStreamContentAccessor 接口
  2. 通过 Differencer 执行比较操作
  3. 将差别结果送入 DiffTreeViewer
StructureDiffViewer 是一个专用的 DiffTreeViewer,它使上面这些步骤自动化。它接收单个类型为 ICompareInput 的输入对象,并从中检索两个或三个要进行比较的输入元素。它使用 IStructureCreator 来从中抽取包含 IStructureComparatorIStreamContentAccessor 对象的树。然后,将这些树与求差引擎作比较,并将结果显示在树查看器中。

ZipFileStructureCreatorIStructureCreator 接口的实现,并以 IStructureComparator 的分层结构的形式提供 ZIP 归档的内容,求差引擎 (Differencer)可以很容易地比较它。这个示例很好地演示了如何使结构化文件可供比较插件的分层比较功能使用。

Copyright IBM Corporation and others 2000, 2003.