高级

本节提供关于比较插件中的高级 API 的附加信息。

编写比较操作

比较操作必须作为 CompareEditorInput 的子类实现。CompareEditorInput 在进度监视器控制之下运行比较操作(可能非常冗长)、创建用于向下浏览至比较结果的 UI、跟踪结果的脏状态(对于合并)并保存合并期间所发生的任何更改。

CompareUI 定义用来对任意资源启动可配置比较操作的入口点。比较结果在比较编辑器中打开,在该编辑器中,可使用动态选择的结构和内容查看器来浏览和编辑详细信息。

NavigationAction 用来浏览(步进)CompareEditorInput 的个别差别。

CompareConfiguration 配置比较/合并查看器的各种用户界面方面,如标题标号和图像,或者合并查看器的某一方是否可编辑。在创建时,将把它传送至 CompareEditorInput

在将分层比较操作作为 CompareEditorInput 的子类实现时,客户机必须提供对象树,其中每个节点实现接口 IStructureComparator。此接口由分层求差引擎 (Differencer)用来浏览树。
此外,树的每一叶必须实现 IStreamContentAccessor 接口才能给予求差引擎对其流内容的访问权。

BufferedContent 提供 IStreamContentAccessorIContentChangeNotifier 接口的缺省实现。它的子类 ResourceNode 根据工作台资源(IResource)添加 IStructureComparatorITypedElement 接口的实现。可以将其不加修改地用作求差引擎的输入。

比较编辑器外部的比较功能

如果想要在标准比较编辑器外部(例如,在对话框或向导中)使用比较功能,比较插件提供了附加 helper 类。

CompareViewerPane 是一个很有用的类,它为比较查看器(或 JFace 查看器的任何其它子类)提供标号和本地工具栏。 它的抽象子类 CompareViewerSwitchingPane 支持动态查看器切换,即安装在窗格内的查看器由窗格的输入对象动态确定。

EditionSelectionDialog 是一个简单的选择对话框,可在其中将一个输入元素与同一输入元素的历史变体(版本)的列表进行比较。该对话框用来对工作台资源实现功能(如替换为本地历史记录”)。

另外,有可能通过路径来指定输入元素的子段(例如,Java 源文件中的方法)。在此情况下,对话框只将该子节(由路径指定)与版本列表中的对应子节作比较。此功能可用来为 Java 元素实现替换为本地历史记录中的元素”

EditionSelectionDialog 要求版本实现 IStreamContentAccessorIModificationDate 接口。 HistoryItem 是一个很有用的类,它为 IFileState 对象实现这些接口。

 

Copyright IBM Corporation and others 2000, 2003.