Udvidede sammenligningsteknikker

Dette afsnit indeholder flere oplysninger om udvidet API i en sammenlignings-plugin.

Skriv sammenligningsfunktioner

En sammenligningsfunktion skal implementeres som en underklasse til CompareEditorInput.  En CompareEditorInput udfører en (evt. langvarig) sammenligningsfunktion under statusovervågningskontrol, opretter et UI med henblik på at gå længere ned i sammenligningsresultaterne, sporer det ikke-færdige resultat i tilfælde af fletning og gemmer eventuelle ændringer, der er foretaget under en sammenfletning.

CompareUI definerer det indgangspunkt, der skal starte en konfigurérbar sammenligningsfunktion i forbindelse med vilkårlige ressourcer. Resultatet af sammenligningen åbnes i en sammenligningseditor, hvor du kan gennemse og redigere oplysningerne i dynamisk udvalgte fremvisningsfunktioner til struktur og indhold.

NavigationAction bruges til at navigere (gå) gennem de enkelte forskelle i en CompareEditorInput.

CompareConfiguration konfigurerer forskellige UI-aspekter af fremvisningsfunktioner til sammenligning/fletning, f.eks. titeletiketter og billeder, eller om en del af en fremvisningsfunktion til sammenfletning kan redigeres. Den sendes til CompareEditorInput efter oprettelsen.

Når en hierarkisk sammenligningsfunktion implementeres som en underklasse til CompareEditorInput, skal klienterne stille en trækstruktur med objekter til rådighed, hvor hver node implementerer grænsefladen IStructureComparator. Grænsefladen bruges af det hierarkiske differentierende program Differencer) til at gå igennem træstrukturen.
Derudover skal hver enkelt blad i træstrukturen implementere grænsefladen IStreamContentAccessor for at give det differentierende program adgang til sit stream-indhold.

BufferedContent stiller en standardimplementering til rådighed for grænsefladerne IStreamContentAccessor og IContentChangeNotifier. Dens underordnede klasse ResourceNode tilføjer en implementering til grænsefladerne IStructureComparator og ITypedElement, baseret på platformens arbejdsbænkressourcer IResource). Den kan bruges uden ændringer som input til det differentierende program.

Sammenlign funktionalitet uden sammenligningseditorer

Hvis du vil sammenligne funktionalitet uden standardsammenligningseditoren (f.eks. i en dialogboks eller guide), stiller plugin-funktionen til sammenligning yderligere hjælperklasser til rådighed.

CompareViewerPane er en bekvem klasse, som omfatter en etiket og en lokal værktøjslinje til en fremvisningsfunktion til sammenligning (eller til en hvilken som helst anden underklasse til en JFace-fremvisningsfunktion). Dens underordnede abstract-klasseCompareViewerSwitchingPane understøtter aktivering/deaktivering af dynamisk fremvisningsfunktion, dvs. at den fremvisningsfunktion, som er installeret i delvinduet, bestemmes dynamisk af inputobjektet i delvinduet.

EditionSelectionDialog er en enkel valgdialogboks, hvor et inputelement kan sammenlignes med en liste over historiske varianter (udgaver) af det samme inputelement. Dialogboksen bruges til at implementere funktioner som f.eks. "Erstat med lokal historik" på arbejdsbænkressourcer.

Desuden er det muligt at angive et underafsnit af inputelementet (f.eks. en metode i en Java-kildefil) vha. en sti. I dette tilfælde sammenligner dialogboksen kun underafsnittet (som angivet af stien) med det tilsvarende underafsnit i listen over udgivelser. Denne funktionalitet kan bruges til at implementere "Erstat med element fra lokal historik" til Java-elementer.

EditionSelectionDialog kræver, at udgaverne implementerer grænsefladerne IStreamContentAccessor og IModificationDate. HistoryItem er en bekvemmelighedsklasse, som implementerer disse grænseflader til IFileState-objekter.