Avanserte sammenlikningsmetoder

Denne delen inneholder mer informasjon om avansert programmeringsgrensesnitt (API) i plugin-modulen for sammenlikning.

Skrive sammenlikningsoperasjoner

En sammenlikningsoperasjon må implementeres som en subklasse for CompareEditorInput.   CompareEditorInput kjører en (potensielt lang) sammenlikningsoperasjon under fremdriftsovervåkerkontroll, oppretter et brukergrensesnitt for drilldown i resultatet av sammenlikningen, sporer den urene tilstanden i resultatet ved en eventuell sammenslåing og lagrer eventuelle endringer som oppstår under en sammenslåing.

CompareUI definerer inngangspunktet som starter en konfigurerbar sammenlikningsoperasjon på vilkårlige ressurser. Resultatet av sammenlikningen vises i et redigeringsprogram for sammenlikninger der du kan bla gjennom og redigere detaljene i dynamisk valgte struktur- og innholdsvisningsprogrammer.

NavigationAction brukes til å navigere (gå) gjennom de individuelle forskjellene i CompareEditorInput.

CompareConfiguration konfigurerer de ulike brukergrensesnittsidene i visningsprogrammer for sammenlikning/sammenslåing som titteletiketter og -bilder, eller angir om en side i et visningsprogram for sammenslåing kan redigeres. Det sendes til CompareEditorInput ved opprettelse.

Når en hierarkisk sammenlikningsoperasjon implementeres som en subklasse for CompareEditorInput, må klienter oppgi et tre med objekter der hver node implementerer grensesnittet IStructureComparator. Dette grensesnittet brukes av den hierarkiske sammenlikningsmotoren (Differencer) for å gå gjennom treet.
I tillegg må hvert løv i treet implementere grensesnittet IStreamContentAccessor slik at sammenlikningsmotoren får tilgang til innholdet i datastrømmen.

BufferedContent tilbyr en standard implementering for grensesnittene IStreamContentAccessor og IContentChangeNotifier. Subklassen ResourceNode legger til en implementering for grensesnittene IStructureComparator og ITypedElement, basert på plattformens arbeidsbenkressurser (IResource). Den kan brukes uten endring som inndata for sammenlikningsmotoren.

Sammenlikne funksjonalitet utenfor redigeringsprogram for sammenlikninger

Hvis du vil sammenlikne funksjonalitet utenfor standard redigeringsprogrammet for sammenlikning (for eksempel i en dialogboks eller veiviser), inneholder plugin-modulen for sammenlikning flere hjelpeklasser.

CompareViewerPane er en bekvemmelighetsklasse som inneholder en etikett og lokal verktøylinje for et visningsprogram for sammenlikning (eller andre subklasser i et JFace-visningsprogram).   Den abstrakte subklassen CompareViewerSwitchingPane støtter bytting mellom dynamiske visningsprogram, det vil si at visningsprogrammet som installeres i ruten angis dynamisk av inndataobjektet i ruten.

EditionSelectionDialog er en enkel dialogboks der ett inndataelement kan sammenliknes med en liste over historiske varianter (utgaver) av samme inndataelement. Dialogboksen brukes til å implementere funksjoner som "Erstatt med lokal historikk" i arbeidsbenkressurser.

Det er dessuten mulig å angi en underseksjon av inndataelementet (for eksempel en metode i en Java-kildefil) ved hjelp en bane. I slike tilfeller sammenlikner dialogboksen bare underseksjonen (i henhold til banespesifikasjonen) med tilsvarende underseksjon på listen over redigeringsprogrammer. Denne funksjonaliteten kan brukes til å implementere "Erstatt med element fra lokal historikk" for Java-elementer.

EditionSelectionDialog krever at utgavene implementerer grensesnittene IStreamContentAccessor og IModificationDate. HistoryItem er en bekvemmelighetsklasse som implementerer grensesnitt for IFileState-objekter.