本节提供关于比较插件中的高级 API 的附加信息。
比较操作必须作为 CompareEditorInput 的子类实现。CompareEditorInput 在进度监视器控制之下运行比较操作(可能非常冗长)、创建用于向下浏览至比较结果的 UI、跟踪结果的脏状态(对于合并)并保存合并期间所发生的任何更改。
CompareUI 定义用来对任意资源启动可配置比较操作的入口点。比较结果在比较编辑器中打开,在该编辑器中,可使用动态选择的结构和内容查看器来浏览和编辑详细信息。
NavigationAction 用来浏览(步进)CompareEditorInput 的个别差别。
CompareConfiguration 配置比较/合并查看器的各种用户界面方面,如标题标号和图像,或者合并查看器的某一方是否可编辑。在创建时,将把它传送至 CompareEditorInput。
在将分层比较操作作为 CompareEditorInput
的子类实现时,客户机必须提供对象树,其中每个节点实现接口
IStructureComparator。此接口由分层求差引擎
(Differencer)用来浏览树。
此外,树的每一叶必须实现 IStreamContentAccessor
接口才能给予求差引擎对其流内容的访问权。
BufferedContent 提供 IStreamContentAccessor 和 IContentChangeNotifier 接口的缺省实现。它的子类 ResourceNode 根据工作台资源(IResource)添加 IStructureComparator 和 ITypedElement 接口的实现。可以将其不加修改地用作求差引擎的输入。
如果想要在标准比较编辑器外部(例如,在对话框或向导中)使用比较功能,比较插件提供了附加 helper 类。
CompareViewerPane 是一个很有用的类,它为比较查看器(或 JFace 查看器的任何其它子类)提供标号和本地工具栏。 它的抽象子类 CompareViewerSwitchingPane 支持动态查看器切换,即安装在窗格内的查看器由窗格的输入对象动态确定。
EditionSelectionDialog 是一个简单的选择对话框,可在其中将一个输入元素与同一输入元素的历史变体(版本)的列表进行比较。该对话框用来对工作台资源实现功能(如“替换为本地历史记录”)。
另外,有可能通过路径来指定输入元素的子段(例如,Java 源文件中的方法)。在此情况下,对话框只将该子节(由路径指定)与版本列表中的对应子节作比较。此功能可用来为 Java 元素实现“替换为本地历史记录中的元素”。
EditionSelectionDialog 要求版本实现 IStreamContentAccessor 和 IModificationDate 接口。 HistoryItem 是一个很有用的类,它为 IFileState 对象实现这些接口。