Объединение нескольких потоков

Модуль поиска позволяет настроить вспомогательные панели, позволяющие пользователям объединять различные потоки содержимого. Однако в некоторых случаях может потребоваться возможность объединения потоков без вмешательства пользователя. Точка расширения org.eclipse.compare.streamMergers предоставляет класс, объединяющий три различных потока ввода в один поток вывода. Программу объединения потоков можно связать как с расширениями файлов, так и с конкретным типом содержимого. Модуль поиска задает программу объединения трех потоков обычного текста:

<extension
	point="org.eclipse.compare.streamMergers">
	<streamMerger
		extensions="txt"
		class="org.eclipse.compare.internal.merge.TextStreamMerger"
		id="org.eclipse.compare.internal.merge.TextStreamMerger">
	</streamMerger>
	<contentTypeBinding
		contentTypeId="org.eclipse.core.runtime.text"
		streamMergerId="org.eclipse.compare.internal.merge.TextStreamMerger">
	</contentTypeBinding>
</extension>

Свойства программы объединения потоков описываются с помощью элемента streamMerger. Необходимо указать элементы id и class, описывающие идентификатор программы объединения, а также класс, в котором она реализована. Кроме того, с помощью элемента extensions можно указать расширения файлов, связанные с этой программой.

Элемент contentTypeBinding позволяет связать с программой объединения тип содержимого.

Программы объединения потоков должны применять интерфейс IStreamMerger. Это простой интерфейс, объединяющий содержимое трех различных потоков ввода в один поток вывода. Сложность реализации зависит от модуля и типов содержимого.

Новые интерфейсы IStreamMerger для зарегистрированных типов создаются с помощью методов createStreamMerger, входящих в состав CompareUI.