고급 비교 기술

이 절에서는 비교 플러그인의 고급 API에 대한 추가 정보를 제공합니다.

비교 작업 작성

비교 작업은 CompareEditorInput의 서브클래스로 구현되어야 합니다. CompareEditorInput은 진행 모니터 제어하에서 비교 작업을 실행하고(길어질 수 있음), 비교 결과를 드릴 다운하기위한 UI를 작성하고, 병합의 경우 잘못된 결과 상태를 추적하고, 병합 중에 발생한 변경사항을 저장합니다.

CompareUI에서는 임의의 자원에서 구성 가능한 비교 작업을 시작하기 위한 시작점을 정의합니다. 동적으로 선택한 구조와 컨텐츠 편집기에서 세부사항을 찾아보고 편집할 수 있는 비교 편집기에서 비교 결과가 열립니다.

NavigationAction을 사용하여 CompareEditorInput의 개별 차이점을 탐색합니다.

CompareConfiguration에서는 제목 레이블과 이미지 또는 병합 표시기측이 편집 가능한지 등과 같은 비교/병합 표시기의 다양한 UI 특성을 구성합니다. 이것은 작성 시 CompareEditorInput으로 전달됩니다.

계층 구조 비교 작업을 CompareEditorInput의 서브클래스로 구현할 경우 클라이언트는 모든 노드가 인터페이스 IStructureComparator를 구현하는 오브젝트의 트리를 제공해야 합니다. 계층 구조 차별 엔진(차별기)에서 이 인터페이스를 사용하여 트리를 탐색합니다.
또한 차별 엔진 액세스를 해당 스트림 컨텐츠에 제공하려면 트리의 모든 리프에서 IStreamContentAccessor 인터페이스를 구현해야 합니다.

BufferedContent에서는 IStreamContentAccessorIContentChangeNotifier 인터페이스를 위한 기본 구현을 제공합니다. 해당 서브클래스 ResourceNode에서는 플랫폼 Workbench 자원(IResource)을 기준으로 IStructureComparatorITypedElement 인터페이스를 위한 구현을 추가합니다. 이를 수정하지 않고 차별 엔진에 대한 입력으로 사용할 수 있습니다.

비교 편집기 외부에서 기능 비교

표준 비교 편집기 외부(예: 대화 상자나 마법사)에서 비교 기능을 사용할 경우, 비교 플러그인에서는 다음과 같은 추가 헬퍼 클래스를 제공합니다.

CompareViewerPane은 비교 표시기(또는 JFace 표시기의 서브클래스)에 대한 레이블과 로컬 도구 모음을 제공하는 편의 클래스입니다. 해당하는 추상 서브클래스 CompareViewerSwitchingPane에서는 동적 표시기 전환을 지원합니다. 즉 분할창의 입력 오브젝트에서 분할창에 설치된 표시기를 동적으로 결정합니다.

EditionSelectionDialog는 하나의 입력 요소를 동일한 입력 요소의 히스토리 변형판 목록(개정판)과 비교할 수 있는 단순한 선택사항 대화 상자입니다. 대화 상자를 사용하여 Workbench 자원에 "로컬 히스토리와 바꾸기" 같은 기능을 구현합니다.

그리고 경로를 통해 입력 요소(예: Java 소스 파일의 메소드)의 서브 섹션을 지정할 수 있습니다. 이 경우 대화 상자에서는 경로에서 지정한 서브 섹션만 개정판 목록에서 해당하는 서브 섹션과 비교합니다. 이 기능을 사용하여 Java 요소에 대해 로컬 히스토리의 요소와 바꾸기를 구현할 수 있습니다.

EditionSelectionDialog에서는 개정판에서 IStreamContentAccessorIModificationDate 인터페이스를 구현해야 합니다. HistoryItemIFileState 오브젝트에 대해 이 인터페이스를 구현하는 편의 클래스입니다.