Az összehasonlító bedolgozó segítségével speciális megjelenítőket biztosíthat a strukturálatlan elemek közötti tartalomkülönbségek megjelenítéséhez és összefésüléséhez.
A tartalommegjelenítő olyan helyeken használhatók, ahol csak egy bemenet áll rendelkezésre, ezért nincs szükség összehasonlításra. Egy jellemző példa erre a "Visszaállítás helyi előzményből" funkció. A org.eclipse.compare.contentViewers kiterjesztési pont segítségével megadhat egy speciális tartalommegjelenítőt, amely nem hasonlítja össze a bemeneteket.
<extension point="org.eclipse.compare.contentViewers"> <viewer extensions="java,java2" class="org.eclipse.jdt.internal.ui.compare.JavaTextViewerCreator" id="org.eclipse.jdt.internal.ui.compare.JavaTextViewerCreator"> </viewer> <contentTypeBinding contentTypeId="org.eclipse.jdt.core.javaSource" contentViewerId="org.eclipse.jdt.internal.ui.compare.JavaTextViewerCreator"> </contentTypeBinding> </extension>
A bedolgozó által közreadott speciális megjelenítő a megjelenítő elemben kerül megjelölésre. Meg kell adni a megjelenítő azonosítóját és az osztályt, amely létrehozza. Tetszőleges fájl kiterjesztéseket is megadhat, amelyekhez a tartalommegjelenítőt használni kell.
A contentTypeBinding elemet is használhatja tartalomtípus tartalommegjelenítőhöz rendeléséhez.
A tartalomösszefésülés-megjelenítő két- vagy három lépésben hasonlítja össze a bemeneteket, és megjeleníti az eredményt oldalról-oldalra vagy egyéb tetszőleges módon. A megjelenítő segítségével a felhasználó összefésülheti a bemeneteket. Az összefésülés-megjelenítők szöveg és képek esetén közösek.
Ha a szabványos összefésülés-megjelenítők nem működnek megfelelően a bedolgozó funkciójához, akkor saját tartalomösszefésülés-megjelenítő valósítható meg. A tartalomösszefésülés-megjelenítőt a org.eclipse.compare.contentMergeViewers kiterjesztési pont segítségével be kell jegyezni a platformhoz. Az alábbi leírónyelv megjeleníti a megadott tartalomösszefésülés-megjelenítő definícióját a Java fájlok és tulajdonságfájlok Java IDE-ben megjelenítéséhez:
<extension point="org.eclipse.compare.contentMergeViewers"> <viewer extensions="java,java2" class="org.eclipse.jdt.internal.ui.compare.JavaContentViewerCreator" id="org.eclipse.jdt.internal.ui.compare.JavaContentViewerCreator"> </viewer> <contentTypeBinding contentTypeId="org.eclipse.jdt.core.javaProperties" contentMergeViewerId="org.eclipse.compare.TextMergeViewerCreator"> </contentTypeBinding> <contentTypeBinding contentTypeId="org.eclipse.jdt.core.javaSource" contentMergeViewerId="org.eclipse.jdt.internal.ui.compare.JavaContentViewerCreator"> </contentTypeBinding> </extension>
A tartalommegjelenítőkhöz hasonlóan a bedolgozó által közreadott speciális összefésülés-megjelenítők a megjelenítő elemben kerülnek kijelölésre. Meg kell adni a megjelenítő azonosítóját és az osztályt, amely létrehozza. Tetszőleges fájlkiterjesztéseket is megadhat, amelyekhez a tartalomösszefésülés-megjelenítőt használni kell.
A tartalommegjelenítőkhöz hasonlóan a contentTypeBinding segítségével hozzárendelhet egy tartalomtípust egy összefésülés-megjelenítőhöz. A JDT bedolgozó két különböző tartalomtípushoz köti a tartalomösszefésülés-megjelenítőt: a Java forráshoz és a Java tulajdonságfájlhoz.
A ContentMergeViewer egy absztrakt összehasonlítás- és összefésülés-megjelenítő két oldalankénti tartalomterülettel és egy esetleges tartalomterületet egy közös őshöz (háromlépéses összehasonlításhoz). Mivel a megvalósítás nem tesz feltevéseket a tartalomtípussal kapcsolatban, az alosztály felelős az adott tartalomtípus kezeléséért.
Az org.eclipse.compare.internal elemben lévő ImageMergeViewer megjeleníti, hogy a ContentMergeViewer segítségével a képekhez hogyan valósítható meg egy egyszerű összefésülés-megjelenítő. A ContentMergeViewer egy tartalomszolgáltató segítségével éri el a modellt, amelynek a IMergeViewerContentProvider felületet kell megvalósítania.
Ha a megjelenítő szöveget használ, akkor további osztályok használhatók, amelyek összehasonlítják és összefésülik a tartalmat.
A TextMergeViewer a ContentMergeViewer konkrét alosztálya, amely a szöveges tartalom összehasonlítására és összefésülésére használható. A szövegösszefésülés-megjelenítő a RangeDifferencer segítségével elvégzi a két (vagy három) bemeneti dokumentum szöveges, soronkénti összehasonlítását.
Különböző szövegsorok esetén a TextMergeViewer egy ITokenComparator segítségével keresi meg a leghosszabb egyező és különböző jelsorszekvenciát. A TextMergeViewer alapértelmezett jelsor-összehasonlítója a szóközszerű karakterekkel határolt karaktereken működik. Ha másik stratégiára van szükség (például jelsorok a Java futtatására képes összefésülés-megjelenítőben), akkor az ügyfelek a ITokenComparator felület megvalósításával saját jelsor-komparátorokat hozhatnak létre.
A TextMergeViewer a teljes dokumentumon és a dokumentumok részein működik. Részleges dokumentumok esetén a megjelenítő bemenetének IDocumentRange elemnek kell lennie IDocument helyett.
A RangeDifferencer megkeresi a leghosszabb egyező és különböző összehasonlítható entitásokat a szöveges kontextusban. Ennek megvalósítása az algoritmus objektumokkal megvalósított változatán alapul, melynek leírását az alábbi kiadvány tartalmazza: A File Comparison Program, by Webb Miller and Eugene W. Myers, Software Practice and Experience, Vol. 15, Nov. 1985. Az ügyfeleknek egy bemenetet kell szolgáltatniuk a különbségkimutatóhoz, amely megvalósítja az IRangeComparator felületet. A IRangeComparator a bemeneti adatokat entitássorozatokra tördeli, és egy metódust biztosít egy entitás másik IRangeComparator elemben lévő entitással összehasonlításához.
Két szöveges dokumentum összehasonlításához, illetve a leghosszabb egyező és különböző sorok kikereséséhez például az IRangeComparator megvalósításnak a dokumentumokat sorokra kell tördelnie és egy metódust kell biztosítania a teszteléshez attól függően, hogy két sort egyezőnek ítél-e. Ennek végrehajtását az org.eclipse.compare.internal.DocLineComparator rész mutatja be.
A különbségkimutató a szekvenciák közötti különbséggel tér vissza a RangeDifference objektumok tömbjeként. Minden RangeDifference leírja a különbség típusát (nincs módosítás, módosítás, hozzáadás, törlés) és az alapul szolgáló összehasonlítható entitások megfelelő tartományát a két vagy három bemenetben.