The Eclipse Platform provides a Compare framework that allows resource-based clients, such as repository providers, to display comparisons using compare viewers that are provided by model tooling, such as Java. To aid model providers, the framework provides several facilities, such as content merge viewers, structure viewers, and a range differencing engine. Also to aid repository providers and other clients, the framework provides interfaces that define the comparison input along with default implementations of these interfaces. To further aid repository providers, the Team component provides a Synchronization framework for displaying the full context of a comparison in the Synchronize view and for allowing model providers to participate at this higher level in order to hide the file system layout of their models from the user if desired.
While the Compare framework is fairly flexible, it is also fairly complex and it is sometimes difficult to determine the proper way to implement particular features. In 3.3, we have made several improvements to the framework, such as file buffer support, asynchronous initialization and update and improved navigation and there is more work planned. In this talk we will discuss the current architecture of Compare and present some best practices for implementing both model provider and repository provider compare support.
Michael Valenta works for IBM Rational Software at their lab in Ottawa, Ontario. He is one of the original Eclipse Platform committers and is currently the lead for the Team, Compare and CVS components and is a UI component committer. He joined the Eclipse team after completing his PhD in Computer Science at Carleton University. During his studies, he was also a sessional lecturer at Carleton and an instructor in industry, teaching both Smalltalk and Java courses.