Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles')
-rw-r--r--bundles/org.eclipse.compare/.classpath7
-rw-r--r--bundles/org.eclipse.compare/.cvsignore1
-rw-r--r--bundles/org.eclipse.compare/.project37
-rw-r--r--bundles/org.eclipse.compare/.settings/org.eclipse.jdt.core.prefs70
-rw-r--r--bundles/org.eclipse.compare/about.html30
-rw-r--r--bundles/org.eclipse.compare/build.properties18
-rw-r--r--bundles/org.eclipse.compare/buildnotes_compare.html87
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java130
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java450
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java815
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java323
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java151
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java369
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java1128
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java109
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/ICompareNavigator.java34
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java30
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java39
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java70
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/IEncodedStreamContentAccessor.java39
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java31
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java41
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java36
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamMerger.java69
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java68
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java34
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/NavigationAction.java94
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java215
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/Splitter.java129
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java322
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java1043
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java54
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java155
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java57
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java4303
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties98
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html45
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java38
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryAction.java139
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryAction.properties45
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java475
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BaseCompareAction.java43
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java117
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java29
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties22
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java98
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java128
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java53
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java59
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java124
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java260
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java106
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareFilter.java397
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java33
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties58
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java158
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareOutlinePage.java106
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java389
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java1155
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java20
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties38
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java78
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java202
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocumentManager.java65
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java237
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java133
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ICompareContextIds.java53
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java21
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IOpenable.java24
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IResourceProvider.java23
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ISavable.java19
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java41
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java26
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java139
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java145
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java30
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties32
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java49
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java90
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java410
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java44
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java199
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java35
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/OverlayPreferenceStore.java452
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java20
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties40
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java21
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java163
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java423
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java26
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/SimpleTextViewer.java65
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/StreamMergerDescriptor.java47
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/StructureCreatorDescriptor.java57
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TabFolderLayout.java53
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java31
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java32
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java175
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java592
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java65
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java19
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java69
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/MergeMessages.java33
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/MergeMessages.properties15
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java97
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java154
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java102
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java132
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java532
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java134
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java19
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java33
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties91
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java135
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java1081
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java740
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/package.html113
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java77
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java60
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java57
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java208
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java536
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html44
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java107
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java93
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java365
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java727
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties53
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java529
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java358
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java142
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java38
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java62
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java61
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java45
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java110
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java375
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html79
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gifbin348 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gifbin361 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gifbin373 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gifbin351 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gifbin354 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/next_nav.gifbin152 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/prev_nav.gifbin152 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gifbin330 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gifbin235 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gifbin225 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dtool16/conflict_edit.gifbin142 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gifbin247 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gifbin623 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/copy_l_co.gifbin607 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/copy_r_co.gifbin625 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gifbin582 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gifbin578 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/next_nav.gifbin332 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/prev_nav.gifbin322 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/smartmode_co.gifbin553 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/syncpane_co.gifbin604 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gifbin376 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/etool16/conflict_edit.gifbin204 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/etool16/ignorews_edit.gifbin619 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/eview16/compare_view.gifbin224 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/obj16/day_obj.gifbin594 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/obj16/resource_obj.gifbin535 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/add_ov.gifbin186 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/chg_ov.gifbin187 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/confadd_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/confchg_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/confdel_ov.gifbin192 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/del_ov.gifbin184 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/error_ov.gifbin179 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/inadd_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/inchg_ov.gifbin191 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/indel_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/outadd_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/outchg_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/outdel_ov.gifbin188 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gifbin196 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gifbin188 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/icons/full/wizban/applypatch_wizban.gifbin3398 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/old_buildnotes_compare_3_0.html1557
-rw-r--r--bundles/org.eclipse.compare/plugin.properties216
-rw-r--r--bundles/org.eclipse.compare/plugin.xml368
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/.classpath7
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/.cvsignore1
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/.project37
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/.settings/org.eclipse.jdt.core.prefs70
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/about.html30
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/build.properties18
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html87
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java130
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java450
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java815
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java323
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java151
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java369
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java1128
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java109
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ICompareNavigator.java34
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java30
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java39
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java70
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IEncodedStreamContentAccessor.java39
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java31
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java41
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java36
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IStreamMerger.java69
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java68
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java34
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/NavigationAction.java94
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java215
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/Splitter.java129
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java322
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java1043
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java54
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java155
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java57
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java4303
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties98
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html45
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java38
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryAction.java139
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryAction.properties45
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java475
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BaseCompareAction.java43
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java117
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java29
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties22
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java98
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java128
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java53
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java59
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java124
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java260
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java106
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareFilter.java397
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java33
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties58
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java158
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareOutlinePage.java106
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java389
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java1155
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java20
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties38
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java78
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java202
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DocumentManager.java65
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java237
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java133
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ICompareContextIds.java53
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java21
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IOpenable.java24
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IResourceProvider.java23
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ISavable.java19
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java41
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java26
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java139
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java145
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java30
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties32
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java49
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java90
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java410
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java44
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java199
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java35
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/OverlayPreferenceStore.java452
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java20
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties40
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java21
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java163
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java423
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java26
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/SimpleTextViewer.java65
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/StreamMergerDescriptor.java47
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/StructureCreatorDescriptor.java57
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TabFolderLayout.java53
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java31
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java32
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java175
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java592
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java65
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java19
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java69
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/MergeMessages.java33
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/MergeMessages.properties15
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java97
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Attic/LineReader.java134
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java154
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java102
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java132
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java532
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java134
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java19
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java33
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties91
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java135
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java1081
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java740
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/package.html113
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java77
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java60
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java57
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java208
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java536
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html44
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java107
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java93
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java365
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java727
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties53
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java529
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java358
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java142
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java38
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java62
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java61
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java45
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java110
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java375
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html79
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gifbin348 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gifbin361 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gifbin373 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gifbin351 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gifbin354 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/next_nav.gifbin152 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/prev_nav.gifbin152 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gifbin330 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gifbin235 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gifbin225 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/conflict_edit.gifbin142 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gifbin247 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gifbin623 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_l_co.gifbin607 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_r_co.gifbin625 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gifbin582 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gifbin578 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/next_nav.gifbin332 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/prev_nav.gifbin322 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/smartmode_co.gifbin553 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/syncpane_co.gifbin604 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gifbin376 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/conflict_edit.gifbin204 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/ignorews_edit.gifbin619 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/eview16/compare_view.gifbin224 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/day_obj.gifbin594 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/resource_obj.gifbin535 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/add_ov.gifbin186 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/chg_ov.gifbin187 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confadd_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confchg_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confdel_ov.gifbin192 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/del_ov.gifbin184 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/error_ov.gifbin179 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inadd_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inchg_ov.gifbin191 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/indel_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outadd_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outchg_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outdel_ov.gifbin188 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gifbin190 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gifbin196 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gifbin188 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/wizban/applypatch_wizban.gifbin3398 -> 0 bytes
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/old_buildnotes_compare_3_0.html1557
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.properties216
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.xml368
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/schema/contentMergeViewers.exsd149
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/schema/contentViewers.exsd148
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/schema/streamMergers.exsd154
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/schema/structureCreators.exsd147
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/schema/structureMergeViewers.exsd150
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/scripts/exportplugin.xml30
-rw-r--r--bundles/org.eclipse.compare/schema/contentMergeViewers.exsd149
-rw-r--r--bundles/org.eclipse.compare/schema/contentViewers.exsd148
-rw-r--r--bundles/org.eclipse.compare/schema/streamMergers.exsd154
-rw-r--r--bundles/org.eclipse.compare/schema/structureCreators.exsd147
-rw-r--r--bundles/org.eclipse.compare/schema/structureMergeViewers.exsd150
-rw-r--r--bundles/org.eclipse.compare/scripts/exportplugin.xml30
-rw-r--r--bundles/org.eclipse.team.core/.classpath7
-rw-r--r--bundles/org.eclipse.team.core/.cvsignore1
-rw-r--r--bundles/org.eclipse.team.core/.options10
-rw-r--r--bundles/org.eclipse.team.core/.project30
-rw-r--r--bundles/org.eclipse.team.core/about.html30
-rw-r--r--bundles/org.eclipse.team.core/build.properties14
-rw-r--r--bundles/org.eclipse.team.core/buildnotes_team.html547
-rw-r--r--bundles/org.eclipse.team.core/plugin.properties17
-rw-r--r--bundles/org.eclipse.team.core/plugin.xml165
-rw-r--r--bundles/org.eclipse.team.core/schema/defaultFileModificationValidator.exsd96
-rw-r--r--bundles/org.eclipse.team.core/schema/fileTypes.exsd112
-rw-r--r--bundles/org.eclipse.team.core/schema/ignore.exsd110
-rw-r--r--bundles/org.eclipse.team.core/schema/projectSets.exsd119
-rw-r--r--bundles/org.eclipse.team.core/schema/repository.exsd134
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/DefaultRepositoryProviderType.java18
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/IFileTypeInfo.java39
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/IIgnoreInfo.java40
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/IProjectSetSerializer.java69
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamStatus.java48
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/ProjectSetCapability.java268
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/ProjectSetSerializationContext.java82
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/RepositoryProvider.java666
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/RepositoryProviderType.java174
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/Team.java601
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamException.java128
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamStatus.java55
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/package.html20
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/ActiveChangeSet.java213
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/ChangeSet.java183
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/ChangeSetCollector.java210
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/CheckedInChangeSet.java32
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/IChangeSetChangeListener.java58
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/ISubscriberChangeEvent.java75
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/ISubscriberChangeListener.java36
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/Subscriber.java334
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/SubscriberChangeEvent.java77
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/SubscriberChangeSetCollector.java566
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/package.html50
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/synchronize/FastSyncInfoFilter.java225
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/synchronize/ISyncInfoSetChangeEvent.java68
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/synchronize/ISyncInfoSetChangeListener.java77
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/synchronize/ISyncInfoTreeChangeEvent.java53
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/synchronize/SyncInfo.java474
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/synchronize/SyncInfoFilter.java94
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/synchronize/SyncInfoSet.java650
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/synchronize/SyncInfoTree.java353
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/synchronize/package.html61
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/AbstractResourceVariantTree.java272
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/CachedResourceVariant.java282
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/IResourceVariant.java84
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/IResourceVariantComparator.java61
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/IResourceVariantTree.java88
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ISynchronizerChangeListener.java30
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/PersistantResourceVariantByteStore.java179
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ResourceVariantByteStore.java135
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ResourceVariantTree.java117
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ResourceVariantTreeSubscriber.java185
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/SessionResourceVariantByteStore.java145
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ThreeWayRemoteTree.java117
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ThreeWayResourceComparator.java93
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ThreeWaySubscriber.java174
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/ThreeWaySynchronizer.java519
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/variants/package.html80
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/Assert.java108
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/BackgroundEventHandler.java429
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/DefaultFileModificationValidator.java114
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/DefaultMoveDeleteHook.java101
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/DefaultProjectSetCapability.java26
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/ExceptionCollector.java157
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java109
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/IJobListener.java26
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/InfiniteSubProgressMonitor.java91
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/MoveDeleteManager.java116
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/NullSubProgressMonitor.java65
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/PessimisticResourceRuleFactory.java68
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/Policy.java117
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/ResourceVariantCache.java247
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/ResourceVariantCacheEntry.java216
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/Sorter.java67
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/StringMatcher.java398
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/TeamHookDispatcher.java89
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/TeamPlugin.java161
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/messages.properties126
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/simpleAccess/SimpleAccessOperations.java267
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/CRLFtoLFInputStream.java155
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/LFtoCRLFInputStream.java146
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/PollingInputStream.java189
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/PollingOutputStream.java189
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/ProgressMonitorInputStream.java139
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/SizeConstrainedInputStream.java138
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/TimeoutInputStream.java325
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/TimeoutOutputStream.java289
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/BatchingLock.java339
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/ContentComparator.java142
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/DescendantResourceVariantByteStore.java183
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SubscriberEventHandler.java490
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SubscriberResourceCollector.java244
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SubscriberSyncInfoCollector.java215
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SubscriberSyncInfoSet.java89
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncByteConverter.java152
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncInfoStatistics.java107
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncInfoTreeChangeEvent.java95
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncInfoWorkingSetFilter.java110
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetChangedEvent.java108
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetInput.java93
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetInputFromSubscriber.java57
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetInputFromSyncSet.java120
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/ThreeWayBaseTree.java113
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/WorkingSetFilteredSyncInfoCollector.java195
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/WorkingSetSyncSetInput.java36
-rw-r--r--bundles/org.eclipse.team.cvs.core/.classpath7
-rw-r--r--bundles/org.eclipse.team.cvs.core/.cvsignore1
-rw-r--r--bundles/org.eclipse.team.cvs.core/.options18
-rw-r--r--bundles/org.eclipse.team.cvs.core/.project32
-rw-r--r--bundles/org.eclipse.team.cvs.core/about.html45
-rw-r--r--bundles/org.eclipse.team.cvs.core/asl-v20.txt202
-rw-r--r--bundles/org.eclipse.team.cvs.core/build.properties14
-rw-r--r--bundles/org.eclipse.team.cvs.core/buildnotes_cvs.html751
-rw-r--r--bundles/org.eclipse.team.cvs.core/doc/hglegal.htm14
-rw-r--r--bundles/org.eclipse.team.cvs.core/doc/ngibmcpy.gifbin1045 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.core/doc/org_eclipse_team_cvs_core.html15
-rw-r--r--bundles/org.eclipse.team.cvs.core/plugin.properties13
-rw-r--r--bundles/org.eclipse.team.cvs.core/plugin.xml197
-rw-r--r--bundles/org.eclipse.team.cvs.core/schema/authenticator.exsd97
-rw-r--r--bundles/org.eclipse.team.cvs.core/schema/connectionmethods.exsd146
-rw-r--r--bundles/org.eclipse.team.cvs.core/schema/filemodificationvalidator.exsd97
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSAnnotateBlock.java131
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSCompareSubscriber.java277
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSCoreFileModificationValidator.java177
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSException.java102
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSMergeSubscriber.java351
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSMergeSyncInfo.java62
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProjectSetCapability.java519
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProviderPlugin.java620
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSRevisionNumberCompareCriteria.java104
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSStatus.java71
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSSyncInfo.java371
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSSyncTreeSubscriber.java146
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTag.java131
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTeamProvider.java1013
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTeamProviderType.java37
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSWorkspaceSubscriber.java282
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/DateUtil.java92
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/EditorsInfo.java95
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSDecoratorEnablementListener.java30
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFile.java198
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFileModificationValidator.java30
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFolder.java181
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSListener.java19
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRemoteFile.java58
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRemoteFolder.java57
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRemoteResource.java88
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRepositoryLocation.java157
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSResource.java173
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSResourceVisitor.java23
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRunnable.java42
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSStorage.java57
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IConnectionMethod.java51
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ILogEntry.java66
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IResourceStateChangeListener.java97
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IServerConnection.java48
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IUserAuthenticator.java126
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IUserInfo.java40
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/Policy.java154
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AbstractMessageCommand.java36
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AbstractStructureVisitor.java292
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Add.java100
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AddStructureVisitor.java64
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Admin.java22
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Annotate.java32
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ByteCountOutputStream.java25
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/CRLFDetectInputStream.java98
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/CheckedInHandler.java54
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Checkout.java188
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/CheckoutWithOverwrite.java64
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Command.java764
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/CommandOutputListener.java71
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Commit.java124
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ConsoleListeners.java131
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/CopyHandler.java61
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Diff.java64
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/DiffStructureVisitor.java53
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Editors.java36
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ExpandModules.java31
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/FileStructureVisitor.java118
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Import.java69
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ImportStructureVisitor.java132
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Log.java42
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/MTHandler.java105
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModTimeHandler.java49
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModifiedFileSender.java53
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModuleExpansionHandler.java35
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/NOOPCommand.java59
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/NOOPVisitor.java43
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/NewEntryHandler.java53
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/NotifiedHandler.java55
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/PruneFolderVisitor.java106
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RDiff.java46
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RLog.java96
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RTag.java110
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RemoteCommand.java73
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Remove.java36
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RemoveEntryHandler.java61
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RemovedHandler.java81
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Request.java239
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ResponseHandler.java157
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java1011
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/StaticHandler.java76
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Status.java21
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/StickyHandler.java83
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/SyncUpdate.java50
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Tag.java107
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/TagFileSender.java50
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/TemplateHandler.java108
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Update.java213
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/UpdateMergableOnly.java161
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/UpdateWithOverwrite.java64
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/UpdatedHandler.java149
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ValidRequests.java28
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ValidRequestsHandler.java43
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Version.java98
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/AdminKSubstListener.java125
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/AnnotateListener.java121
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/CompareDiffListener.java115
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/DiffListener.java56
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/EditorsListener.java103
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/ICommandOutputListener.java72
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/IConsoleListener.java47
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/ILogEntryListener.java26
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/IMessagePatterns.java38
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/IStatusListener.java27
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/IUpdateMessageListener.java51
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/LogEntry.java99
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/LogListener.java226
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/ModuleDefinitionsListener.java71
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/ModuleExpansion.java126
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/RDiffSummaryListener.java144
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/ServerMessageLineMatcher.java99
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/StatusListener.java77
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/TagListener.java64
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/UpdateListener.java293
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSAuthenticationException.java53
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSCommunicationException.java79
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java1235
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSServerException.java79
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/Connection.java229
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/ExtConnection.java133
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/ExtConnectionMethod.java33
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/PServerConnection.java257
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/PServerConnectionMethod.java35
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/UserInfo.java64
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties351
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/CVSEntryLineTag.java129
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/CVSWorkspaceRoot.java329
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java613
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFolder.java380
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseResource.java281
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer.java1888
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/FileContentCachingService.java137
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/FileModificationManager.java209
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java657
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolder.java615
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderMemberFetcher.java314
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderSandbox.java101
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderTree.java65
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderTreeBuilder.java813
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteModule.java379
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteResource.java238
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache.java490
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SyncInfoCache.java149
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SynchronizerSyncInfoCache.java337
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/BaserevInfo.java86
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/CVSBaseResourceVariantTree.java66
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/CVSDescendantResourceVariantByteStore.java132
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/CVSResourceVariantTree.java336
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/DeferredResourceChangeHandler.java111
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/FolderSyncInfo.java324
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/MultiTagResourceVariantTree.java44
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/MutableFolderSyncInfo.java63
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/MutableResourceSyncInfo.java166
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/NotifyInfo.java181
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java75
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ResourceSyncInfo.java962
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/Assert.java104
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/AssertionFailedException.java35
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/BuildCleanupListener.java153
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/CVSDateFormatter.java106
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/FileNameMatcher.java72
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/KnownRepositories.java252
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/MoveDeleteHook.java340
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/PrepareForReplaceVisitor.java111
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/ReplaceWithBaseVisitor.java119
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/ResourceStateChangeListeners.java155
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/StringMatcher.java398
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileChangeListener.java277
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileWriter.java688
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/Util.java591
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/.classpath7
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/.cvsignore1
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/.options7
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/.project33
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/about.html92
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/build.properties14
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/plugin.properties12
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/plugin.xml39
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Blowfish.java1220
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Cipher.java25
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java707
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ClientPacket.java53
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/KnownHosts.java160
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Misc.java471
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Packet.java20
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Policy.java76
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHMethod.java34
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPlugin.java51
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java86
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ServerPacket.java164
-rw-r--r--bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/messages.properties39
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/.classpath8
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/.cvsignore1
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/.project35
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/about.html76
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/build.properties18
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/jsch-0.1.16.jarbin101612 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/jsch-0.1.17.jarbin102070 -> 0 bytes
-rwxr-xr-xbundles/org.eclipse.team.cvs.ssh2/jsch-0.1.18.jarbin105657 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/plugin.properties14
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/plugin.xml60
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/CVSSSH2Method.java34
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/CVSSSH2Plugin.java80
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/CVSSSH2PreferencePage.java1350
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/CVSSSH2ServerConnection.java175
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/ISSHContants.java39
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/JSchSession.java361
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/PServerSSH2Method.java26
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/PServerSSH2ServerConnection.java142
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/Policy.java73
-rw-r--r--bundles/org.eclipse.team.cvs.ssh2/src/org/eclipse/team/internal/ccvs/ssh2/messages.properties105
-rw-r--r--bundles/org.eclipse.team.cvs.ui/.classpath7
-rw-r--r--bundles/org.eclipse.team.cvs.ui/.cvsignore2
-rw-r--r--bundles/org.eclipse.team.cvs.ui/.options7
-rw-r--r--bundles/org.eclipse.team.cvs.ui/.project42
-rw-r--r--bundles/org.eclipse.team.cvs.ui/about.html30
-rw-r--r--bundles/org.eclipse.team.cvs.ui/build.properties14
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dlcl16/clear_co.gifbin328 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dlcl16/collapseall.gifbin155 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dlcl16/filter_history.gifbin142 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dlcl16/newstream_wiz.gifbin146 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dlcl16/refresh.gifbin209 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dlcl16/synced.gifbin149 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dtool16/annotate.gifbin350 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dtool16/checkout.gifbin344 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dtool16/cvs_synch.gifbin321 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dtool16/history.gifbin335 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dtool16/ignorefiles.gifbin228 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dtool16/newconnect_wiz.gifbin235 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dtool16/newlocation_wiz.gifbin361 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/dtool16/share_prj_wiz.gifbin326 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/elcl16/clear_co.gifbin545 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/elcl16/collapseall.gifbin157 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/elcl16/filter_history.gifbin219 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/elcl16/newstream_wiz.gifbin211 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/elcl16/refresh.gifbin327 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/elcl16/synced.gifbin160 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/etool16/annotate.gifbin592 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/etool16/checkout.gifbin363 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/etool16/cvs_synch.gifbin353 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/etool16/history.gifbin564 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/etool16/newconnect_wiz.gifbin362 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/etool16/newlocation_wiz.gifbin597 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/etool16/share_prj_wiz.gifbin348 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/eview16/annotate_view.gifbin594 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/eview16/compare_view.gifbin224 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/eview16/console_view.gifbin617 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/eview16/cvs_persp.gifbin366 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/eview16/history_view.gifbin564 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/eview16/rep_editors_view.gifbin597 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/eview16/repo_rep.gifbin588 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph1.gifbin585 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph2.gifbin220 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph3.gifbin203 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph4.gifbin327 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph5.gifbin307 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph6.gifbin323 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph7.gifbin328 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph8.gifbin330 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/obj16/branches_rep.gifbin121 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/obj16/changelog_obj.gifbin596 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/obj16/date.gifbin181 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/obj16/dates.gifbin181 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/obj16/module_rep.gifbin585 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/obj16/prjversions_rep.gifbin377 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/obj16/repository_rep.gifbin545 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/obj16/tag.gifbin109 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/obj16/versions_rep.gifbin364 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/confauto_ov.gifbin194 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/edited_ov.gifbin167 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/merged_ov.gifbin164 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/no_remotedir_ov.gifbin107 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/question_ov.gifbin79 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/wizban/createpatch_wizban.gifbin3330 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/wizban/keywordsub_wizban.gifbin3571 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/wizban/mergestream_wizban.gifbin2881 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newconnect_wizban.gifbin2965 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newlocation_wizban.gifbin3343 -> 0 bytes
-rw-r--r--bundles/org.eclipse.team.cvs.ui/plugin.properties203
-rw-r--r--bundles/org.eclipse.team.cvs.ui/plugin.xml1066
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AdaptableHierarchicalResourceList.java102
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AdaptableResourceList.java62
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java218
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AlternateUserValidationDialog.java235
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AnnotateView.java396
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AvoidableMessageDialog.java63
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareEditorInput.java457
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareRevisionsInput.java453
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java427
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorConfiguration.java142
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java619
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFieldEditorPreferencePage.java92
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFilePropertiesPage.java144
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFolderPropertiesPage.java179
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java452
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPerspective.java64
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java477
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSProjectPropertiesPage.java473
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSProjectSetSerializer.java219
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPropertiesPage.java44
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java756
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommitCommentArea.java235
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ComparePreferencePage.java75
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/DateTagDialog.java263
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/EditorsDialog.java67
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/EditorsView.java207
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java283
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/FileModificationValidator.java168
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryDropAdapter.java66
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilter.java74
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterAction.java55
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterDialog.java265
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryTableProvider.java428
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryView.java880
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java170
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IHelpContextIds.java150
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IRepositoryListener.java20
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IgnoreResourcesDialog.java248
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/KeyboardInteractiveDialog.java177
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ListSelectionArea.java191
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/OverlayIconCache.java50
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/PasswordManagementPreferencePage.java206
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Policy.java129
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java151
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteAnnotationEditorInput.java42
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteAnnotationStorage.java79
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileEditorInput.java224
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteRevisionQuickDiffProvider.java351
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResizableWizardDialog.java27
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourceEditionNode.java186
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourcePropertiesPage.java111
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/SimpleContentProvider.java47
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagetLocationSelectionDialog.java438
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TextViewerAction.java41
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TimeoutProgressMonitorDialog.java88
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java286
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java64
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WatchEditPreferencePage.java110
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkInProgressPreferencePage.java147
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkbenchUserAuthenticator.java244
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkingSetSelectionArea.java304
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/XMLWriter.java116
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java92
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/BranchAction.java31
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java483
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAction.java51
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAsAction.java50
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutWizardAction.java54
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java67
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteResourcesAction.java65
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteWithTagAction.java65
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java49
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRevisionAction.java149
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java64
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ConfigureTagsFromRepoViewOnFolder.java102
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/EditAction.java70
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/EditorsAction.java104
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/GenerateDiffFileAction.java58
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/IgnoreAction.java136
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MergeAction.java34
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MoveRemoteTagAction.java60
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/NewRepositoryAction.java56
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenLogEntryAction.java109
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenRemoteFileAction.java109
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java108
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRevisionAction.java92
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithTagAction.java104
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RestoreFromRepositoryAction.java198
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SetKeywordSubstitutionAction.java39
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowAnnotationAction.java130
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowCVSPerspectiveAction.java37
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowEditorsAction.java69
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowHistoryAction.java86
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java76
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java110
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java161
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagInRepositoryAction.java50
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagLocalAction.java70
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UneditAction.java78
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java147
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateAction.java50
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateSilentAction.java27
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java616
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/CVSConsoleFactory.java58
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/CVSConsolePageParticipant.java55
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/CVSOutputConsole.java424
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsoleDocument.java93
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsolePreferencesPage.java133
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/ConsoleRemoveAction.java32
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties1327
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/AllRootsElement.java42
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchCategory.java59
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSAdapterFactory.java96
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSModelElement.java133
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFilePropertySource.java159
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFolderPropertySource.java101
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryLocationPropertySource.java124
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryRootElement.java74
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSResourceElement.java39
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java157
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/DateTagCategory.java60
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/GroupedByVersionCategory.java118
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/ModulesCategory.java93
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java130
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFileElement.java48
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java95
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java147
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteProjectsElement.java87
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteResourceElement.java32
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteVersionModule.java103
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RepositoryLocationSchedulingRule.java33
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/TagCategory.java72
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java154
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/AddOperation.java205
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/BranchOperation.java320
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java366
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutIntoOperation.java442
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutMultipleProjectsOperation.java53
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutOperation.java86
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutProjectOperation.java481
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutSingleProjectOperation.java63
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutToRemoteFolderOperation.java213
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CommitOperation.java179
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/DisconnectOperation.java81
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/FetchMembersOperation.java147
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/HasProjectMetaFileOperation.java96
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ITagOperation.java27
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/OverrideAndUpdateOperation.java52
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReconcileProjectOperation.java175
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteCompareOperation.java381
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteLogOperation.java282
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RemoteOperation.java42
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReplaceOperation.java135
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryLocationOperation.java72
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java211
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ShareProjectOperation.java208
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ShowAnnotationOperation.java232
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/SingleCommandOperation.java81
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/TagInRepositoryOperation.java125
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/TagOperation.java167
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/UpdateOnlyMergableOperation.java77
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/UpdateOperation.java132
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/AddToBranchAction.java93
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepoViewAction.java48
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepositoryPropertiesPage.java595
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CommentHistoryContentHandler.java85
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CopyRepositoryNameAction.java61
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewCVSRepositoryAction.java39
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewDateTagAction.java57
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectSelectionPage.java174
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectWizard.java182
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshTagsAction.java37
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteProjectsView.java79
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteTagsView.java66
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java429
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveDateTagAction.java86
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java152
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java327
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesViewContentHandler.java248
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryEncodingPropertyPage.java419
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryManager.java813
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryRoot.java633
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositorySorter.java116
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSActionDelegateWrapper.java43
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetActionGroup.java40
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCapability.java54
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCollector.java441
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipant.java177
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipantAction.java63
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipantLabelDecorator.java128
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSSubscriberOperation.java334
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSSynchronizeWizard.java70
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CommitSetDialog.java228
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareParticipant.java218
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareRevertAction.java33
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareRevertOperation.java108
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ConfirmMergedAction.java39
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ConfirmMergedOperation.java92
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/LogEntryCacheUpdateHandler.java666
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeParticipant.java280
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateAction.java56
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeUpdateOperation.java170
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OpenChangeSetAction.java215
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndCommitAction.java40
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateAction.java41
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/OverrideAndUpdateSubscriberOperation.java73
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/RefreshDirtyStateAction.java49
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/RefreshDirtyStateOperation.java78
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SafeUpdateOperation.java434
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SyncInfoSetDetailsDialog.java194
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/UpdateDialog.java72
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitAction.java44
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceCommitOperation.java354
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeParticipant.java259
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceUpdateAction.java50
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceUpdateOperation.java101
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ToolTipMessageDialog.java40
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/BranchPromptDialog.java231
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/CVSFileElement.java75
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/CVSFolderElement.java82
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/FilteredTagList.java108
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/LocalProjectTagSource.java136
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/MultiFolderTagSource.java53
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFileTagSource.java98
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFolderTagSource.java142
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagAsVersionDialog.java182
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagConfigurationDialog.java763
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagContentAssistProcessor.java160
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagElement.java89
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagRefreshButtonArea.java175
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagRootElement.java75
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSelectionArea.java612
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSelectionDialog.java247
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSelectionWizardPage.java181
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java234
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSourceResourceAdapter.java88
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSourceWorkbenchAdapter.java157
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSWizardPage.java382
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsLocationSelectionPage.java316
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsMainPage.java233
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsProjectSelectionPage.java272
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsWizard.java265
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutWizard.java287
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardAutoconnectPage.java141
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java616
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileOperation.java142
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileWizard.java775
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ICVSWizard.java37
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizard.java428
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardCommitCommentPage.java75
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardDirtyFilesPage.java95
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSelectionPage.java157
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSharedFilesPage.java95
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSummaryPage.java291
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizard.java95
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizardPage.java254
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java325
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/NewLocationWizard.java137
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RepositorySelectionPage.java141
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryFileSelectionPage.java558
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryWizard.java57
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java548
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardPageActionGroup.java82
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardSyncPage.java279
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/UpdateWizard.java90
1059 files changed, 0 insertions, 165713 deletions
diff --git a/bundles/org.eclipse.compare/.classpath b/bundles/org.eclipse.compare/.classpath
deleted file mode 100644
index 3e86ace7d..000000000
--- a/bundles/org.eclipse.compare/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="compare"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.compare/.cvsignore b/bundles/org.eclipse.compare/.cvsignore
deleted file mode 100644
index ba077a403..000000000
--- a/bundles/org.eclipse.compare/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.compare/.project b/bundles/org.eclipse.compare/.project
deleted file mode 100644
index f0d1e74ed..000000000
--- a/bundles/org.eclipse.compare/.project
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.compare</name>
- <comment></comment>
- <projects>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.resources</project>
- <project>org.eclipse.core.runtime</project>
- <project>org.eclipse.core.runtime.compatibility</project>
- <project>org.eclipse.jface.text</project>
- <project>org.eclipse.ui</project>
- <project>org.eclipse.ui.ide</project>
- <project>org.eclipse.ui.views</project>
- <project>org.eclipse.ui.workbench.texteditor</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
- </natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.compare/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.compare/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 7d97357dd..000000000
--- a/bundles/org.eclipse.compare/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,70 +0,0 @@
-#Tue Nov 30 15:51:47 CET 2004
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-eclipse.preferences.version=1
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
-org.eclipse.jdt.core.incompleteClasspath=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
diff --git a/bundles/org.eclipse.compare/about.html b/bundles/org.eclipse.compare/about.html
deleted file mode 100644
index 9db411aab..000000000
--- a/bundles/org.eclipse.compare/about.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>20th June, 2002</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Common Public License Version 1.0 (&quot;CPL&quot;). A copy of the CPL is available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>.
-For purposes of the CPL, &quot;Program&quot; will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL (&quot;Other License&quot;), any modifications, enhancements and/or
-other code and/or documentation (&quot;Modifications&quot;) uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/bundles/org.eclipse.compare/build.properties b/bundles/org.eclipse.compare/build.properties
deleted file mode 100644
index 22bed075e..000000000
--- a/bundles/org.eclipse.compare/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Common Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/cpl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-source.compare.jar = compare/
-bin.includes = icons/,\
- plugin.xml,\
- *.jar,\
- plugin.properties,\
- about.html
-src.includes = about.html,\
- schema/
diff --git a/bundles/org.eclipse.compare/buildnotes_compare.html b/bundles/org.eclipse.compare/buildnotes_compare.html
deleted file mode 100644
index 93116b578..000000000
--- a/bundles/org.eclipse.compare/buildnotes_compare.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">
- <meta name="Author" content="IBM">
- <title>Eclipse Platform Release Notes - Desktop</title>
-</head>
-<body>
-
-<h1>
-Eclipse Platform Build Notes<br>
-Compare</h1>
-
-Eclipse Build Input December 7th 2004
-
-<h2>Problem reports fixed</h2>
-Eliminated all compiler warnings<br>
-Removed dependency on core.runtime.compatibility
-
-
-<h1><hr WIDTH="100%"></h1>
-
-Eclipse Build Input November 30th 2004
-
-<h2>Problem reports fixed</h2>
-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=79414">79414</a>: states with same time stamps may appear in the wrong order<br>
-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=79566">79566</a>: NPE when closing JUnit compare view<br>
-
-
-<h1><hr WIDTH="100%"></h1>
-
-Eclipse Build Input November 23rd 2004
-
-<h2>Problem reports fixed</h2>
-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=47786">47786</a>: Possible leak in TextMergeViewer<br>
-Added translatable attribute to extension point schemas.
-
-
-<h1><hr WIDTH="100%"></h1>
-
-Eclipse Build Input November 16th 2004
-
-<h2>Problem reports fixed</h2>
- <a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=78679">78679</a>: Prefs Filtered Members field does not restore defaults<br>
-
-<h1><hr WIDTH="100%"></h1>
-
-Eclipse Build Input November 9th 2004
-
-<h2>Problem reports fixed</h2>
- (partial fix; awaits fix in jdt.ui):
- <a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=77599">77599</a>: [5.0] Structure comparing of enums does not work<br>
-
-
-<h1><hr WIDTH="100%"></h1>
-
-Eclipse Build Input November 1st 2004
-
-<h2>Problem reports fixed</h2>
-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=65981">65981</a>: empty compare viewer has no focus<br>
-
-
-<h1><hr WIDTH="100%"></h1>
-
-Eclipse Build Input September 21th 2004
-
-<h2>Problem reports fixed</h2>
-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=74450">74450</a>: AbstractUIPlugin.initializeDefaultPreferences no longer called?<br>
-
-
-<h1><hr WIDTH="100%"></h1>
-Eclipse Build Input August 24th 2004
-
-<h2>Problem reports fixed</h2>
-Eliminated compiler warnings
-
-
-<h1><hr WIDTH="100%"></h1>
-Eclipse Build Input July 27th 2004
-
-<h2>Problem reports fixed</h2>
-Updated version number in plugin.xml and export script to 3.1
-
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java
deleted file mode 100644
index 5e352752a..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.io.*;
-import org.eclipse.jface.util.ListenerList;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.compare.internal.Utilities;
-
-/**
- * Abstract implementation for a buffered <code>IStreamContentAccessor</code>.
- * <p>
- * Subclasses must implement the <code>createStream</code> method
- * to connect the buffered content with a streamable source (e.g., a file).
- * <p>
- * As long as the contents of <code>BufferedContent</code> is only retrieved as an input stream
- * (by means of <code>getContents</code>) and the <code>BufferedContent</code> is not modified (with
- * <code>setContent</code>) no buffering takes place.
- * Buffering starts when either method <code>getContent</code> or <code>setContent</code> is called.
- *
- * @see IContentChangeNotifier
- * @see IStreamContentAccessor
- */
-public abstract class BufferedContent implements IContentChangeNotifier, IStreamContentAccessor {
-
- byte[] fContent;
- private ListenerList fListenerList;
-
- /**
- * Creates a buffered stream content accessor.
- */
- protected BufferedContent() {
- // empty implementation
- }
-
- /* (non-Javadoc)
- * see IStreamContentAccessor.getContents
- */
- public InputStream getContents() throws CoreException {
- if (fContent != null)
- return new ByteArrayInputStream(fContent);
- return createStream();
- }
-
- /**
- * Creates and returns a stream for reading the contents.
- * <p>
- * Subclasses must implement this method.
- * </p>
- *
- * @return the stream from which the content is read
- * @exception CoreException if the contents could not be accessed
- */
- protected abstract InputStream createStream() throws CoreException;
-
- /**
- * Sets the contents. Registered content change listeners are notified.
- *
- * @param contents the new contents
- */
- public void setContent(byte[] contents) {
- fContent= contents;
- fireContentChanged();
- }
-
- /**
- * Returns the contents as an array of bytes.
- *
- * @return the contents as an array of bytes, or <code>null</code> if
- * the contents could not be accessed
- */
- public byte[] getContent() {
- if (fContent == null) {
- try {
- InputStream is= createStream();
- fContent= Utilities.readBytes(is);
- } catch(CoreException ex) {
- // NeedWork
- }
- }
- return fContent;
- }
-
- /**
- * Discards the buffered content.
- */
- public void discardBuffer() {
- fContent= null;
- }
-
- /* (non-Javadoc)
- * see IContentChangeNotifier.addChangeListener
- */
- public void addContentChangeListener(IContentChangeListener listener) {
- if (fListenerList == null)
- fListenerList= new ListenerList();
- fListenerList.add(listener);
- }
-
- /* (non-Javadoc)
- * see IContentChangeNotifier.removeChangeListener
- */
- public void removeContentChangeListener(IContentChangeListener listener) {
- if (fListenerList != null) {
- fListenerList.remove(listener);
- if (fListenerList.isEmpty())
- fListenerList= null;
- }
- }
-
- /**
- * Notifies all registered <code>IContentChangeListener</code>s of a content change.
- */
- protected void fireContentChanged() {
- if (fListenerList != null) {
- Object[] listeners= fListenerList.getListeners();
- for (int i= 0; i < listeners.length; i++)
- ((IContentChangeListener)listeners[i]).contentChanged(this);
- }
- }
-}
-
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
deleted file mode 100644
index 8a5e89b1f..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
+++ /dev/null
@@ -1,450 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.util.HashMap;
-
-import org.eclipse.swt.graphics.*;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.*;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-import org.eclipse.compare.internal.*;
-import org.eclipse.compare.structuremergeviewer.Differencer;
-
-/**
- * A <code>CompareConfiguration</code> object
- * controls various UI aspects of compare/merge viewers like
- * title labels and images, or whether a side of a merge viewer is editable.
- * In addition to these fixed properties <code>ICompareConfiguration</code> provides
- * API for an open ended set of properties. Different viewers which share the same
- * configuration can communicate via this mechanism. E.g. if a compare editor
- * has a button for controlling whether compare viewers ignore white space,
- * the button would trigger a change of the boolean <code>IGNORE_WHITESPACE</code> property
- * and all interested viewers would receive notification.
- * <p>
- * Suitable default labels are provided (without images); both the left and right sides
- * are editable.
- * </p>
- * <p>
- * Clients may use this class as is, or subclass to add new state and behavior.
- * </p>
- */
-public class CompareConfiguration {
-
- /**
- * Name of the ignore whitespace property (value <code>"IGNORE_WHITESPACE"</code>).
- */
- public static final String IGNORE_WHITESPACE= "IGNORE_WHITESPACE"; //$NON-NLS-1$
- /**
- * Name of the show pseudo conflicts property (value <code>"SHOW_PSEUDO_CONFLICTS"</code>).
- */
- public static final String SHOW_PSEUDO_CONFLICTS= "SHOW_PSEUDO_CONFLICTS"; //$NON-NLS-1$
- /**
- * Name of the use outline view property (value <code>"USE_OUTLINE_VIEW"</code>).
- * @since 3.0
- */
- public static final String USE_OUTLINE_VIEW= "USE_OUTLINE_VIEW"; //$NON-NLS-1$
-
-
- private static final int WIDTH= 22;
-
- private static ImageDescriptor[] fgImages= new ImageDescriptor[16];
- private static Object fgDummy= new Object();
- private static HashMap fgMap= new HashMap(20);
- private static boolean fLeftIsLocal= true;
-
- static {
- if (fLeftIsLocal) {
- fgImages[Differencer.ADDITION]= CompareUIPlugin.getImageDescriptor("ovr16/del_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.LEFT + Differencer.ADDITION]= CompareUIPlugin.getImageDescriptor("ovr16/r_inadd_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.RIGHT + Differencer.ADDITION]= CompareUIPlugin.getImageDescriptor("ovr16/r_outadd_ov.gif"); //$NON-NLS-1$
-
- fgImages[Differencer.DELETION]= CompareUIPlugin.getImageDescriptor("ovr16/add_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.LEFT + Differencer.DELETION]= CompareUIPlugin.getImageDescriptor("ovr16/r_indel_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.RIGHT + Differencer.DELETION]= CompareUIPlugin.getImageDescriptor("ovr16/r_outdel_ov.gif"); //$NON-NLS-1$
-
- fgImages[Differencer.LEFT + Differencer.CHANGE]= CompareUIPlugin.getImageDescriptor("ovr16/r_inchg_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.RIGHT + Differencer.CHANGE]= CompareUIPlugin.getImageDescriptor("ovr16/r_outchg_ov.gif"); //$NON-NLS-1$
- } else {
- fgImages[Differencer.ADDITION]= CompareUIPlugin.getImageDescriptor("ovr16/add_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.LEFT + Differencer.ADDITION]= CompareUIPlugin.getImageDescriptor("ovr16/inadd_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.RIGHT + Differencer.ADDITION]= CompareUIPlugin.getImageDescriptor("ovr16/outadd_ov.gif"); //$NON-NLS-1$
-
- fgImages[Differencer.DELETION]= CompareUIPlugin.getImageDescriptor("ovr16/del_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.LEFT + Differencer.DELETION]= CompareUIPlugin.getImageDescriptor("ovr16/indel_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.RIGHT + Differencer.DELETION]= CompareUIPlugin.getImageDescriptor("ovr16/outdel_ov.gif"); //$NON-NLS-1$
-
- fgImages[Differencer.LEFT + Differencer.CHANGE]= CompareUIPlugin.getImageDescriptor("ovr16/inchg_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.RIGHT + Differencer.CHANGE]= CompareUIPlugin.getImageDescriptor("ovr16/outchg_ov.gif"); //$NON-NLS-1$
- }
-
- fgImages[Differencer.CONFLICTING + Differencer.ADDITION]= CompareUIPlugin.getImageDescriptor("ovr16/confadd_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.CONFLICTING + Differencer.DELETION]= CompareUIPlugin.getImageDescriptor("ovr16/confdel_ov.gif"); //$NON-NLS-1$
- fgImages[Differencer.CONFLICTING + Differencer.CHANGE]= CompareUIPlugin.getImageDescriptor("ovr16/confchg_ov.gif"); //$NON-NLS-1$
- }
-
- private IPreferenceStore fPreferenceStore;
- private ListenerList fListeners= new ListenerList();
- private HashMap fProperties= new HashMap();
- private boolean fLeftEditable= true;
- private boolean fRightEditable= true;
- private String fAncestorLabel;
- private String fLeftLabel;
- private String fRightLabel;
- private Image fAncestorImage;
- private Image fRightImage;
- private Image fLeftImage;
- private Image[] fImages= new Image[16];
-
- /**
- * Creates a new configuration with editable left and right sides,
- * suitable default labels, and no images.
- * The given preference store is used to connect this configuration
- * with the Compare preference page properties <code>ComparePreferencePage.INITIALLY_SHOW_ANCESTOR_PANE</code>,
- * and <code>CompareConfiguration.IGNORE_WHITESPACE</code>.
- *
- * @param prefStore the preference store which this configuration holds onto.
- * @since 2.0
- */
- public CompareConfiguration(IPreferenceStore prefStore) {
-
- setProperty("LEFT_IS_LOCAL", new Boolean(fLeftIsLocal)); //$NON-NLS-1$
-
- fPreferenceStore= prefStore;
- if (fPreferenceStore != null) {
- boolean b= fPreferenceStore.getBoolean(ComparePreferencePage.INITIALLY_SHOW_ANCESTOR_PANE);
- setProperty(ComparePreferencePage.INITIALLY_SHOW_ANCESTOR_PANE, new Boolean(b));
-
- b= fPreferenceStore.getBoolean(ComparePreferencePage.IGNORE_WHITESPACE);
- setProperty(CompareConfiguration.IGNORE_WHITESPACE, new Boolean(b));
- }
- }
-
- /**
- * Creates a new configuration with editable left and right sides,
- * suitable default labels, and no images.
- * This configuration uses the preference store of the Compare plugin
- * (<code>CompareUIPlugin.getDefault().getPreferenceStore()</code>).
- */
- public CompareConfiguration() {
- this(CompareUIPlugin.getDefault().getPreferenceStore());
- }
-
- /**
- * Returns the preference store of this configuration.
- * @return the preference store of this configuration.
- * @since 2.0
- */
- public IPreferenceStore getPreferenceStore() {
- return fPreferenceStore;
- }
-
- /**
- * Returns an image showing the specified change kind.
- * The different kind of changes are defined in the <code>Differencer</code>.
- * Newly created images are remembered by this class and
- * disposed when the <code>dispose</code> method is called.
- *
- * @param kind the kind of change as defined in <code>Differencer</code>.
- * @return an modification of the base image reflecting the kind of change.
- * @see org.eclipse.compare.structuremergeviewer.Differencer
- * @since 2.0
- */
- public Image getImage(int kind) {
- Image image= fImages[kind & 15];
- if (image == null) {
- ImageDescriptor id= fgImages[kind & 15];
- if (id != null)
- image= id.createImage();
- fImages[kind & 15]= image;
- }
- return image;
- }
-
- /**
- * Returns an image showing the specified change kind applied to a
- * given base image. The different kind of changes are defined in the <code>Differencer</code>.
- * Typically an implementation would build a composite image
- * from the given base image and an image representing the change kind.
- * Newly created images are remembered by this class and
- * disposed when the <code>dispose</code> method is called.
- *
- * @param base the image which is modified to reflect the kind of change
- * @param kind the kind of change as defined in <code>Differencer</code>.
- * @return an modification of the base image reflecting the kind of change.
- * @see org.eclipse.compare.structuremergeviewer.Differencer
- */
- public Image getImage(Image base, int kind) {
-
- Object key= base;
- if (key == null)
- key= fgDummy;
-
- kind &= 15;
-
- Image[] a= (Image[]) fgMap.get(key);
- if (a == null) {
- a= new Image[16];
- fgMap.put(key, a);
- }
- Image b= a[kind];
- if (b == null) {
- b= new DiffImage(base, fgImages[kind], WIDTH, !fLeftIsLocal).createImage();
- CompareUI.disposeOnShutdown(b);
- a[kind]= b;
- }
- return b;
- }
-
- /**
- * Dispose of this compare configuration.
- * This method is called if the compare configuration is no longer used.
- * An implementation must dispose of all resources.
- */
- public void dispose() {
- if (fImages != null) {
- for (int i= 0; i < fImages.length; i++){
- Image image= fImages[i];
- if (image != null && !image.isDisposed())
- image.dispose();
- }
- }
- fImages= null;
- }
-
- /**
- * Fires a <code>PropertyChangeEvent</code> to registered listeners.
- *
- * @param propertyName the name of the property that has changed
- * @param oldValue the property's old value
- * @param newValue the property's new value
- */
- private void fireChange(String propertyName, Object oldValue, Object newValue) {
- PropertyChangeEvent event= null;
- Object[] listeners= fListeners.getListeners();
- if (listeners != null) {
- for (int i= 0; i < listeners.length; i++) {
- IPropertyChangeListener l= (IPropertyChangeListener) listeners[i];
- if (event == null)
- event= new PropertyChangeEvent(this, propertyName, oldValue, newValue);
- l.propertyChange(event);
- }
- }
- }
-
- /* (non javadoc)
- * see IPropertyChangeNotifier.addListener
- */
- public void addPropertyChangeListener(IPropertyChangeListener listener) {
- fListeners.add(listener);
- }
-
- /* (non javadoc)
- * see IPropertyChangeNotifier.removeListener
- */
- public void removePropertyChangeListener(IPropertyChangeListener listener) {
- fListeners.remove(listener);
- }
-
- /**
- * Sets the property with the given name.
- * If the new value differs from the old a <code>PropertyChangeEvent</code>
- * is sent to registered listeners.
- *
- * @param key the name of the property to set
- * @param newValue the new value of the property
- */
- public void setProperty(String key, Object newValue) {
- Object oldValue= fProperties.get(key);
- fProperties.put(key, newValue);
- if (oldValue == null || !oldValue.equals(newValue))
- fireChange(key, oldValue, newValue);
- }
-
- /**
- * Returns the property with the given name, or <code>null</code>
- * if no such property exists.
- *
- * @param key the name of the property to retrieve
- * @return the property with the given name, or <code>null</code> if not found
- */
- public Object getProperty(String key) {
- return fProperties.get(key);
- }
-
- //---- ancestor
-
- /**
- * Sets the label to use for the ancestor of compare/merge viewers.
- *
- * @param label the new label for the ancestor of compare/merge viewers
- */
- public void setAncestorLabel(String label) {
- fAncestorLabel= label;
- }
-
- /**
- * Returns the label for the ancestor side of compare/merge viewers.
- * This label is typically shown in the title of the ancestor area in a compare viewer.
- *
- * @param element the input object of a compare/merge viewer or <code>null</code>
- * @return the label for the ancestor side or <code>null</code>
- */
- public String getAncestorLabel(Object element) {
- return fAncestorLabel;
- }
-
- /**
- * Sets the image to use for the ancestor of compare/merge viewers.
- * The CompareConfiguration does not automatically dispose the old image.
- *
- * @param image the new image for the ancestor of compare/merge viewers
- */
- public void setAncestorImage(Image image) {
- fAncestorImage= image;
- }
-
- /**
- * Returns the image for the ancestor side of compare/merge viewers.
- * This image is typically shown in the title of the ancestor area in a compare viewer.
- *
- * @param element the input object of a compare/merge viewer or <code>null</code>
- * @return the image for the ancestor side or <code>null</code>
- */
- public Image getAncestorImage(Object element) {
- return fAncestorImage;
- }
-
- //---- left side
-
- /**
- * Controls whether the left side of a merge viewer is editable.
- *
- * @param editable if the value is <code>true</code> left side is editable
- */
- public void setLeftEditable(boolean editable) {
- fLeftEditable= editable;
- }
-
- /**
- * Returns whether the left hand side of a merge viewer is editable.
- *
- * @return <code>true</code> if the left hand side is editable
- */
- public boolean isLeftEditable() {
- return fLeftEditable;
- }
-
- /**
- * Sets the label to use for the left side of compare/merge viewers.
- *
- * @param label the new label for the left side of compare/merge viewers
- */
- public void setLeftLabel(String label) {
- fLeftLabel= label;
- }
-
- /**
- * Returns the label for the left hand side of compare/merge viewers.
- * This label is typically shown in the title of the left side of a compare viewer.
- *
- * @param element the input object of a compare/merge viewer or <code>null</code>
- * @return the label for the left hand side or <code>null</code>
- */
- public String getLeftLabel(Object element) {
- return fLeftLabel;
- }
-
- /**
- * Sets the image to use for the left side of compare/merge viewers.
- * The compare configuration does not automatically dispose the old image.
- *
- * @param image the new image for the left side of compare/merge viewers
- */
- public void setLeftImage(Image image) {
- fLeftImage= image;
- }
-
- /**
- * Returns the image for the left hand side of compare/merge viewers.
- * This image is typically shown in the title of the left side of a compare viewer.
- *
- * @param element the input object of a compare/merge viewer or <code>null</code>
- * @return the image for the left hand side or <code>null</code>
- */
- public Image getLeftImage(Object element) {
- return fLeftImage;
- }
-
- //---- right side
-
- /**
- * Controls whether the right side of a merge viewer is editable.
- *
- * @param editable if the value is <code>true</code> right side is editable
- */
- public void setRightEditable(boolean editable) {
- fRightEditable= editable;
- }
-
- /**
- * Returns whether the right hand side of a merge viewer is editable.
- *
- * @return <code>true</code> if the right hand side is editable
- */
- public boolean isRightEditable() {
- return fRightEditable;
- }
-
- /**
- * Sets the label to use for the right side of compare/merge viewers.
- *
- * @param label the new label for the right side of compare/merge viewers
- */
- public void setRightLabel(String label) {
- fRightLabel= label;
- }
-
- /**
- * Returns the label for the right hand side of compare/merge viewers.
- * This label is typically shown in the title of the right side of a compare viewer.
- *
- * @param element the input object of a compare/merge viewer or <code>null</code>
- * @return the label for the right hand side or <code>null</code>
- */
- public String getRightLabel(Object element) {
- return fRightLabel;
- }
-
- /**
- * Sets the image to use for the right side of compare/merge viewers.
- * The compare configuration does not automatically dispose the old image.
- *
- * @param image the new image for the right side of compare/merge viewers
- */
- public void setRightImage(Image image) {
- fRightImage= image;
- }
-
- /**
- * Returns the image for the right hand side of compare/merge viewers.
- * This image is typically shown in the title of the right side of a compare viewer.
- *
- * @param element the input object of a compare/merge viewer or <code>null</code>
- * @return the image for the right hand side or <code>null</code>
- */
- public Image getRightImage(Object element) {
- return fRightImage;
- }
-}
-
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
deleted file mode 100644
index 9cfb91b88..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
+++ /dev/null
@@ -1,815 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.lang.reflect.InvocationTargetException;
-
-import java.util.ArrayList;
-import java.util.ResourceBundle;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.custom.BusyIndicator;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.*;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IEditorInput;
-
-import org.eclipse.jface.util.*;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-import org.eclipse.compare.internal.*;
-import org.eclipse.compare.structuremergeviewer.*;
-
-
-/**
- * A compare operation which can present its results in a special editor.
- * Running the compare operation and presentating the results in a compare editor
- * are combined in one class because it allows a client to keep the implementation
- * all in one place while separating it from the innards of a specific UI implementation of compare/merge.
- * <p>
- * A <code>CompareEditorInput</code> defines methods for the following sequence steps:
- * <UL>
- * <LI>running a lengthy compare operation under progress monitor control,
- * <LI>creating a UI for displaying the model and initializing the some widgets with the compare result,
- * <LI>tracking the dirty state of the model in case of merge,
- * <LI>saving the model.
- * </UL>
- * The Compare plug-in's <code>openCompareEditor</code> method takes an <code>ICompareEditorInput</code>
- * and starts sequencing through the above steps. If the compare result is not empty a new compare editor
- * is opened and takes over the sequence until eventually closed.
- * <p>
- * The <code>prepareInput</code> method should contain the
- * code of the compare operation. It is executed under control of a progress monitor
- * and can be canceled. If the result of the compare is not empty, that is if there are differences
- * that needs to be presented, the <code>ICompareEditorInput</code> should hold onto them and return them with
- * the <code>getCompareResult</code> method.
- * If the value returned from <code>getCompareResult</code> is not <code>null</code>
- * a compare editor is opened on the <code>ICompareEditorInput</code> with title and title image initialized by the
- * corresponding methods of the <code>ICompareEditorInput</code>.
- * <p>
- * Creation of the editor's SWT controls is delegated to the <code>createContents</code> method.
- * Here the SWT controls must be created and initialized with the result of the compare operation.
- * <p>
- * If merging is allowed, the modification state of the compared constituents must be tracked and the dirty
- * state returned from method <code>isSaveNeeded</code>. The value <code>true</code> triggers a subsequent call
- * to <code>save</code> where the modified resources can be saved.
- * <p>
- * The most important part of this implementation is the setup of the compare/merge UI.
- * The UI uses a simple browser metaphor to present compare results.
- * The top half of the layout shows the structural compare results (e.g. added, deleted, and changed files),
- * the bottom half the content compare results (e.g. textual differences between two files).
- * A selection in the top pane is fed to the bottom pane. If a content viewer is registered
- * for the type of the selected object, this viewer is installed in the pane.
- * In addition if a structure viewer is registered for the selection type the top pane
- * is split horizontally to make room for another pane and the structure viewer is installed
- * in it. When comparing Java files this second structure viewer would show the structural
- * differences within a Java file, e.g. added, deleted or changed methods and fields.
- * <p>
- * Subclasses provide custom setups, e.g. for a Catchup/Release operation
- * by passing a subclass of <code>CompareConfiguration</code> and by implementing the <code>prepareInput</code> method.
- * If a subclass cannot use the <code>DiffTreeViewer</code> which is installed by default in the
- * top left pane, method <code>createDiffViewer</code> can be overridden.
- *
- * @see CompareUI
- * @see CompareEditorInput
- */
-public abstract class CompareEditorInput implements IEditorInput, IPropertyChangeNotifier, IRunnableWithProgress {
-
- private static final boolean DEBUG= false;
-
- /**
- * The name of the "dirty" property (value <code>"DIRTY_STATE"</code>).
- */
- public static final String DIRTY_STATE= "DIRTY_STATE"; //$NON-NLS-1$
-
- private static final String COMPARE_EDITOR_IMAGE_NAME= "eview16/compare_view.gif"; //$NON-NLS-1$
- private static Image fgTitleImage;
-
- private Splitter fComposite;
- private CompareConfiguration fCompareConfiguration;
- private CompareViewerSwitchingPane fStructureInputPane;
- private CompareViewerSwitchingPane fStructurePane1;
- private CompareViewerSwitchingPane fStructurePane2;
- private CompareViewerSwitchingPane fContentInputPane;
- private CompareViewerSwitchingPane fFocusPane;
- private String fMessage;
- private Object fInput;
- private String fTitle;
- private ListenerList fListenerList= new ListenerList();
- private CompareNavigator fNavigator;
- private boolean fDirty= false;
- private ArrayList fDirtyViewers= new ArrayList();
- private IPropertyChangeListener fDirtyStateListener;
-
- private IgnoreWhiteSpaceAction fIgnoreWhitespace;
- private ShowPseudoConflicts fShowPseudoConflicts;
-
- boolean fStructureCompareOnSingleClick= true;
- boolean fUseOutlineView= false;
-
- /**
- * Creates a <code>CompareEditorInput</code> which is initialized with the given
- * compare configuration.
- * The compare configuration is passed to subsequently created viewers.
- *
- * @param configuration the compare configuration
- */
- public CompareEditorInput(CompareConfiguration configuration) {
- fCompareConfiguration= configuration;
- Assert.isNotNull(configuration);
-
- Object object= fCompareConfiguration.getProperty(CompareConfiguration.USE_OUTLINE_VIEW);
- if (object instanceof Boolean)
- fUseOutlineView= ((Boolean) object).booleanValue();
-
- ResourceBundle bundle= CompareUI.getResourceBundle();
- fIgnoreWhitespace= new IgnoreWhiteSpaceAction(bundle, configuration);
- fShowPseudoConflicts= new ShowPseudoConflicts(bundle, configuration);
-
- fDirtyStateListener= new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent e) {
- String propertyName= e.getProperty();
- if (CompareEditorInput.DIRTY_STATE.equals(propertyName)) {
- boolean changed= false;
- Object newValue= e.getNewValue();
- if (newValue instanceof Boolean)
- changed= ((Boolean)newValue).booleanValue();
- setDirty(e.getSource(), changed);
- }
- }
- };
-
- IPreferenceStore ps= configuration.getPreferenceStore();
- if (ps != null)
- fStructureCompareOnSingleClick= ps.getBoolean(ComparePreferencePage.OPEN_STRUCTURE_COMPARE);
- }
-
- private boolean structureCompareOnSingleClick() {
- return fStructureCompareOnSingleClick;
- }
-
- /* (non Javadoc)
- * see IAdaptable.getAdapter
- */
- public Object getAdapter(Class adapter) {
- if (ICompareNavigator.class.equals(adapter) || CompareNavigator.class.equals(adapter)) {
- if (fNavigator == null)
- fNavigator= new CompareNavigator(
- new CompareViewerSwitchingPane[] {
- fStructureInputPane,
- fStructurePane1,
- fStructurePane2,
- fContentInputPane
- }
- );
- return fNavigator;
- }
- if (IFile.class.equals(adapter)) {
- IProgressMonitor pm= new NullProgressMonitor();
- // flush changes in any dirty viewer
- try {
- flushViewer(fStructureInputPane, pm);
- flushViewer(fStructurePane1, pm);
- flushViewer(fStructurePane2, pm);
- flushViewer(fContentInputPane, pm);
- } catch (CoreException e) {
- CompareUIPlugin.log(e);
- }
- IFile[] files= (IFile[]) getAdapter(IFile[].class);
- if (files.length > 0)
- return files[0]; // can only return one: limitation on IDE.saveAllEditors; see #64617
- return null;
- }
- return null;
- }
-
- /* (non Javadoc)
- * see IEditorInput.getImageDescriptor
- */
- public ImageDescriptor getImageDescriptor() {
- return null;
- }
-
- /* (non Javadoc)
- * see IEditorInput.getToolTipText
- */
- public String getToolTipText() {
- return getTitle();
- }
-
- /* (non Javadoc)
- * see IEditorInput.getName
- */
- public String getName() {
- return getTitle();
- }
-
- /**
- * Returns <code>null</code> since this editor cannot be persisted.
- *
- * @return <code>null</code> because this editor cannot be persisted
- */
- public IPersistableElement getPersistable() {
- return null;
- }
-
- /**
- * Returns <code>false</code> to indicate that this input
- * should not appear in the "File Most Recently Used" menu.
- *
- * @return <code>false</code>
- */
- public boolean exists() {
- return false;
- }
-
- /*
- * FIXME!
- */
- protected void setMessage(String message) {
- fMessage= message;
- }
-
- /*
- * FIXME!
- */
- public String getMessage() {
- return fMessage;
- }
-
- /**
- * Returns the title which will be used in the compare editor's title bar.
- * It can be set with <code>setTitle</code>.
- *
- * @return the title
- */
- public String getTitle() {
- if (fTitle == null)
- return Utilities.getString("CompareEditorInput.defaultTitle"); //$NON-NLS-1$
- return fTitle;
- }
-
- /**
- * Sets the title which will be used when presenting the compare result.
- * This method must be called before the editor is opened.
- *
- * @param title the title to use for the CompareEditor
- */
- public void setTitle(String title) {
- fTitle= title;
- }
-
- /**
- * Returns the title image which will be used in the compare editor's title bar.
- * Returns the title image which will be used when presenting the compare result.
- * This implementation returns a generic compare icon.
- * Subclasses can override.
- *
- * @return the title image, or <code>null</code> if none
- */
- public Image getTitleImage() {
- if (fgTitleImage == null) {
- fgTitleImage= CompareUIPlugin.getImageDescriptor(COMPARE_EDITOR_IMAGE_NAME).createImage();
- CompareUI.disposeOnShutdown(fgTitleImage);
- }
- return fgTitleImage;
- }
-
- /**
- * Returns the configuration object for the viewers within the compare editor.
- * Returns the configuration which was passed to the constructor.
- *
- * @return the compare configuration
- */
- public CompareConfiguration getCompareConfiguration() {
- return fCompareConfiguration;
- }
-
- /**
- * Adds standard actions to the given <code>ToolBarManager</code>.
- * <p>
- * Subclasses may override to add their own actions.
- * </p>
- *
- * @param toolBarManager the <code>ToolBarManager</code> to which to contribute
- */
- public void contributeToToolBar(ToolBarManager toolBarManager) {
-
- toolBarManager.add(new Separator());
- toolBarManager.add(fIgnoreWhitespace);
- toolBarManager.add(fShowPseudoConflicts);
- }
-
- /**
- * Runs the compare operation and stores the compare result.
- *
- * @param monitor the progress monitor to use to display progress and receive
- * requests for cancelation
- * @exception InvocationTargetException if the <code>prepareInput</code> method must propagate a checked exception,
- * it should wrap it inside an <code>InvocationTargetException</code>; runtime exceptions are automatically
- * wrapped in an <code>InvocationTargetException</code> by the calling context
- * @exception InterruptedException if the operation detects a request to cancel,
- * using <code>IProgressMonitor.isCanceled()</code>, it should exit by throwing
- * <code>InterruptedException</code>
- */
- public void run(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
- fInput= prepareInput(monitor);
- }
-
- /**
- * Runs the compare operation and returns the compare result.
- * If <code>null</code> is returned no differences were found and no compare editor needs to be opened.
- * Progress should be reported to the given progress monitor.
- * A request to cancel the operation should be honored and acknowledged
- * by throwing <code>InterruptedException</code>.
- * <p>
- * Note: this method is typically called in a modal context thread which doesn't have a Display assigned.
- * Implementors of this method shouldn't therefore allocated any SWT resources in this method.
- * </p>
- *
- * @param monitor the progress monitor to use to display progress and receive
- * requests for cancelation
- * @return the result of the compare operation, or <code>null</code> if there are no differences
- * @exception InvocationTargetException if the <code>prepareInput</code> method must propagate a checked exception,
- * it should wrap it inside an <code>InvocationTargetException</code>; runtime exceptions are automatically
- * wrapped in an <code>InvocationTargetException</code> by the calling context
- * @exception InterruptedException if the operation detects a request to cancel,
- * using <code>IProgressMonitor.isCanceled()</code>, it should exit by throwing
- * <code>InterruptedException</code>
- */
- protected abstract Object prepareInput(IProgressMonitor monitor)
- throws InvocationTargetException, InterruptedException;
-
- /**
- * Returns the compare result computed by the most recent call to the
- * <code>run</code> method. Returns <code>null</code> if no
- * differences were found.
- *
- * @return the compare result prepared in method <code>prepareInput</code>
- * or <code>null</code> if there were no differences
- */
- public Object getCompareResult() {
- return fInput;
- }
-
- /**
- * Create the SWT controls that are used to display the result of the compare operation.
- * Creates the SWT Controls and sets up the wiring between the individual panes.
- * This implementation creates all four panes but makes only the necessary ones visible.
- * Finally it feeds the compare result into the top left structure viewer
- * and the content viewer.
- * <p>
- * Subclasses may override if they need to change the layout or wiring between panes.
- *
- * @param parent the parent control under which the control must be created
- * @return the SWT control hierarchy for the compare editor
- */
- public Control createContents(Composite parent) {
-
- fComposite= new Splitter(parent, SWT.VERTICAL);
- fComposite.setData(this);
-
- Control outline= null;
- if (!fUseOutlineView)
- outline= createOutlineContents(fComposite, SWT.HORIZONTAL);
-
- fContentInputPane= new CompareViewerSwitchingPane(fComposite, SWT.BORDER | SWT.FLAT) {
- protected Viewer getViewer(Viewer oldViewer, Object input) {
- if (input instanceof ICompareInput)
- return findContentViewer(oldViewer, (ICompareInput)input, this);
- return null;
- }
- };
- if (fFocusPane == null)
- fFocusPane= fContentInputPane;
- if (outline != null)
- fComposite.setVisible(outline, false);
- fComposite.setVisible(fContentInputPane, true);
-
- if (fStructureInputPane != null)
- fComposite.setWeights(new int[] { 30, 70 });
-
- fComposite.layout();
-
- if (fStructureInputPane != null && fInput instanceof ICompareInput) {
- fStructureInputPane.setInput(fInput);
- ISelection sel= fStructureInputPane.getSelection();
- if (sel == null || sel.isEmpty())
- feed1(sel); // we only feed downstream viewers if the top left pane is empty
- }
-
- fComposite.setData("Nav", //$NON-NLS-1$
- new CompareViewerSwitchingPane[] {
- fStructureInputPane,
- fStructurePane1,
- fStructurePane2,
- fContentInputPane
- }
- );
-
- return fComposite;
- }
-
- /**
- * @param parent the parent control under which the control must be created
- * @param direction the layout direction of the contents, either </code>SWT.HORIZONTAL<code> or </code>SWT.VERTICAL<code>
- * @return the SWT control hierarchy for the outline part of the compare editor
- * @since 3.0
- */
- public Control createOutlineContents(Composite parent, int direction) {
- final Splitter h= new Splitter(parent, direction);
-
- fStructureInputPane= new CompareViewerSwitchingPane(h, SWT.BORDER | SWT.FLAT, true) {
- protected Viewer getViewer(Viewer oldViewer, Object input) {
- if (input instanceof DiffNode) {
- DiffNode dn= (DiffNode) input;
- if (dn.hasChildren())
- return createDiffViewer(this);
- }
- if (input instanceof ICompareInput)
- return findStructureViewer(oldViewer, (ICompareInput)input, this);
- return null;
- }
- };
- fFocusPane= fStructureInputPane;
-
- fStructurePane1= new CompareViewerSwitchingPane(h, SWT.BORDER | SWT.FLAT, true) {
- protected Viewer getViewer(Viewer oldViewer, Object input) {
- if (input instanceof ICompareInput)
- return findStructureViewer(oldViewer, (ICompareInput)input, this);
- return null;
- }
- };
- h.setVisible(fStructurePane1, false);
-
- fStructurePane2= new CompareViewerSwitchingPane(h, SWT.BORDER | SWT.FLAT, true) {
- protected Viewer getViewer(Viewer oldViewer, Object input) {
- if (input instanceof ICompareInput)
- return findStructureViewer(oldViewer, (ICompareInput)input, this);
- return null;
- }
- };
- h.setVisible(fStructurePane2, false);
-
- // setup the wiring for top left pane
- fStructureInputPane.addOpenListener(
- new IOpenListener() {
- public void open(OpenEvent oe) {
- feed1(oe.getSelection());
- }
- }
- );
- fStructureInputPane.addSelectionChangedListener(
- new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent e) {
- ISelection s= e.getSelection();
- if (s == null || s.isEmpty())
- feed1(s);
- }
- }
- );
- fStructureInputPane.addDoubleClickListener(
- new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- feedDefault1(event.getSelection());
- }
- }
- );
-
- fStructurePane1.addSelectionChangedListener(
- new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent e) {
- feed2(e.getSelection());
- }
- }
- );
-
- fStructurePane2.addSelectionChangedListener(
- new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent e) {
- feed3(e.getSelection());
- }
- }
- );
-
- if (fUseOutlineView) {
- if (fInput instanceof ICompareInput) {
- fStructureInputPane.setInput(fInput);
- ISelection sel= fStructureInputPane.getSelection();
- if (sel == null || sel.isEmpty())
- feed1(sel); // we only feed downstream viewers if the top left pane is empty
- }
-
- fComposite.setData("Nav", //$NON-NLS-1$
- new CompareViewerSwitchingPane[] {
- fStructureInputPane,
- fStructurePane1,
- fStructurePane2,
- fContentInputPane
- }
- );
- }
-
- return h;
- }
-
- private void feed1(final ISelection selection) {
- BusyIndicator.showWhile(fComposite.getDisplay(),
- new Runnable() {
- public void run() {
- if (selection == null || selection.isEmpty()) {
- Object input= fStructureInputPane.getInput();
- fContentInputPane.setInput(input);
- fStructurePane2.setInput(null); // clear downstream pane
- fStructurePane1.setInput(null);
- } else {
- Object input= getElement(selection);
- fContentInputPane.setInput(input);
- if (structureCompareOnSingleClick())
- fStructurePane1.setInput(input);
- fStructurePane2.setInput(null); // clear downstream pane
- if (fStructurePane1.getInput() != input)
- fStructurePane1.setInput(null);
- }
- }
- }
- );
- }
-
- private void feedDefault1(final ISelection selection) {
- BusyIndicator.showWhile(fComposite.getDisplay(),
- new Runnable() {
- public void run() {
- if (!selection.isEmpty())
- fStructurePane1.setInput(getElement(selection));
- }
- }
- );
- }
-
- private void feed2(final ISelection selection) {
- BusyIndicator.showWhile(fComposite.getDisplay(),
- new Runnable() {
- public void run() {
- if (selection.isEmpty()) {
- Object input= fStructurePane1.getInput();
- fContentInputPane.setInput(input);
- fStructurePane2.setInput(null);
- } else {
- Object input= getElement(selection);
- fContentInputPane.setInput(input);
- fStructurePane2.setInput(input);
- }
- }
- }
- );
- }
-
- private void feed3(final ISelection selection) {
- BusyIndicator.showWhile(fComposite.getDisplay(),
- new Runnable() {
- public void run() {
- if (selection.isEmpty())
- fContentInputPane.setInput(fStructurePane2.getInput());
- else
- fContentInputPane.setInput(getElement(selection));
- }
- }
- );
-
- }
-
- /**
- * Returns the first element of the given selection if the selection
- * is a <code>IStructuredSelection</code> with exactly one element. Returns
- * <code>null</code> otherwise.
- *
- * @param selection the selection
- * @return the first element of the selection, or <code>null</code>
- */
- private static Object getElement(ISelection selection) {
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection ss= (IStructuredSelection) selection;
- if (ss.size() == 1)
- return ss.getFirstElement();
- }
- return null;
- }
-
- /**
- * Asks this input to take focus within its container (editor).
- * <p>
- * Clients should not call this method but they may
- * override if they implement a different layout with different visual
- * components. Clients are free to call the inherited method.
- * </p>
- */
- public void setFocus() {
- if (fFocusPane != null) {
- Viewer v= fFocusPane.getViewer();
- if (v != null) {
- Control c= v.getControl();
- if (c != null)
- c.setFocus();
- }
- } else if (fComposite != null)
- fComposite.setFocus();
- }
-
- /**
- * Factory method for creating a differences viewer for the top left pane.
- * It is called from <code>createContents</code> and returns a <code>DiffTreeViewer</code>.
- * <p>
- * Subclasses may override if they need a different viewer.
- * </p>
- *
- * @param parent the SWT parent control under which to create the viewer's SWT controls
- * @return a compare viewer for the top left pane
- */
- public Viewer createDiffViewer(Composite parent) {
- return new DiffTreeViewer(parent, fCompareConfiguration);
- }
-
- /**
- * Implements the dynamic viewer switching for structure viewers.
- * The method must return a compare viewer based on the old (or current) viewer
- * and a new input object. If the old viewer is suitable for showing the new input the old viewer
- * can be returned. Otherwise a new viewer must be created under the given parent composite or
- * <code>null</code> can be returned to indicate that no viewer could be found.
- * <p>
- * This implementation forwards the request to <code>CompareUI.findStructureViewer</code>.
- * <p>
- * Subclasses may override to implement a different strategy.
- * </p>
- * @param oldViewer a new viewer is only created if this old viewer cannot show the given input
- * @param input the input object for which to find a structure viewer
- * @param parent the SWT parent composite under which the new viewer is created
- * @return a compare viewer which is suitable for the given input object or <code>null</code>
- */
- public Viewer findStructureViewer(Viewer oldViewer, ICompareInput input, Composite parent) {
- return CompareUI.findStructureViewer(oldViewer, input, parent, fCompareConfiguration);
- }
-
- /**
- * Implements the dynamic viewer switching for content viewers.
- * The method must return a compare viewer based on the old (or current) viewer
- * and a new input object. If the old viewer is suitable for showing the new input the old viewer
- * can be returned. Otherwise a new viewer must be created under the given parent composite or
- * <code>null</code> can be returned to indicate that no viewer could be found.
- * <p>
- * This implementation forwards the request to <code>CompareUI.findContentViewer</code>.
- * <p>
- * Subclasses may override to implement a different strategy.
- * </p>
- * @param oldViewer a new viewer is only created if this old viewer cannot show the given input
- * @param input the input object for which to find a structure viewer
- * @param parent the SWT parent composite under which the new viewer is created
- * @return a compare viewer which is suitable for the given input object or <code>null</code>
- */
- public Viewer findContentViewer(Viewer oldViewer, ICompareInput input, Composite parent) {
-
- Viewer newViewer= CompareUI.findContentViewer(oldViewer, input, parent, fCompareConfiguration);
-
- boolean isNewViewer= newViewer != oldViewer;
- if (DEBUG) System.out.println("CompareEditorInput.findContentViewer: " + isNewViewer); //$NON-NLS-1$
-
- if (isNewViewer && newViewer instanceof IPropertyChangeNotifier) {
- final IPropertyChangeNotifier dsp= (IPropertyChangeNotifier) newViewer;
- dsp.addPropertyChangeListener(fDirtyStateListener);
-
- Control c= newViewer.getControl();
- c.addDisposeListener(
- new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- dsp.removePropertyChangeListener(fDirtyStateListener);
- }
- }
- );
- }
-
- return newViewer;
- }
-
- /**
- * Returns <code>true</code> if there are unsaved changes.
- * The value returned is the value of the <code>DIRTY_STATE</code> property of this input object.
-
- * Returns <code>true</code> if this input has unsaved changes,
- * that is if <code>setDirty(true)</code> has been called.
- * Subclasses don't have to override if the functionality provided by <doce>setDirty</code>
- * is sufficient.
- *
- * @return <code>true</code> if there are changes that need to be saved
- */
- public boolean isSaveNeeded() {
- return fDirty || fDirtyViewers.size() > 0;
- }
-
- /**
- * Sets the dirty state of this input to the given
- * value and sends out a <code>PropertyChangeEvent</code> if the new value differs from the old value.
- *
- * @param dirty the dirty state for this compare input
- */
- public void setDirty(boolean dirty) {
-
- boolean confirmSave= true;
- Object o= fCompareConfiguration.getProperty(CompareEditor.CONFIRM_SAVE_PROPERTY);
- if (o instanceof Boolean)
- confirmSave= ((Boolean)o).booleanValue();
-
- if (!confirmSave) {
- fDirty= dirty;
- if (!fDirty)
- fDirtyViewers.clear();
- }
- }
-
- private void setDirty(Object source, boolean dirty) {
- Assert.isNotNull(source);
- boolean oldDirty= fDirtyViewers.size() > 0;
- if (dirty)
- fDirtyViewers.add(source);
- else
- fDirtyViewers.remove(source);
- boolean newDirty= fDirty || fDirtyViewers.size() > 0;
- if (DEBUG) System.out.println("setDirty("+source+", "+dirty+"): " + newDirty); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- if (oldDirty != newDirty)
- Utilities.firePropertyChange(fListenerList, this, DIRTY_STATE, new Boolean(oldDirty), new Boolean(newDirty));
- }
-
- /* (non Javadoc)
- * see IPropertyChangeNotifier.addListener
- */
- public void addPropertyChangeListener(IPropertyChangeListener listener) {
- if (listener != null)
- fListenerList.add(listener);
- }
-
- /* (non Javadoc)
- * see IPropertyChangeNotifier.removeListener
- */
- public void removePropertyChangeListener(IPropertyChangeListener listener) {
- if (listener != null)
- fListenerList.remove(listener);
- }
-
- /**
- * Save any unsaved changes.
- * Empty implementation.
- * Subclasses must override to save any changes.
- *
- * @param pm an <code>IProgressMonitor</code> that the implementation of save may use to show progress
- * @deprecated Override method saveChanges instead.
- */
- public void save(IProgressMonitor pm) {
- // empty default implementation
- }
-
- /**
- * Save any unsaved changes.
- * Subclasses must override to save any changes.
- * This implementation tries to flush changes in all viewers by
- * calling <code>ISavable.save</code> on them.
- *
- * @param pm an <code>IProgressMonitor</code> that the implementation of save may use to show progress
- * @throws CoreException
- * @since 2.0
- */
- public void saveChanges(IProgressMonitor pm) throws CoreException {
-
- // flush changes in any dirty viewer
- flushViewer(fStructureInputPane, pm);
- flushViewer(fStructurePane1, pm);
- flushViewer(fStructurePane2, pm);
- flushViewer(fContentInputPane, pm);
-
- save(pm);
- }
-
- private static void flushViewer(CompareViewerSwitchingPane pane, IProgressMonitor pm) throws CoreException {
- if (pane != null) {
- Viewer v= pane.getViewer();
- if (v instanceof ISavable)
- ((ISavable)v).save(pm);
- }
- }
-}
-
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java
deleted file mode 100644
index 222de63ac..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.util.ResourceBundle;
-
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.Viewer;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.content.IContentType;
-
-import org.eclipse.ui.IReusableEditor;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-import org.eclipse.compare.internal.CompareUIPlugin;
-import org.eclipse.compare.structuremergeviewer.ICompareInput;
-
-
-/**
- * The class <code>CompareUI</code> defines the entry point to initiate a configurable
- * compare operation on arbitrary resources. The result of the compare
- * is opened into a compare editor where the details can be browsed and
- * edited in dynamically selected structure and content viewers.
- * <p>
- * The Compare UI provides a registry for content and structure compare viewers,
- * which is initialized from extensions contributed to extension points
- * declared by this plug-in.
- */
-public final class CompareUI {
-
- /**
- * Compare Plug-in ID (value <code>"org.eclipse.compare"</code>).
- * @since 2.0
- */
- public static final String PLUGIN_ID= "org.eclipse.compare"; //$NON-NLS-1$
-
- /**
- * Image descriptor for the disabled icon of the 'Next' tool bar button.
- * @since 2.0
- */
- public static final ImageDescriptor DESC_DTOOL_NEXT= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.DTOOL_NEXT);
- /**
- * Image descriptor for the normal icon of the 'Next' tool bar button.
- * @since 2.0
- */
- public static final ImageDescriptor DESC_CTOOL_NEXT= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.CTOOL_NEXT);
- /**
- * Image descriptor for the roll-over icon of the 'Next' tool bar button.
- * @since 2.0
- */
- public static final ImageDescriptor DESC_ETOOL_NEXT= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.ETOOL_NEXT);
-
- /**
- * Image descriptor for the disabled icon of the 'Previous' tool bar button.
- * @since 2.0
- */
- public static final ImageDescriptor DESC_DTOOL_PREV= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.DTOOL_PREV);
- /**
- * Image descriptor for the normal icon of the 'Previous' tool bar button.
- * @since 2.0
- */
- public static final ImageDescriptor DESC_CTOOL_PREV= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.CTOOL_PREV);
- /**
- * Image descriptor for the roll-over icon of the 'Previous' tool bar button.
- * @since 2.0
- */
- public static final ImageDescriptor DESC_ETOOL_PREV= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.ETOOL_PREV);
-
- /**
- * Name of the title property of a compare viewer.
- * If a property with this name is set
- * on the top level SWT control of a viewer, it is used as a title in the pane's
- * title bar.
- */
- public static final String COMPARE_VIEWER_TITLE= "org.eclipse.compare.CompareUI.CompareViewerTitle"; //$NON-NLS-1$
-
- private CompareUI() {
- // empty implementation
- }
-
- public static AbstractUIPlugin getPlugin() {
- return CompareUIPlugin.getDefault();
- }
-
- /**
- * Returns this plug-in's resource bundle.
- *
- * @return the plugin's resource bundle
- */
- public static ResourceBundle getResourceBundle() {
- return CompareUIPlugin.getDefault().getResourceBundle();
- }
-
- /**
- * Performs the comparison described by the given input and opens a
- * compare editor on the result in the currently active workbench page.
- *
- * @param input the input on which to open the compare editor
- */
- public static void openCompareEditor(CompareEditorInput input) {
- openCompareEditorOnPage(input, null);
- }
-
- /**
- * Performs the comparison described by the given input and opens a
- * compare editor on the result in the given workbench page.
- *
- * @param input the input on which to open the compare editor
- * @param page the workbench page in which to open the compare editor
- * @since 2.1
- */
- public static void openCompareEditorOnPage(CompareEditorInput input, IWorkbenchPage page) {
- CompareUIPlugin plugin= CompareUIPlugin.getDefault();
- if (plugin != null)
- plugin.openCompareEditor(input, page, null);
- }
-
- /**
- * Performs the comparison described by the given input and
- * shows the result in the given editor.
- *
- * @param input the input on which to open the compare editor
- * @param editor the compare editor to reuse or null to create a new one
- * @since 3.0
- */
- public static void reuseCompareEditor(CompareEditorInput input, IReusableEditor editor) {
- CompareUIPlugin plugin= CompareUIPlugin.getDefault();
- if (plugin != null)
- plugin.openCompareEditor(input, null, editor);
- }
-
- /**
- * Performs the comparison described by the given input and opens a
- * modal compare dialog on the result.
- *
- * @param input the input on which to open the compare dialog
- */
- public static void openCompareDialog(CompareEditorInput input) {
- CompareUIPlugin plugin= CompareUIPlugin.getDefault();
- if (plugin != null)
- plugin.openCompareDialog(input);
- }
-
- /**
- * Registers an image descriptor for the given type.
- *
- * @param type the type
- * @param descriptor the image descriptor
- */
- public static void registerImageDescriptor(String type, ImageDescriptor descriptor) {
- CompareUIPlugin.registerImageDescriptor(type, descriptor);
- }
-
- /**
- * Returns a shared image for the given type, or a generic image if none
- * has been registered for the given type.
- * <p>
- * Note: Images returned from this method will be automatically disposed
- * of when this plug-in shuts down. Callers must not dispose of these
- * images themselves.
- * </p>
- *
- * @param type the type
- * @return the image
- */
- public static Image getImage(String type) {
- return CompareUIPlugin.getImage(type);
- }
-
- /**
- * Registers the given image for being disposed when this plug-in is shutdown.
- *
- * @param image the image to register for disposal
- */
- public static void disposeOnShutdown(Image image) {
- CompareUIPlugin.disposeOnShutdown(image);
- }
-
- /**
- * Returns a shared image for the given adaptable.
- * This convenience method queries the given adaptable
- * for its <code>IWorkbenchAdapter.getImageDescriptor</code>, which it
- * uses to create an image if it does not already have one.
- * <p>
- * Note: Images returned from this method will be automatically disposed
- * of when this plug-in shuts down. Callers must not dispose of these
- * images themselves.
- * </p>
- *
- * @param adaptable the adaptable for which to find an image
- * @return an image
- */
- public static Image getImage(IAdaptable adaptable) {
- return CompareUIPlugin.getImage(adaptable);
- }
-
-
- /**
- * Creates a stream merger for the given content type.
- * If no stream merger is registered for the given content type <code>null</code> is returned.
- *
- * @param type the type for which to find a stream merger
- * @return a stream merger for the given type, or <code>null</code> if no
- * stream merger has been registered
- */
- public static IStreamMerger createStreamMerger(IContentType type) {
- return CompareUIPlugin.getDefault().createStreamMerger(type);
- }
-
- /**
- * Creates a stream merger for the given file extension.
- * If no stream merger is registered for the file extension <code>null</code> is returned.
- *
- * @param type the type for which to find a stream merger
- * @return a stream merger for the given type, or <code>null</code> if no
- * stream merger has been registered
- */
- public static IStreamMerger createStreamMerger(String type) {
- return CompareUIPlugin.getDefault().createStreamMerger(type);
- }
-
- /**
- * Returns a structure compare viewer based on an old viewer and an input object.
- * If the old viewer is suitable for showing the input, the old viewer
- * is returned. Otherwise, the input's type is used to find a viewer descriptor in the registry
- * which in turn is used to create a structure compare viewer under the given parent composite.
- * If no viewer descriptor can be found <code>null</code> is returned.
- *
- * @param oldViewer a new viewer is only created if this old viewer cannot show the given input
- * @param input the input object for which to find a structure viewer
- * @param parent the SWT parent composite under which the new viewer is created
- * @param configuration a configuration which is passed to a newly created viewer
- * @return the compare viewer which is suitable for the given input object or <code>null</code>
- */
- public static Viewer findStructureViewer(Viewer oldViewer, ICompareInput input, Composite parent,
- CompareConfiguration configuration) {
-
- return CompareUIPlugin.getDefault().findStructureViewer(oldViewer, input, parent, configuration);
- }
-
- /**
- * Returns a content compare viewer based on an old viewer and an input object.
- * If the old viewer is suitable for showing the input the old viewer
- * is returned. Otherwise the input's type is used to find a viewer descriptor in the registry
- * which in turn is used to create a content compare viewer under the given parent composite.
- * If no viewer descriptor can be found <code>null</code> is returned.
- *
- * @param oldViewer a new viewer is only created if this old viewer cannot show the given input
- * @param input the input object for which to find a content viewer
- * @param parent the SWT parent composite under which the new viewer is created
- * @param configuration a configuration which is passed to a newly created viewer
- * @return the compare viewer which is suitable for the given input object or <code>null</code>
- */
- public static Viewer findContentViewer(Viewer oldViewer, ICompareInput input, Composite parent,
- CompareConfiguration configuration) {
- return CompareUIPlugin.getDefault().findContentViewer(oldViewer, input, parent, configuration);
- }
-
- /**
- * Returns a content compare viewer based on an old viewer and an input
- * object. If the old viewer is suitable for showing the input the old
- * viewer is returned. Otherwise the input's type is used to find a viewer
- * descriptor in the registry which in turn is used to create a content
- * compare viewer under the given parent composite. In order to determine
- * the input's type, the input must either implement IStreamContentAccessor
- * and ITypedElement or ICompareInput. If no viewer descriptor can be found
- * <code>null</code> is returned.
- *
- * @param oldViewer a new viewer is only created if this old viewer cannot show the given input
- * @param input the input object for which to find a content viewer. Must
- * implement either <code>IStreamContentAccessor</code> and<code>
- * ITypedElement</code> or <code>ICompareInput</code>.
- * @param parent the SWT parent composite under which the new viewer is created
- * @param configuration a configuration which is passed to a newly created viewer
- * @return the compare viewer which is suitable for the given input object or <code>null</code>
- */
- public static Viewer findContentViewer(Viewer oldViewer, Object input, Composite parent,
- CompareConfiguration configuration) {
-
- return CompareUIPlugin.getDefault().findContentViewer(oldViewer, input, parent, configuration);
- }
-
- /**
- * Adds an alias for the given type.
- * Subsequent calls to <code>findStructureViewer</code>
- * treat alias as a synonym for type and return the same viewer.
- * <p>
- * Note: this method is for internal use only. Clients should not call this method.
- * @param type a type name for which a viewer has been registered
- * @param alias a type name which should be treated as a synonym of type
- * @since 2.0
- */
- public static void addStructureViewerAlias(String type, String alias) {
- CompareUIPlugin.getDefault().addStructureViewerAlias(type, alias);
- }
-
- /**
- * Remove all aliases for the given type. This method does not affect
- * the initial binding between type and viewer. If no aliases exist for the
- * given type this method does nothing.
- * <p>
- * Note: this method is for internal use only. Clients should not call this method.
- * @param type the type name for which all synonymes are removed.
- * @since 2.0
- */
- public static void removeAllStructureViewerAliases(String type) {
- CompareUIPlugin.getDefault().removeAllStructureViewerAliases(type);
- }
-}
-
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java
deleted file mode 100644
index 646f99092..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.*;
-
-import org.eclipse.jface.action.ToolBarManager;
-
-/**
- * A <code>CompareViewerPane</code> is a convenience class which installs a
- * <code>CLabel</code> and a <code>Toolbar</code> in a <code>ViewForm</code>.
- * <P>
- * Double clicking onto the <code>CompareViewerPane</code>'s title bar maximizes
- * the <code>CompareViewerPane</code> to the size of an enclosing <code>Splitter</code>
- * (if there is one).
- * If more <code>Splitters</code> are nested maximizing walks up and
- * maximizes to the outermost <code>Splitter</code>.
- *
- * @since 2.0
- */
-public class CompareViewerPane extends ViewForm {
-
- private ToolBarManager fToolBarManager;
-
- /**
- * Constructs a new instance of this class given its parent
- * and a style value describing its behavior and appearance.
- *
- * @param container a widget which will be the container of the new instance (cannot be null)
- * @param style the style of widget to construct
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
- * </ul>
- * @exception org.eclipse.swt.SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * </ul>
- */
- public CompareViewerPane(Composite container, int style) {
- super(container, style);
-
- marginWidth= 0;
- marginHeight= 0;
-
- CLabel label= new CLabel(this, SWT.NONE) {
- public Point computeSize(int wHint, int hHint, boolean changed) {
- return super.computeSize(wHint, Math.max(24, hHint), changed);
- }
- };
- setTopLeft(label);
-
- MouseAdapter ml= new MouseAdapter() {
- public void mouseDoubleClick(MouseEvent e) {
- Control content= getContent();
- if (content != null && content.getBounds().contains(e.x, e.y))
- return;
- Control parent= getParent();
- if (parent instanceof Splitter)
- ((Splitter)parent).setMaximizedControl(CompareViewerPane.this);
- }
- };
-
- addMouseListener(ml);
- label.addMouseListener(ml);
-
- addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- if (fToolBarManager != null) {
- fToolBarManager.removeAll();
- fToolBarManager= null;
- }
- }
- });
- }
-
- /**
- * Set the pane's title text.
- * The value <code>null</code> clears it.
- *
- * @param label the text to be displayed in the pane or null
- */
- public void setText(String label) {
- CLabel cl= (CLabel) getTopLeft();
- if (cl != null)
- cl.setText(label);
- }
-
- /**
- * Set the pane's title Image.
- * The value <code>null</code> clears it.
- *
- * @param image the image to be displayed in the pane or null
- */
- public void setImage(Image image) {
- CLabel cl= (CLabel) getTopLeft();
- if (cl != null)
- cl.setImage(image);
- }
-
- /**
- * Returns a <code>ToolBarManager</code> if the given parent is a
- * <code>CompareViewerPane</code> or <code>null</code> otherwise.
- *
- * @param parent a <code>Composite</code> or <code>null</code>
- * @return a <code>ToolBarManager</code> if the given parent is a <code>CompareViewerPane</code> otherwise <code>null</code>
- */
- public static ToolBarManager getToolBarManager(Composite parent) {
- if (parent instanceof CompareViewerPane) {
- CompareViewerPane pane= (CompareViewerPane) parent;
- return pane.getToolBarManager();
- }
- return null;
- }
-
- /**
- * Clears tool items in the <code>CompareViewerPane</code>'s control bar.
- *
- * @param parent a <code>Composite</code> or <code>null</code>
- */
- public static void clearToolBar(Composite parent) {
- ToolBarManager tbm= getToolBarManager(parent);
- if (tbm != null) {
- tbm.removeAll();
- tbm.update(true);
- }
- }
-
- //---- private stuff
-
- private ToolBarManager getToolBarManager() {
- if (fToolBarManager == null) {
- ToolBar tb= new ToolBar(this, SWT.FLAT);
- setTopCenter(tb);
- fToolBarManager= new ToolBarManager(tb);
- }
- return fToolBarManager;
- }
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java
deleted file mode 100644
index 1b5c92d8f..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.text.MessageFormat;
-
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.*;
-
-import org.eclipse.jface.util.ListenerList;
-import org.eclipse.jface.viewers.*;
-
-import org.eclipse.compare.internal.*;
-import org.eclipse.compare.structuremergeviewer.ICompareInput;
-
-
-/**
- * A custom <code>CompareViewerPane</code> that supports dynamic viewer switching.
- *
- * <p>
- * Clients must implement the viewer switching strategy by implementing
- * the <code>getViewer(Viewer, Object)</code> method.
- * <p>
- * If a property with the name <code>CompareUI.COMPARE_VIEWER_TITLE</code> is set
- * on the top level SWT control of a viewer, it is used as a title in the <code>CompareViewerPane</code>'s
- * title bar.
- *
- * @since 2.0
- */
-public abstract class CompareViewerSwitchingPane extends CompareViewerPane
- implements ISelectionChangedListener, ISelectionProvider, IDoubleClickListener {
-
- private Viewer fViewer;
- private Object fInput;
- private ListenerList fSelectionListeners= new ListenerList();
- private ListenerList fDoubleClickListener= new ListenerList();
- private ListenerList fOpenListener= new ListenerList();
- private boolean fControlVisibility= false;
- private String fTitle;
- private String fTitleArgument;
-
- private IOpenListener fOpenHandler= new IOpenListener() {
- public void open(OpenEvent event) {
- Object[] listeners= fOpenListener.getListeners();
- for (int i= 0; i < listeners.length; i++)
- ((IOpenListener) listeners[i]).open(event);
- }
- };
-
- /**
- * Creates a <code>CompareViewerSwitchingPane</code> as a child of the given parent and with the
- * specified SWT style bits.
- *
- * @param parent a widget which will be the parent of the new instance (cannot be null)
- * @param style the style of widget to construct
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
- * </ul>
- * @exception org.eclipse.swt.SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * </ul>
- */
- public CompareViewerSwitchingPane(Composite parent, int style) {
- this(parent, style, false);
- }
-
- /**
- * Creates a <code>CompareViewerSwitchingPane</code> as a child of the given parent and with the
- * specified SWT style bits.
- *
- * @param parent a widget which will be the parent of the new instance (cannot be null)
- * @param style the style of widget to construct
- * @param visibility the initial visibility of the CompareViewerSwitchingPane
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
- * </ul>
- * @exception org.eclipse.swt.SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * </ul>
- */
- public CompareViewerSwitchingPane(Composite parent, int style, boolean visibility) {
- super(parent, style);
-
- fControlVisibility= visibility;
-
- setViewer(new NullViewer(this));
-
- addDisposeListener(
- new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- if (fViewer != null)
- fViewer.removeSelectionChangedListener(CompareViewerSwitchingPane.this);
- if (fViewer instanceof StructuredViewer) {
- StructuredViewer sv= (StructuredViewer) fViewer;
- sv.removeDoubleClickListener(CompareViewerSwitchingPane.this);
- sv.removeOpenListener(fOpenHandler);
- }
- fViewer= null;
- fInput= null;
- fSelectionListeners= null;
- }
- }
- );
- }
-
- /**
- * Returns the current viewer.
- *
- * @return the current viewer
- */
- public Viewer getViewer() {
- return fViewer;
- }
-
- private void setViewer(Viewer newViewer) {
-
- if (newViewer == fViewer)
- return;
-
- boolean oldEmpty= isEmpty();
-
- if (fViewer != null) {
-
- fViewer.removeSelectionChangedListener(this);
-
- if (fViewer instanceof StructuredViewer) {
- StructuredViewer sv= (StructuredViewer) fViewer;
- sv.removeDoubleClickListener(this);
- sv.removeOpenListener(fOpenHandler);
- }
-
- Control content= getContent();
- setContent(null);
-
- fViewer.setInput(null);
-
- if (content != null && !content.isDisposed())
- content.dispose();
-
- } else
- oldEmpty= false;
- setContent(null);
-
- fViewer= newViewer;
-
- if (fViewer != null) {
- // we have to remember and restore the old visibility of the CustomPane
- // since setContent changes the visibility
- boolean old= getVisible();
- setContent(fViewer.getControl());
- setVisible(old); // restore old visibility
-
- boolean newEmpty= isEmpty();
-
- fViewer.addSelectionChangedListener(this);
-
- if (fViewer instanceof StructuredViewer) {
- StructuredViewer sv= (StructuredViewer) fViewer;
- sv.addDoubleClickListener(this);
- sv.addOpenListener(fOpenHandler);
- }
-
- if (oldEmpty != newEmpty) { // relayout my container
- Composite parent= getParent();
- if (parent instanceof Splitter)
- ((Splitter)parent).setVisible(this, fControlVisibility ? !newEmpty : true);
- }
-
- layout(true);
- }
- }
-
- /**
- * Returns the optional title argument that has been set with <code>setTitelArgument</code>
- * or <code>null</code> if no optional title argument has been set.
- * <p>
- * Note: this method is for internal use only. Clients should not call this method.
- *
- * @return the optional title argument or <code>null</code>
- */
- public String getTitleArgument() {
- return fTitleArgument;
- }
-
- /**
- * Returns <code>true</code> if no viewer is installed or if the current viewer
- * is a <code>NullViewer</code>.
- *
- * @return <code>true</code> if no viewer is installed or if the current viewer is a <code>NullViewer</code>
- */
- public boolean isEmpty() {
- return fViewer == null || fViewer instanceof NullViewer;
- }
-
- public void addSelectionChangedListener(ISelectionChangedListener l) {
- fSelectionListeners.add(l);
- }
-
- public void removeSelectionChangedListener(ISelectionChangedListener l) {
- fSelectionListeners.remove(l);
- }
-
- public void addDoubleClickListener(IDoubleClickListener l) {
- fDoubleClickListener.add(l);
- }
-
- public void removeDoubleClickListener(IDoubleClickListener l) {
- fDoubleClickListener.remove(l);
- }
-
- public void addOpenListener(IOpenListener l) {
- fOpenListener.add(l);
- }
-
- public void removeOpenListener(IOpenListener l) {
- fOpenListener.remove(l);
- }
-
- public void doubleClick(DoubleClickEvent event) {
- Object[] listeners= fDoubleClickListener.getListeners();
- for (int i= 0; i < listeners.length; i++)
- ((IDoubleClickListener) listeners[i]).doubleClick(event);
- }
-
- public ISelection getSelection() {
- if (fViewer != null)
- return fViewer.getSelection();
- return null;
- }
-
- public void setSelection(ISelection s) {
- if (fViewer != null)
- fViewer.setSelection(s);
- }
-
- public void selectionChanged(SelectionChangedEvent ev) {
- Object[] listeners= fSelectionListeners.getListeners();
- for (int i= 0; i < listeners.length; i++)
- ((ISelectionChangedListener) listeners[i]).selectionChanged(ev);
- }
-
- private boolean hasFocus2() {
- // do we have focus?
- Display display= getDisplay();
- if (display != null)
- for (Control focus= display.getFocusControl(); focus != null; focus= focus.getParent())
- if (focus == this)
- return true;
- return false;
- }
-
- /**
- * Sets the input object of this pane.
- * For this input object a suitable viewer is determined by calling the abstract
- * method <code>getViewer(Viewer, Object)</code>.
- * If the returned viewer differs from the current one, the old viewer
- * is disposed and the new one installed. Then the input object is fed
- * into the newly installed viewer by calling its <code>setInput(Object)</code> method.
- * If new and old viewer don't differ no new viewer is installed but just
- * <code>setInput(Object)</code> is called.
- * If the input is <code>null</code> the pane is cleared,
- * that is the current viewer is disposed.
- *
- * @param input the new input object or <code>null</code>
- */
- public void setInput(Object input) {
-
- if (fInput == input)
- return;
-
- boolean hadFocus= hasFocus2();
-
- fInput= input;
-
- // viewer switching
- Viewer newViewer= null;
- if (input != null)
- newViewer= getViewer(fViewer, input);
-
- if (newViewer == null) {
- if (fViewer instanceof NullViewer)
- return;
- newViewer= new NullViewer(this);
- }
-
- setViewer(newViewer);
-
- // set input
- fViewer.setInput(input);
-
- Image image= null;
- if (!(fViewer instanceof NullViewer) && input instanceof ICompareInput)
- image= ((ICompareInput)input).getImage();
- setImage(image);
-
- String title= null;
- if (fViewer != null) {
- Control c= fViewer.getControl();
- if (c != null) {
- Object data= c.getData(CompareUI.COMPARE_VIEWER_TITLE);
- if (data instanceof String)
- title= (String) data;
- if (hadFocus)
- c.setFocus();
- }
- }
-
- fTitle= title;
- updateTitle();
- }
-
- /**
- * Sets an additional and optional argument for the pane's title.
- * Note: this method is for internal use only. Clients should not call this method.
- *
- * @param argument an optional argument for the pane's title
- */
- public void setTitleArgument(String argument) {
- fTitleArgument= argument;
- updateTitle();
- }
-
- private void updateTitle() {
- if (fTitle != null) {
- if (fTitleArgument != null) {
- String format= CompareMessages.getString("CompareViewerSwitchingPane.Titleformat"); //$NON-NLS-1$
- String t= MessageFormat.format(format, new String[] { fTitle, fTitleArgument } );
- setText(t);
- } else
- setText(fTitle);
- } else {
- setText(""); //$NON-NLS-1$
- }
- }
-
- /**
- * Returns the current input of this pane or null if the pane has no input.
- *
- * @return an <code>Object</code> that is the input to this pane or null if the pane has no input.
- */
- public Object getInput() {
- return fInput;
- }
-
- /**
- * Returns a viewer which is able to display the given input.
- * If no viewer can be found, <code>null</code> is returned.
- * The additional argument oldViewer represents the viewer currently installed
- * in the pane (or <code>null</code> if no viewer is installed).
- * It can be returned from this method if the current viewer can deal with the
- * input (and no new viewer must be created).
- *
- * @param oldViewer the currently installed viewer or <code>null</code>
- * @param input the input object for which a viewer must be determined or <code>null</code>
- * @return a viewer for the given input, or <code>null</code> if no viewer can be determined
- */
- abstract protected Viewer getViewer(Viewer oldViewer, Object input);
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
deleted file mode 100644
index 229101703..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
+++ /dev/null
@@ -1,1128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.ResourceBundle;
-import java.util.Date;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.HashSet;
-import java.util.Calendar;
-import java.util.Comparator;
-import java.text.*;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.dialogs.*;
-
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.compare.internal.*;
-import org.eclipse.compare.structuremergeviewer.*;
-
-
-/**
- * A dialog where one input element can be compared against
- * a list of historic variants (editions) of the same input element.
- * The dialog can be used to implement functions like "Compare/Replace with Version" or
- * "Compare/Replace from Local History" on workspace resources.
- * <p>
- * In addition it is possible to specify a subsection of the input element
- * (e.g. a method in a Java source file) by means of a "path".
- * In this case the dialog compares only the subsection (as specified by the path)
- * with the corresponding subsection in the list of editions.
- * Only those editions are shown where the subsection differs from the same subsection in
- * another edition thereby minimizing the number of presented variants.
- * This functionality can be used to implement "Replace from Local History"
- * for the Java language.
- * <p>
- * Subsections of an input element are determined by first finding an
- * <code>IStructureCreator</code> for the input's type.
- * Then the method <code>locate</code> is used to extract the subsection.
- * <p>
- * Each edition (variant in the list of variants) must implement the <code>IModificationDate</code> interface
- * so that the dialog can sort the editions and present them in a tree structure where every
- * node corresponds one day.
- * <p>
- * The functionality is surfaced in a single function <code>selectEdition</code>.
- * <p>
- * Clients may instantiate this class; it is not intended to be subclassed.
- * </p>
- *
- * @see IModificationDate
- * @see ITypedElement
- */
-public class EditionSelectionDialog extends ResizableDialog {
-
- /**
- * An item in an underlying edition.
- */
- private static class Pair {
-
- private ITypedElement fEdition;
- private ITypedElement fItem;
- private String fContent;
- private IStructureCreator fStructureCreator;
- private boolean fHasError= false;
-
- Pair(IStructureCreator structureCreator, ITypedElement edition, ITypedElement item) {
- fStructureCreator= structureCreator;
- fEdition= edition;
- fItem= item;
- }
-
- Pair(IStructureCreator structureCreator, ITypedElement edition) {
- this(structureCreator, edition, edition);
- }
-
- ITypedElement getEdition() {
- return fEdition;
- }
-
- ITypedElement getItem() {
- return fItem;
- }
-
- /*
- * The content is lazily loaded
- */
- private String getContent() {
- if (fContent == null) {
- if (fStructureCreator != null)
- fContent= fStructureCreator.getContents(fItem, false);
- else {
- if (fItem instanceof IStreamContentAccessor) {
- IStreamContentAccessor sca= (IStreamContentAccessor) fItem;
- try {
- fContent= Utilities.readString(sca);
- } catch (CoreException ex) {
- // NeedWork
- }
- }
- }
- if (fContent == null)
- fContent= ""; //$NON-NLS-1$
- }
- return fContent;
- }
-
- public boolean equals(Object other) {
- if (other != null && other.getClass() == getClass()) {
- if (getContent().equals(((Pair)other).getContent()))
- return true;
- }
- return super.equals(other);
- }
- }
-
- // Configuration options
- private CompareConfiguration fCompareConfiguration;
- private ArrayList fArrayList= new ArrayList();
- /** use a side-by-side compare viewer */
- private boolean fCompare= true;
- /** show target on right hand side */
- private boolean fTargetIsRight= false;
- /** hide entries which have identical content */
- private boolean fHideIdentical= true;
- /** add mode if true, otherwise replace mode */
- private boolean fAddMode= false;
- /** compare mode if true, otherwise replace/add mode */
- private boolean fCompareMode= false;
- /** perform structure compare on editions */
- private boolean fStructureCompare= false;
- /** allow for multiple selection */
- private boolean fMultiSelect= false;
-
- /**
- * Maps from members to their corresponding editions.
- * Has only a single entry if dialog is used in "Replace" (and not "Add") mode.
- */
- private HashMap fMemberEditions;
- /**
- * Maps from members to their corresponding selected edition.
- */
- private HashMap fMemberSelection;
- /** The editions of the current selected member */
- private List fCurrentEditions;
- private Thread fThread;
- private Pair fTargetPair;
- /** The selected edition in the edition viewer */
- private ITypedElement fSelectedItem;
- private String fTitleArg;
- private Image fTitleImage;
-
- // SWT controls
- private CompareViewerSwitchingPane fContentPane;
- private Button fCommitButton;
- private Table fMemberTable;
- private CompareViewerPane fMemberPane;
- private Tree fEditionTree;
- private CompareViewerPane fEditionPane;
- private Image fDateImage;
- private Image fTimeImage;
- private CompareViewerSwitchingPane fStructuredComparePane;
-
- /**
- * Creates a new modal, resizable dialog.
- * Various titles, icons, and labels are configured from the given resource bundle.
- * The following resource keys are used:
- * <pre>
- * key type description
- * title String dialog title
- * width Integer initial width of dialog
- * height Integer initial height of dialog
- * treeTitleFormat MessageFormat pane title for edition tree; arg 0 is the target
- * dateIcon String icon for node in edition tree; path relative to plugin
- * timeIcon String icon for leaf in edition tree; path relative to plugin
- * todayFormat MessageFormat format string if date is todays date; arg 0 is date
- * yesterdayFormat MessageFormat format string if date is yesterdays date; arg 0 is date
- * dayFormat MessageFormat format string if date is any other date; arg 0 is date
- * editionLabel String label for editions side of compare viewer; arg 0 is the date
- * targetLabel String label for target side of compare viewer
- * buttonLabel String label for OK button; default is IDialogConstants.OK_LABEL
- * </pre>
- *
- * @param parent if not <code>null</code> the new dialog stays on top of this parent shell
- * @param bundle <code>ResourceBundle</code> to configure the dialog
- */
- public EditionSelectionDialog(Shell parent, ResourceBundle bundle) {
- super(parent, bundle);
- }
-
- private CompareConfiguration getCompareConfiguration() {
- if (fCompareConfiguration == null) {
- fCompareConfiguration= new CompareConfiguration();
- fCompareConfiguration.setLeftEditable(false);
- fCompareConfiguration.setRightEditable(false);
- }
- return fCompareConfiguration;
- }
-
- /**
- * Sets an additional and optional argument for the edition pane's title.
- *
- * @param titleArgument an optional argument for the edition pane's title
- * @since 2.0
- */
- public void setEditionTitleArgument(String titleArgument) {
- fTitleArg= titleArgument;
- }
-
- /**
- * Sets an optional image for the edition pane's title.
- *
- * @param titleImage an optional image for the edition pane's title
- * @since 2.0
- */
- public void setEditionTitleImage(Image titleImage) {
- fTitleImage= titleImage;
- }
-
- /**
- * Select the previous edition (presenting a UI).
- *
- * @param target the input object against which the editions are compared; must not be <code>null</code>
- * @param inputEditions the list of editions (element type: <code>ITypedElement</code>s)
- * @param ppath If <code>null</code> dialog shows full input; if non <code>null</code> it extracts a subsection
- * @return returns the selected edition or <code>null</code> if error occurred.
- * The returned <code>ITypedElement</code> is one of the original editions
- * if <code>path</code> was <code>null</code>; otherwise
- * it is an <code>ITypedElement</code> returned from <code>IStructureCreator.locate(path, item)</code>
- * @since 2.0
- */
- public ITypedElement selectPreviousEdition(final ITypedElement target, ITypedElement[] inputEditions, Object ppath) {
- Assert.isNotNull(target);
- fTargetPair= new Pair(null, target);
-
- // sort input editions
- final int count= inputEditions.length;
- final IModificationDate[] editions= new IModificationDate[count];
- for (int i= 0; i < count; i++)
- editions[i]= (IModificationDate) inputEditions[i];
- if (count > 1)
- internalSort(editions);
-
- // find StructureCreator if ppath is not null
- IStructureCreator structureCreator= null;
- if (ppath != null) {
- String type= target.getType();
- StructureCreatorDescriptor scd= CompareUIPlugin.getDefault().getStructureCreator(type);
- if (scd != null)
- structureCreator= scd.createStructureCreator();
- }
-
- if (fAddMode) {
- // does not work in add mode
- return null;
- }
-
- if (structureCreator != null) {
- Pair pair= createPair(structureCreator, ppath, target);
- if (pair != null)
- fTargetPair= pair;
- else
- ppath= null; // couldn't extract item because of error
- }
-
- // from front (newest) to back (oldest)
- for (int i= 0; i < count; i++) {
-
- ITypedElement edition= (ITypedElement) editions[i];
- Pair pair= null;
-
- if (structureCreator != null && ppath != null) {
- // extract sub element from edition
- pair= createPair(structureCreator, ppath, edition);
- } else {
- pair= new Pair(null, edition);
- }
-
- if (pair != null && pair.fHasError)
- return null;
-
- if (pair != null && !fTargetPair.equals(pair)) {
- return pair.fItem;
- }
- }
-
- // nothing found
- return null;
- }
-
- /**
- * Presents this modal dialog with the functionality described in the class comment above.
- *
- * @param target the input object against which the editions are compared; must not be <code>null</code>
- * @param inputEditions the list of editions (element type: <code>ITypedElement</code>s)
- * @param ppath If <code>null</code> dialog shows full input; if non <code>null</code> it extracts a subsection
- * @return returns the selected edition or <code>null</code> if dialog was cancelled.
- * The returned <code>ITypedElement</code> is one of the original editions
- * if <code>path</code> was <code>null</code>; otherwise
- * it is an <code>ITypedElement</code> returned from <code>IStructureCreator.locate(path, item)</code>
- */
- public ITypedElement selectEdition(final ITypedElement target, ITypedElement[] inputEditions, Object ppath) {
-
- Assert.isNotNull(target);
- fTargetPair= new Pair(null, target);
-
- // sort input editions
- final int count= inputEditions.length;
- final IModificationDate[] editions= new IModificationDate[count];
- for (int i= 0; i < count; i++)
- editions[i]= (IModificationDate) inputEditions[i];
- if (count > 1)
- internalSort(editions);
-
- // find StructureCreator if ppath is not null
- IStructureCreator structureCreator= null;
- if (ppath != null) {
- String type= target.getType();
- StructureCreatorDescriptor scd= CompareUIPlugin.getDefault().getStructureCreator(type);
- if (scd != null)
- structureCreator= scd.createStructureCreator();
- }
-
- if (!fAddMode) {
- // replace mode
-
- if (structureCreator != null) {
- Pair pair= createPair(structureCreator, ppath, target);
- if (pair != null)
- fTargetPair= pair;
- else
- ppath= null; // couldn't extract item because of error
- }
-
- // set the left and right labels for the compare viewer
- String targetLabel= getTargetLabel(target, fTargetPair.getItem());
- if (fTargetIsRight)
- getCompareConfiguration().setRightLabel(targetLabel);
- else
- getCompareConfiguration().setLeftLabel(targetLabel);
-
- if (structureCreator != null && ppath != null) { // extract sub element
-
- final IStructureCreator sc= structureCreator;
- final Object path= ppath;
-
- // construct the comparer thread
- // and perform the background extract
- fThread= new Thread() {
- public void run() {
-
- // from front (newest) to back (oldest)
- for (int i= 0; i < count; i++) {
-
- if (fEditionTree == null || fEditionTree.isDisposed())
- break;
- ITypedElement edition= (ITypedElement) editions[i];
-
- // extract sub element from edition
- Pair pair= createPair(sc, path, edition);
- if (pair != null)
- sendPair(pair);
- }
- sendPair(null);
- }
- };
- } else {
- // create tree widget
- create();
-
- // from front (newest) to back (oldest)
- for (int i= 0; i < count; i++)
- addMemberEdition(new Pair(null, (ITypedElement) editions[i]));
- }
-
- } else {
- // add mode
- final Object container= ppath;
- Assert.isNotNull(container);
-
- if (structureCreator == null)
- return null; // error
-
- // extract all elements of container
- final HashSet current= new HashSet();
- IStructureComparator sco= structureCreator.locate(container, target);
- if (sco != null) {
- Object[] children= sco.getChildren();
- if (children != null)
- for (int i= 0; i < children.length; i++)
- current.add(children[i]);
- }
-
- final IStructureCreator sc= structureCreator;
-
- // construct the comparer thread
- // and perform the background extract
- fThread= new Thread() {
- public void run() {
-
- // from front (newest) to back (oldest)
- for (int i= 0; i < count; i++) {
-
- if (fEditionTree == null || fEditionTree.isDisposed())
- break;
- ITypedElement edition= (ITypedElement) editions[i];
-
- IStructureComparator sco2= sc.locate(container, edition);
- if (sco2 != null) {
- Object[] children= sco2.getChildren();
- if (children != null) {
- for (int i2= 0; i2 < children.length; i2++) {
- ITypedElement child= (ITypedElement) children[i2];
- if (!current.contains(child))
- sendPair(new Pair(sc, edition, child));
- }
- }
- }
- }
- sendPair(null);
- }
- };
- }
-
- open();
-
- if (getReturnCode() == OK)
- return fSelectedItem;
- return null;
- }
-
- private Pair createPair(IStructureCreator sc, Object path, ITypedElement input) {
- IStructureComparator scmp= sc.locate(path, input);
- if (scmp == null && sc.getStructure(input) == null) { // parse error
- Pair p= new Pair(sc, input);
- p.fHasError= true;
- return p;
- }
- if (scmp instanceof ITypedElement)
- return new Pair(sc, input, (ITypedElement) scmp);
- return null;
- }
-
- /**
- * Controls whether identical entries are shown or not (default).
- * This method must be called before <code>selectEdition</code>.
- *
- * @param hide if true identical entries are hidden; otherwise they are shown.
- * @since 2.0
- */
- public void setHideIdenticalEntries(boolean hide) {
- fHideIdentical= hide;
- }
-
- /**
- * Controls whether workspace target is on the left (the default) or right hand side.
- *
- * @param isRight if true target is shown on right hand side.
- * @since 2.0
- */
- public void setTargetIsRight(boolean isRight) {
- fTargetIsRight= isRight;
- }
-
- /**
- * Controls whether the <code>EditionSelectionDialog</code> is in 'add' mode
- * or 'replace' mode (the default).
- *
- * @param addMode if true dialog is in 'add' mode.
- * @since 2.0
- */
- public void setAddMode(boolean addMode) {
- fAddMode= addMode;
- fMultiSelect= addMode;
- }
-
- /**
- * Controls whether the <code>EditionSelectionDialog</code> is in 'compare' mode
- * or 'add/replace' (the default) mode.
- *
- * @param compareMode if true dialog is in 'add' mode.
- * @since 2.0
- */
- public void setCompareMode(boolean compareMode) {
- fCompareMode= compareMode;
- fStructureCompare= fCompareMode && !fAddMode;
- }
-
- /**
- * Returns the input target that has been specified with the most recent call
- * to <code>selectEdition</code>. If a not <code>null</code> path was specified this method
- * returns a subsection of this target (<code>IStructureCreator.locate(path, target)</code>)
- * instead of the input target.
- * <p>
- * For example if the <code>target</code> is a Java compilation unit and <code>path</code> specifies
- * a method, the value returned from <code>getTarget</code> will be the method not the compilation unit.
- *
- * @return the last specified target or a subsection thereof.
- */
- public ITypedElement getTarget() {
- return fTargetPair.getItem();
- }
-
- /**
- * Returns the editions that have been selected with the most
- * recent call to <code>selectEdition</code>.
- *
- * @return the selected editions as an array.
- * @since 2.1
- */
- public ITypedElement[] getSelection() {
- ArrayList result= new ArrayList();
- if (fMemberSelection != null) {
- Iterator iter= fArrayList.iterator();
- for (int i= 0; iter.hasNext(); i++) {
- Object edition= iter.next();
- Object item= fMemberSelection.get(edition);
- if (item != null)
- result.add(item);
- }
- } else if (fSelectedItem != null)
- result.add(fSelectedItem);
- return (ITypedElement[]) result.toArray(new ITypedElement[result.size()]);
- }
-
- /**
- * Returns a label for identifying the target side of a compare viewer.
- * This implementation extracts the value for the key "targetLabel" from the resource bundle
- * and passes it as the format argument to <code>MessageFormat.format</code>.
- * The single format argument for <code>MessageFormat.format</code> ("{0}" in the format string)
- * is the name of the given input element.
- * <p>
- * Subclasses may override to create their own label.
- * </p>
- *
- * @param target the target element for which a label must be returned
- * @param item if a path has been specified in <code>selectEdition</code> a sub element of the given target; otherwise the same as target
- * @return a label the target side of a compare viewer
- */
- protected String getTargetLabel(ITypedElement target, ITypedElement item) {
- String format= null;
- if (target instanceof ResourceNode)
- format= Utilities.getString(fBundle, "workspaceTargetLabel", null); //$NON-NLS-1$
- if (format == null)
- format= Utilities.getString(fBundle, "targetLabel"); //$NON-NLS-1$
- if (format == null)
- format= "x{0}"; //$NON-NLS-1$
-
- return MessageFormat.format(format, new Object[] { target.getName() });
- }
-
- /**
- * Returns a label for identifying the edition side of a compare viewer.
- * This implementation extracts the value for the key "editionLabel" from the resource bundle
- * and passes it as the format argument to <code>MessageFormat.format</code>.
- * The single format argument for <code>MessageFormat.format</code> ("{0}" in the format string)
- * is the formatted modification date of the given input element.
- * <p>
- * Subclasses may override to create their own label.
- * </p>
- *
- * @param selectedEdition the selected edition for which a label must be returned
- * @param item if a path has been specified in <code>selectEdition</code> a sub element of the given selectedEdition; otherwise the same as selectedEdition
- * @return a label for the edition side of a compare viewer
- */
- protected String getEditionLabel(ITypedElement selectedEdition, ITypedElement item) {
- String format= null;
- if (selectedEdition instanceof ResourceNode)
- format= Utilities.getString(fBundle, "workspaceEditionLabel", null); //$NON-NLS-1$
- else if (selectedEdition instanceof HistoryItem)
- format= Utilities.getString(fBundle, "historyEditionLabel", null); //$NON-NLS-1$
- if (format == null)
- format= Utilities.getString(fBundle, "editionLabel"); //$NON-NLS-1$
- if (format == null)
- format= "x{0}"; //$NON-NLS-1$
-
-
- String date= ""; //$NON-NLS-1$
- if (selectedEdition instanceof IModificationDate) {
- long modDate= ((IModificationDate)selectedEdition).getModificationDate();
- date= DateFormat.getDateTimeInstance().format(new Date(modDate));
- }
-
- return MessageFormat.format(format, new Object[] { date });
- }
-
- /**
- * Returns a label for identifying a node in the edition tree viewer.
- * This implementation extracts the value for the key "workspaceTreeFormat" or
- * "treeFormat" (in that order) from the resource bundle
- * and passes it as the format argument to <code>MessageFormat.format</code>.
- * The single format argument for <code>MessageFormat.format</code> ("{0}" in the format string)
- * is the formatted modification date of the given input element.
- * <p>
- * Subclasses may override to create their own label.
- * </p>
- *
- * @param edition the edition for which a label must be returned
- * @param item if a path has been specified in <code>edition</code> a sub element of the given edition; otherwise the same as edition
- * @param date this date will be returned as part of the formatted string
- * @return a label of a node in the edition tree viewer
- * @since 2.0
- */
- protected String getShortEditionLabel(ITypedElement edition, ITypedElement item, Date date) {
- String format= null;
- if (edition instanceof ResourceNode)
- format= Utilities.getString(fBundle, "workspaceTreeFormat", null); //$NON-NLS-1$
- if (format == null)
- format= Utilities.getString(fBundle, "treeFormat", null); //$NON-NLS-1$
- if (format == null)
- format= "x{0}"; //$NON-NLS-1$
-
- String ds= DateFormat.getTimeInstance().format(date);
- return MessageFormat.format(format, new Object[] { ds });
- }
-
- /**
- * Returns an image for identifying the edition side of a compare viewer.
- * This implementation extracts the value for the key "editionLabel" from the resource bundle
- * and passes it as the format argument to <code>MessageFormat.format</code>.
- * The single format argument for <code>MessageFormat.format</code> ("{0}" in the format string)
- * is the formatted modification date of the given input element.
- * <p>
- * Subclasses may override to create their own label.
- * </p>
- *
- * @param selectedEdition the selected edition for which a label must be returned
- * @param item if a path has been specified in <code>selectEdition</code> a sub element of the given selectedEdition; otherwise the same as selectedEdition
- * @return a label the edition side of a compare viewer
- * @since 2.0
- */
- protected Image getEditionImage(ITypedElement selectedEdition, ITypedElement item) {
- if (selectedEdition instanceof ResourceNode)
- return selectedEdition.getImage();
- if (selectedEdition instanceof HistoryItem) {
- if (fTimeImage == null) {
- String iconName= Utilities.getString(fBundle, "timeIcon", "obj16/resource_obj.gif"); //$NON-NLS-1$ //$NON-NLS-2$
- ImageDescriptor id= CompareUIPlugin.getImageDescriptor(iconName);
- if (id != null)
- fTimeImage= id.createImage();
- }
- return fTimeImage;
- }
- return null;
- }
-
- /* (non Javadoc)
- * Creates SWT control tree.
- */
- protected synchronized Control createDialogArea(Composite parent2) {
-
- Composite parent= (Composite) super.createDialogArea(parent2);
-
- getShell().setText(Utilities.getString(fBundle, "title")); //$NON-NLS-1$
-
- Splitter vsplitter= new Splitter(parent, SWT.VERTICAL);
- vsplitter.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL
- | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_VERTICAL));
-
- vsplitter.addDisposeListener(
- new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- if (fCompareConfiguration != null) {
- fCompareConfiguration.dispose();
- fCompareConfiguration= null;
- }
- if (fDateImage != null) {
- fDateImage.dispose();
- fDateImage= null;
- }
- if (fTimeImage != null) {
- fTimeImage.dispose();
- fTimeImage= null;
- }
- }
- }
- );
-
- if (fAddMode) {
- // we need two panes: the left for the elements, the right one for the editions
- Splitter hsplitter= new Splitter(vsplitter, SWT.HORIZONTAL);
-
- fMemberPane= new CompareViewerPane(hsplitter, SWT.BORDER | SWT.FLAT);
- fMemberPane.setText(Utilities.getString(fBundle, "memberPaneTitle")); //$NON-NLS-1$
-
- int flags= SWT.H_SCROLL + SWT.V_SCROLL;
- if (fMultiSelect)
- flags|= SWT.CHECK;
- fMemberTable= new Table(fMemberPane, flags);
- fMemberTable.addSelectionListener(
- new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- if (e.detail == SWT.CHECK) {
- if (e.item instanceof TableItem) {
- TableItem ti= (TableItem) e.item;
- Object data= ti.getData();
- if (ti.getChecked())
- fArrayList.add(data);
- else
- fArrayList.remove(data);
-
- if (fCommitButton != null)
- fCommitButton.setEnabled(fArrayList.size() > 0);
-
- fMemberTable.setSelection(new TableItem[] { ti });
- }
- }
- handleMemberSelect(e.item);
- }
- }
- );
- fMemberPane.setContent(fMemberTable);
- fMemberTable.setFocus();
-
- fEditionPane= new CompareViewerPane(hsplitter, SWT.BORDER | SWT.FLAT);
- } else {
- if (fStructureCompare) {
- // we need two panes: the left for the elements, the right one for the structured diff
- Splitter hsplitter= new Splitter(vsplitter, SWT.HORIZONTAL);
-
- fEditionPane= new CompareViewerPane(hsplitter, SWT.BORDER | SWT.FLAT);
- fStructuredComparePane= new CompareViewerSwitchingPane(hsplitter, SWT.BORDER | SWT.FLAT, true) {
- protected Viewer getViewer(Viewer oldViewer, Object input) {
- if (input instanceof ICompareInput)
- return CompareUI.findStructureViewer(oldViewer, (ICompareInput)input, this, getCompareConfiguration());
- return null;
- }
- };
- fStructuredComparePane.addSelectionChangedListener(
- new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent e) {
- feedInput2(e.getSelection());
- }
- }
- );
- } else {
- // only a single pane showing the editions
- fEditionPane= new CompareViewerPane(vsplitter, SWT.BORDER | SWT.FLAT);
- }
- if (fTitleArg == null)
- fTitleArg= fTargetPair.getItem().getName();
- String titleFormat= Utilities.getString(fBundle, "treeTitleFormat"); //$NON-NLS-1$
- String title= MessageFormat.format(titleFormat, new String[] { fTitleArg });
- fEditionPane.setText(title);
- if (fTitleImage != null)
- fEditionPane.setImage(fTitleImage);
- }
-
- fEditionTree= new Tree(fEditionPane, SWT.H_SCROLL + SWT.V_SCROLL);
- fEditionTree.addSelectionListener(
- new SelectionAdapter() {
-// public void widgetDefaultSelected(SelectionEvent e) {
-// handleDefaultSelected();
-// }
- public void widgetSelected(SelectionEvent e) {
- feedInput(e.item);
- }
- }
- );
- fEditionPane.setContent(fEditionTree);
-
- // now start the thread (and forget about it)
- if (fThread != null) {
- fThread.start();
- fThread= null;
- }
-
- fContentPane= new CompareViewerSwitchingPane(vsplitter, SWT.BORDER | SWT.FLAT) {
- protected Viewer getViewer(Viewer oldViewer, Object input) {
- return CompareUI.findContentViewer(oldViewer, input, this, getCompareConfiguration());
- }
- };
- vsplitter.setWeights(new int[] { 30, 70 });
-
- applyDialogFont(parent);
- return parent;
- }
-
- /* (non-Javadoc)
- * Method declared on Dialog.
- */
- protected void createButtonsForButtonBar(Composite parent) {
- String buttonLabel= Utilities.getString(fBundle, "buttonLabel", IDialogConstants.OK_LABEL); //$NON-NLS-1$
- if (fCompareMode) {
- // only a 'Done' button
- createButton(parent, IDialogConstants.CANCEL_ID, buttonLabel, false);
- } else {
- // a 'Cancel' and a 'Add/Replace' button
- fCommitButton= createButton(parent, IDialogConstants.OK_ID, buttonLabel, true);
- fCommitButton.setEnabled(false);
- createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
- }
- }
-
- /**
- * Overidden to disable dismiss on double click in compare mode.
- * @since 2.0
- */
- protected void okPressed() {
- if (fCompareMode) {
- // don't dismiss dialog
- } else
- super.okPressed();
- }
-
- //---- private stuff ----------------------------------------------------------------------------------------
-
- /*
- * Asynchroneously sends a Pair (or null) to the UI thread.
- */
- private void sendPair(final Pair pair) {
- if (fEditionTree != null && !fEditionTree.isDisposed()) {
- Display display= fEditionTree.getDisplay();
- display.asyncExec(
- new Runnable() {
- public void run() {
- addMemberEdition(pair);
- }
- }
- );
- }
- }
-
- private static void internalSort(IModificationDate[] keys) {
- Arrays.sort(keys, new Comparator() {
- public int compare(Object o1, Object o2) {
- IModificationDate d1= (IModificationDate) o1;
- IModificationDate d2= (IModificationDate) o2;
- long d= d2.getModificationDate() - d1.getModificationDate();
- if (d < 0)
- return -1;
- if (d > 0)
- return 1;
- return 0;
- }
- });
- }
-
- /*
- * Adds the given Pair to the member editions.
- * If HIDE_IDENTICAL is true the new Pair is only added if its contents
- * is different from the preceeding Pair.
- * If the argument is <code>null</code> the message "No Editions found" is shown
- * in the member or edition viewer.
- */
- private void addMemberEdition(Pair pair) {
-
- if (pair == null) { // end of list of pairs
- if (fMemberTable != null) {
- if (!fMemberTable.isDisposed() && fMemberTable.getItemCount() == 0) {
- if (fMultiSelect) {
- fMemberTable.dispose();
- fMemberTable= new Table(fMemberPane, SWT.NONE);
- fMemberPane.setContent(fMemberTable);
- }
- TableItem ti= new TableItem(fMemberTable, SWT.NONE);
- ti.setText(Utilities.getString(fBundle, "noAdditionalMembersMessage")); //$NON-NLS-1$
- }
- return;
- }
- if (fEditionTree != null && !fEditionTree.isDisposed() && fEditionTree.getItemCount() == 0) {
- TreeItem ti= new TreeItem(fEditionTree, SWT.NONE);
- ti.setText(Utilities.getString(fBundle, "notFoundInLocalHistoryMessage")); //$NON-NLS-1$
- }
- return;
- }
-
- if (fMemberEditions == null)
- fMemberEditions= new HashMap();
- if (fMultiSelect && fMemberSelection == null)
- fMemberSelection= new HashMap();
-
- ITypedElement item= pair.getItem();
- List editions= (List) fMemberEditions.get(item);
- if (editions == null) {
- editions= new ArrayList();
- fMemberEditions.put(item, editions);
- if (fMemberTable != null && !fMemberTable.isDisposed()) {
- ITypedElement te= item;
- String name= te.getName();
-
- // find position
- TableItem[] items= fMemberTable.getItems();
- int where= items.length;
- for (int i= 0; i < where; i++) {
- String n= items[i].getText();
- if (n.compareTo(name) > 0) {
- where= i;
- break;
- }
- }
-
- TableItem ti= new TableItem(fMemberTable, where, SWT.NULL);
- ti.setImage(te.getImage());
- ti.setText(name);
- ti.setData(editions);
- }
- }
- if (fHideIdentical) {
- Pair last= fTargetPair;
- int size= editions.size();
- if (size > 0)
- last= (Pair) editions.get(size-1);
- if (last != null && last.equals(pair))
- return; // don't add since the new one is equal to old
- }
- editions.add(pair);
-
- if (!fAddMode || editions == fCurrentEditions)
- addEdition(pair);
- }
-
- /*
- * Returns the number of s since Jan 1st, 1970.
- * The given date is converted to GMT and daylight saving is taken into account too.
- */
- private long dayNumber(long date) {
- int ONE_DAY_MS= 24*60*60 * 1000; // one day in milli seconds
-
- Calendar calendar= Calendar.getInstance();
- long localTimeOffset= calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
-
- return (date + localTimeOffset) / ONE_DAY_MS;
- }
-
- /*
- * Adds the given Pair to the edition tree.
- * It takes care of creating tree nodes for different dates.
- */
- private void addEdition(Pair pair) {
- if (fEditionTree == null || fEditionTree.isDisposed())
- return;
-
- // find last day
- TreeItem[] days= fEditionTree.getItems();
- TreeItem lastDay= null;
- if (days.length > 0)
- lastDay= days[days.length-1];
-
- boolean first= lastDay == null;
-
- ITypedElement edition= pair.getEdition();
- ITypedElement item= pair.getItem();
-
- long ldate= ((IModificationDate)edition).getModificationDate();
- long day= dayNumber(ldate);
- Date date= new Date(ldate);
- if (lastDay == null || day != dayNumber(((Date)lastDay.getData()).getTime())) {
- lastDay= new TreeItem(fEditionTree, SWT.NONE);
- if (fDateImage == null) {
- String iconName= Utilities.getString(fBundle, "dateIcon", "obj16/day_obj.gif"); //$NON-NLS-2$ //$NON-NLS-1$
- ImageDescriptor id= CompareUIPlugin.getImageDescriptor(iconName);
- if (id != null)
- fDateImage= id.createImage();
- }
- lastDay.setImage(fDateImage);
- String df= DateFormat.getDateInstance().format(date);
- long today= dayNumber(System.currentTimeMillis());
-
- String formatKey;
- if (day == today)
- formatKey= "todayFormat"; //$NON-NLS-1$
- else if (day == today-1)
- formatKey= "yesterdayFormat"; //$NON-NLS-1$
- else
- formatKey= "dayFormat"; //$NON-NLS-1$
- String pattern= Utilities.getString(fBundle, formatKey);
- if (pattern != null)
- df= MessageFormat.format(pattern, new String[] { df });
- lastDay.setText(df);
- lastDay.setData(date);
- }
- TreeItem ti= new TreeItem(lastDay, SWT.NONE);
- ti.setImage(getEditionImage(edition, item));
-
- String s= getShortEditionLabel(edition, item, date);
- if (pair.fHasError) {
- String pattern= Utilities.getString(fBundle, "parseErrorFormat"); //$NON-NLS-1$
- s= MessageFormat.format(pattern, new String[] { s } );
- }
- ti.setText(s);
-
- ti.setData(pair);
-
- // determine selected TreeItem
- TreeItem selection= first ? ti : null;
- if (fMemberSelection != null) {
- Object selected= fMemberSelection.get(fCurrentEditions);
- if (selected != null) {
- if (selected == pair.getItem())
- selection= ti;
- else
- selection= null;
- }
- }
- if (selection != null) {
- fEditionTree.setSelection(new TreeItem[] { selection });
- if (!fAddMode)
- fEditionTree.setFocus();
- feedInput(selection);
- }
-
- if (first) // expand first node
- lastDay.setExpanded(true);
- }
-
- /*
- * Feeds selection from member viewer to edition viewer.
- */
- private void handleMemberSelect(Widget w) {
- Object data= w.getData();
- if (data instanceof List) {
- List editions= (List) data;
- if (editions != fCurrentEditions) {
- fCurrentEditions= editions;
- fEditionTree.removeAll();
-
- String pattern= Utilities.getString(fBundle, "treeTitleFormat"); //$NON-NLS-1$
- String title= MessageFormat.format(pattern, new Object[] { ((Item)w).getText() });
- fEditionPane.setText(title);
-
- Iterator iter= editions.iterator();
- while (iter.hasNext()) {
- Object item= iter.next();
- if (item instanceof Pair)
- addEdition((Pair) item);
- }
- }
- }
- }
-
- private void setInput(Object input) {
- if (!fCompare && input instanceof ICompareInput) {
- ICompareInput ci= (ICompareInput) input;
- if (fTargetIsRight)
- input= ci.getLeft();
- else
- input= ci.getRight();
- }
- fContentPane.setInput(input);
- if (fStructuredComparePane != null)
- fStructuredComparePane.setInput(input);
- }
-
- /*
- * Feeds selection from edition viewer to content (and structure) viewer.
- */
- private void feedInput(Widget w) {
- Object input= w.getData();
- boolean isOK= false;
- if (input instanceof Pair) {
- Pair pair= (Pair) input;
- fSelectedItem= pair.getItem();
- isOK= !pair.fHasError;
-
- ITypedElement edition= pair.getEdition();
- String editionLabel= getEditionLabel(edition, fSelectedItem);
- Image editionImage= getEditionImage(edition, fSelectedItem);
-
- if (fAddMode) {
- if (fMemberSelection != null)
- fMemberSelection.put(fCurrentEditions, fSelectedItem);
- setInput(fSelectedItem);
- fContentPane.setText(editionLabel);
- fContentPane.setImage(editionImage);
- } else {
- getCompareConfiguration();
- if (fTargetIsRight) {
- fCompareConfiguration.setLeftLabel(editionLabel);
- fCompareConfiguration.setLeftImage(editionImage);
- setInput(new DiffNode(fSelectedItem, fTargetPair.getItem()));
- } else {
- fCompareConfiguration.setRightLabel(editionLabel);
- fCompareConfiguration.setRightImage(editionImage);
- setInput(new DiffNode(fTargetPair.getItem(), fSelectedItem));
- }
- }
- } else {
- fSelectedItem= null;
- setInput(null);
- }
- if (fCommitButton != null) {
- if (fMultiSelect)
- fCommitButton.setEnabled(isOK && fSelectedItem != null && fArrayList.size() > 0);
- else
- fCommitButton.setEnabled(isOK && fSelectedItem != null && fTargetPair.getItem() != fSelectedItem);
- }
- }
-
- /*
- * Feeds selection from structure viewer to content viewer.
- */
- private void feedInput2(ISelection sel) {
- if (sel instanceof IStructuredSelection) {
- IStructuredSelection ss= (IStructuredSelection) sel;
- if (ss.size() == 1)
- fContentPane.setInput(ss.getFirstElement());
- }
- }
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java
deleted file mode 100644
index 3c9dff749..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.io.InputStream;
-import java.io.BufferedInputStream;
-
-import org.eclipse.swt.graphics.Image;
-
-import org.eclipse.compare.internal.IResourceProvider;
-import org.eclipse.core.resources.IEncodedStorage;
-import org.eclipse.core.resources.IFileState;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-
-/**
- * A combination <code>IFileState</code> and <code>ITypedElement</code> that can be used as
- * an input to a compare viewer or other places where an <code>IStreamContentAccessor</code>
- * is needed.
- * <p>
- * <p>
- * Clients may instantiate this class; it is not intended to be subclassed.
- * </p>
- */
-public class HistoryItem implements IEncodedStreamContentAccessor, ITypedElement, IModificationDate, IResourceProvider {
-
- private ITypedElement fBase;
- private IFileState fFileState;
-
- /**
- * Creates a <code>HistoryItem</code> object which combines the given <code>IFileState</code>
- * and <code>ITypedElement</code> into an object
- * which is suitable as input for a compare viewer or <code>ReplaceWithEditionDialog</code>.
- *
- * @param base the implementation of the <code>ITypedElement</code> interface delegates to this base <code>ITypedElement</code>
- * @param fileState the <code>IFileState</code> from which the streamable contents and the modification time is derived from
- */
- public HistoryItem(ITypedElement base, IFileState fileState) {
- fBase= base;
- fFileState= fileState;
- }
-
- /* (non-Javadoc)
- * see ITypedElement.getName
- */
- public String getName() {
- return fBase.getName();
- }
-
- /* (non-Javadoc)
- * see ITypedElement.getImage
- */
- public Image getImage() {
- return fBase.getImage();
- }
-
- /* (non-Javadoc)
- * see ITypedElement.getType
- */
- public String getType() {
- return fBase.getType();
- }
-
- /* (non-Javadoc)
- * see IModificationDate.getModificationDate
- */
- public long getModificationDate() {
- return fFileState.getModificationTime();
- }
-
- /* (non-Javadoc)
- * see IStreamContentAccessor.getContents
- */
- public InputStream getContents() throws CoreException {
- return new BufferedInputStream(fFileState.getContents());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.compare.IEncodedStreamContentAccessor#getCharset()
- */
- public String getCharset() throws CoreException {
- String charset= fFileState.getCharset();
- if (charset == null) {
- IResource resource= getResource();
- if (resource instanceof IEncodedStorage)
- charset= ((IEncodedStorage)resource).getCharset();
- }
- return charset;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.compare.internal.IResourceProvider#getResource()
- */
- public IResource getResource() {
- IPath fullPath= fFileState.getFullPath();
- return ResourcesPlugin.getWorkspace().getRoot().findMember(fullPath);
- }
-}
-
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ICompareNavigator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/ICompareNavigator.java
deleted file mode 100644
index d0d3e06a1..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ICompareNavigator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-/**
- * A <code>ICompareNavigator</code> is used to navigate through the individual
- * differences of a <code>CompareEditorInput</code>.
- * <p>
- * Please note: the following might change before the final release of Eclipse 3.0.
- * You can retrieve an object implementing the <code>ICompareNavigator</code> from a
- * <code>CompareEditorInput</code> by calling <code>getAdapter(ICompareNavigator)</code>
- * on the <code>CompareEditorInput</code>.
- * </p>
- * @since 3.0
- */
-public interface ICompareNavigator {
-
- /**
- * Starting from the current selection <code>selectChange</code> selects and reveals the next (previous) change.
- * If the end (or beginning) is reached, the method returns <code>true</code>.
- *
- * @param next if <code>true</code> the next change is selected, otherwise the previous change
- * @return returns <code>true</code> if end (beginning) is reached, <code>false</code> otherwise
- */
- public boolean selectChange(boolean next);
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java
deleted file mode 100644
index 16aa27c0b..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-/**
- * An <code>IContentChangeListener</code> is informed about content changes of a
- * <code>IContentChangeNotifier</code>.
- * <p>
- * Clients may implement this interface.
- * </p>
- *
- * @see IContentChangeNotifier
- */
-public interface IContentChangeListener {
-
- /**
- * Called whenever the content of the given source has changed.
- *
- * @param source the source whose contents has changed
- */
- void contentChanged(IContentChangeNotifier source);
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java
deleted file mode 100644
index 55641c97d..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-/**
- * Interface common to all objects that provide a means for registering
- * for content change notification.
- * <p>
- * Clients may implement this interface.
- * </p>
- *
- * @see IContentChangeListener
- */
-public interface IContentChangeNotifier {
-
- /**
- * Adds a content change listener to this notifier.
- * Has no effect if an identical listener is already registered.
- *
- * @param listener a content changed listener
- */
- void addContentChangeListener(IContentChangeListener listener);
-
- /**
- * Removes the given content changed listener from this notifier.
- * Has no effect if the listener is not registered.
- *
- * @param listener a content changed listener
- */
- void removeContentChangeListener(IContentChangeListener listener);
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java
deleted file mode 100644
index 4d031e69c..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-/**
- * Common interface for objects with editable contents.
- * Typically it is implemented by objects that also implement
- * the <code>IStreamContentAccessor</code> interface.
- * <p>
- * Clients may implement this interface.
- * <p>
- * Note that implementing <code>IEditableContent</code> does not
- * automatically mean that it is editable. An object is only editable if
- * it implements <code>IEditableContent</code> and the <code>isEditable</code> method returns <code>true</code>.
- *
- * @see IStreamContentAccessor
- */
-public interface IEditableContent {
-
- /**
- * Returns <code>true</code> if this object can be modified.
- * If it returns <code>false</code> the other methods of this API must not be called.
- *
- * @return <code>true</code> if this object can be modified
- */
- boolean isEditable();
-
- /**
- * Replaces the current content with the given new bytes.
- *
- * @param newContent this new contents replaces the old contents
- */
- void setContent(byte[] newContent);
-
- /**
- * This method is called on a parent to add or remove a child,
- * or to copy the contents of a child.
- *
- * What to do is encoded in the two arguments as follows:
- * <TABLE>
- * <TR>
- * <TD>add:</TD>
- * <TD>dest == null</TD>
- * <TD>src != null</TD>
- * </TR>
- * <TR>
- * <TD>remove:</TD>
- * <TD>dest != null</TD>
- * <TD>src == null</TD>
- * </TR>
- * <TR>
- * <TD>copy:</TD>
- * <TD>dest != null</TD>
- * <TD>src != null</TD>
- * </TR>
- * </TABLE>
- * @param dest the existing child of this object to be replaced; if <code>null</null> a new child can be added.
- * @param src the new child to be added or replaced; if <code>null</code> an existing child can be removed.
- * @return the argument <code>dest</code>
- */
- ITypedElement replace(ITypedElement dest, ITypedElement src);
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IEncodedStreamContentAccessor.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/IEncodedStreamContentAccessor.java
deleted file mode 100644
index 95aa6f5c9..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IEncodedStreamContentAccessor.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Extension for <code>IStreamContentAccessor</code>. Extends the original
- * concept of a <code>IStreamContentAccessor</code> to answer the Charset (encoding) used for the stream.
- *
- * @since 3.0
- */
-public interface IEncodedStreamContentAccessor extends IStreamContentAccessor {
-
- /**
- * Returns the name of a charset encoding to be used when decoding this
- * stream accessor's contents into characters. Returns <code>null</code> if a proper
- * encoding cannot be determined.
- * <p>
- * <b>Note</b>: this method does not check whether the result is a supported
- * charset name. Callers should be prepared to handle
- * <code>UnsupportedEncodingException</code> where this charset is used.
- * </p>
- * @return the name of a charset, or <code>null</code>
- * @exception CoreException if an error happens while determining
- * the charset. See any refinements for more information.
- * @see IStreamContentAccessor#getContents
- * @since 3.0
- */
- String getCharset() throws CoreException;
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java
deleted file mode 100644
index 1ddeb2b78..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-/**
- * Common interface for objects with a modification date. The modification date
- * can be used in the UI to give the user a general idea of how old an object is.
- * <p>
- * Clients may implement this interface.
- * </p>
- */
-public interface IModificationDate {
-
- /**
- * Returns the modification time of this object.
- * <p>
- * Note that this value should only be used to give the user a general idea of how
- * old the object is.
- *
- * @return the time of last modification, in milliseconds since January 1, 1970, 00:00:00 GMT
- */
- long getModificationDate();
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java
deleted file mode 100644
index f4ed5212c..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-
-/**
- * Interface common to all objects that provide a means for registering
- * for property change notification.
- * <p>
- * Clients may implement this interface.
- * </p>
- *
- * @see org.eclipse.jface.util.IPropertyChangeListener
- */
-public interface IPropertyChangeNotifier {
-
- /**
- * Adds a listener for property changes to this notifier.
- * Has no effect if an identical listener is already registered.
- *
- * @param listener a property change listener
- */
- void addPropertyChangeListener(IPropertyChangeListener listener);
-
- /**
- * Removes the given content change listener from this notifier.
- * Has no effect if the identical listener is not registered.
- *
- * @param listener a property change listener
- */
- void removePropertyChangeListener(IPropertyChangeListener listener);
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java
deleted file mode 100644
index 453bc6a4e..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.io.InputStream;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * An <code>IStreamContentAccessor</code> object represents a set of bytes which can be
- * accessed by means of a stream.
- * <p>
- * Clients may implement this interface, or use the standard implementation,
- * <code>BufferedContent</code>.
- *
- * @see BufferedContent
- */
-public interface IStreamContentAccessor {
- /**
- * Returns an open <code>InputStream</code> for this object which can be used to retrieve the object's content.
- * The client is responsible for closing the stream when finished.
- * Returns <code>null</code> if this object has no streamable contents.
- *
- * @return an input stream containing the contents of this object
- * @exception CoreException if the contents of this object could not be accessed
- */
- InputStream getContents() throws CoreException;
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamMerger.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamMerger.java
deleted file mode 100644
index bf4c6b072..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamMerger.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * This interface defines a single operation for performing a three-way merge on three
- * input streams. The merged result is written to an output stream.
- * <p>
- * Clients must implement this interface when contributing new mergers to the
- * <code>org.eclipse.compare.streamMergers</code> extension point.
- * </p>
- *
- * @since 3.0
- */
-public interface IStreamMerger {
-
- /**
- * Indicates the successful completion of the merge operation (value <code>IStatus.OK</code>)
- */
- public static final int OK= IStatus.OK;
-
- /**
- * Indicates that a change conflict prevented the merge from successful completion (value <code>1</code>)
- */
- public static final int CONFLICT= 1;
-
- /**
- * Status code describing an internal error (value <code>2</code>)
- */
- public static final int INTERNAL_ERROR= 2;
-
- /**
- * Performs a merge operation on the given input streams and writes the merge result to the output stream.
- * On success a status <code>IStatus.OK</code> is returned, on error a status <code>IStatus.ERROR</code>.
- * If the merge operation cannot deal with conflicts, the code of the error status has the value <code>IStreamMerger.CONFLICT</code>.
- * For text oriented mergers the encoding for the input and output streams is honored.
- * It is the responsibility of callers to close input and output streams.
- *
- * @param output the byte stream to which the merge result is written; the merger will not close the stream
- * @param outputEncoding the encoding to use when writing to the output stream
- * @param ancestor the byte stream from which the common ancestor is read
- * @param ancestorEncoding the encoding of the ancestor input byte stream
- * @param target the byte stream containing the target of the merge
- * @param targetEncoding the encoding of the target input byte stream
- * @param other the byte stream containing the target of the merge
- * @param otherEncoding the encoding of the other input byte stream
- * @param monitor reports progress of the merge operation
- * @return returns the completion status of the operation
- */
- IStatus merge(OutputStream output, String outputEncoding,
- InputStream ancestor, String ancestorEncoding,
- InputStream target, String targetEncoding,
- InputStream other, String otherEncoding,
- IProgressMonitor monitor);
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
deleted file mode 100644
index 6717c8da2..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Interface for getting the name, image, and type for an object.
- * <p>
- * These methods are typically used to present an input object in the compare UI
- * (<code>getName</code> and <code>getImage</code>)
- * and for finding a viewer for a given input type (<code>getType</code>).
- * <p>
- * Clients may implement this interface.
- */
-public interface ITypedElement {
-
- /**
- * Type for a folder input (value <code>"FOLDER"</code>).
- * Folders are comparison elements that have no contents, only a name and children.
- */
- public static final String FOLDER_TYPE= "FOLDER"; //$NON-NLS-1$
-
- /**
- * Type for an element whose actual type is text (value <code>"txt"</code>).
- */
- public static final String TEXT_TYPE= "txt"; //$NON-NLS-1$
-
- /**
- * Type for an element whose actual type could not
- * be determined. (value <code>"???"</code>).
- */
- public static final String UNKNOWN_TYPE= "???"; //$NON-NLS-1$
-
- /**
- * Returns the name of this object.
- * The name is used when displaying this object in the UI.
- *
- * @return the name of this object
- */
- String getName();
-
- /**
- * Returns an image for this object.
- * This image is used when displaying this object in the UI.
- *
- * @return the image of this object or <code>null</code> if this type of input has no image
- */
- Image getImage();
-
- /**
- * Returns the type of this object. For objects with a file name
- * this is typically the file extension. For folders its the constant
- * <code>FOLDER_TYPE</code>.
- * The type is used for determining a suitable viewer for this object.
- *
- * @return the type of this object
- */
- String getType();
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java
deleted file mode 100644
index 91433c80c..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import org.eclipse.swt.widgets.Composite;
-
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * A factory object for <code>Viewer</code>.
- * <p>
- * This interface is only required when creating a <code>Viewer</code> from a plugin.xml file.
- * Since <code>Viewer</code>s have no default constructor they cannot be
- * instantiated directly with <code>Class.forName</code>.
- */
-public interface IViewerCreator {
-
- /**
- * Creates a new viewer under the given SWT parent control.
- *
- * @param parent the SWT parent control under which to create the viewer's SWT control
- * @param config a compare configuration the newly created viewer might want to use
- * @return a new viewer
- */
- Viewer createViewer(Composite parent, CompareConfiguration config);
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/NavigationAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/NavigationAction.java
deleted file mode 100644
index 69d3df826..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/NavigationAction.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.util.ResourceBundle;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-import org.eclipse.compare.internal.CompareMessages;
-import org.eclipse.compare.internal.CompareUIPlugin;
-import org.eclipse.compare.internal.Utilities;
-
-
-/**
- * A <code>NavigationAction</code> is used to navigate through the individual
- * differences of a <code>CompareEditorInput</code>.
- * <p>
- * Clients may instantiate this class; it is not intended to be subclassed.
- * </p>
- * @since 2.0
- */
-public class NavigationAction extends Action {
-
- private boolean fNext;
- private CompareEditorInput fCompareEditorInput;
-
-
- /**
- * Creates a <code>NavigationAction</code>.
- *
- * @param next if <code>true</code> action goes to the next difference; otherwise to the previous difference.
- */
- public NavigationAction(boolean next) {
- this(CompareUI.getResourceBundle(), next);
- }
-
- /**
- * Creates a <code>NavigationAction</code> that initializes its attributes
- * from the given <code>ResourceBundle</code>.
- *
- * @param bundle is used to initialize the action
- * @param next if <code>true</code> action goes to the next difference; otherwise to the previous difference.
- */
- public NavigationAction(ResourceBundle bundle, boolean next) {
- Utilities.initAction(this, bundle, next ? "action.Next." : "action.Previous."); //$NON-NLS-2$ //$NON-NLS-1$
- fNext= next;
- }
-
- public void run() {
- if (fCompareEditorInput != null) {
- Object adapter= fCompareEditorInput.getAdapter(ICompareNavigator.class);
- if (adapter instanceof ICompareNavigator) {
- boolean atEnd= ((ICompareNavigator)adapter).selectChange(fNext);
- Shell shell= CompareUIPlugin.getShell();
- if (atEnd && shell != null) {
-
- Display display= shell.getDisplay();
- if (display != null)
- display.beep();
-
- String title;
- String message;
- if (fNext) {
- title= CompareMessages.getString("CompareNavigator.atEnd.title"); //$NON-NLS-1$
- message= CompareMessages.getString("CompareNavigator.atEnd.message"); //$NON-NLS-1$
- } else {
- title= CompareMessages.getString("CompareNavigator.atBeginning.title"); //$NON-NLS-1$
- message= CompareMessages.getString("CompareNavigator.atBeginning.message"); //$NON-NLS-1$
- }
- MessageDialog.openInformation(shell, title, message);
- }
- }
- }
- }
-
- /**
- * Sets the <code>CompareEditorInput</code> on which this action operates.
- *
- * @param input the <code>CompareEditorInput</code> on which this action operates; if <code>null</code> action does nothing
- */
- public void setCompareEditorInput(CompareEditorInput input) {
- fCompareEditorInput= input;
- }
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
deleted file mode 100644
index 36380c4ae..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.io.*;
-import java.util.ArrayList;
-
-import org.eclipse.swt.graphics.Image;
-
-import org.eclipse.jface.util.Assert;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.compare.internal.IResourceProvider;
-import org.eclipse.compare.internal.Utilities;
-import org.eclipse.compare.structuremergeviewer.IStructureComparator;
-
-/**
- * A <code>ResourceNode</code> wrappers an <code>IResources</code> so that it can be used
- * as input for the differencing engine (interfaces <code>IStructureComparator</code> and <code>ITypedElement</code>)
- * and the <code>ReplaceWithEditionDialog</code> (interfaces <code>ITypedElement</code> and <code>IModificationDate</code>).
- * <p>
- * Clients may instantiate this class; it is not intended to be subclassed.
- * </p>
- *
- * @see EditionSelectionDialog
- */
-public class ResourceNode extends BufferedContent
- implements IEncodedStreamContentAccessor, IStructureComparator, ITypedElement,
- IEditableContent, IModificationDate, IResourceProvider {
-
- private IResource fResource;
- private ArrayList fChildren;
-
-
- /**
- * Creates a <code>ResourceNode</code> for the given resource.
- *
- * @param resource the resource
- */
- public ResourceNode(IResource resource) {
- fResource= resource;
- Assert.isNotNull(resource);
- }
-
- /**
- * Returns the corresponding resource for this object.
- *
- * @return the corresponding resource
- */
- public IResource getResource() {
- return fResource;
- }
-
- /* (non Javadoc)
- * see IStreamContentAccessor.getContents
- */
- public InputStream getContents() throws CoreException {
- if (fResource instanceof IStorage)
- return super.getContents();
- return null;
- }
-
- /* (non Javadoc)
- * see IModificationDate.getModificationDate
- */
- public long getModificationDate() {
- IPath path= fResource.getLocation();
- File file= path.toFile();
- return file.lastModified();
- }
-
- /* (non Javadoc)
- * see ITypedElement.getName
- */
- public String getName() {
- if (fResource != null)
- return fResource.getName();
- return null;
- }
-
- /* (non Javadoc)
- * see ITypedElement.getType
- */
- public String getType() {
- if (fResource instanceof IContainer)
- return ITypedElement.FOLDER_TYPE;
- if (fResource != null) {
- String s= fResource.getFileExtension();
- if (s != null)
- return s;
- }
- return ITypedElement.UNKNOWN_TYPE;
- }
-
- /* (non Javadoc)
- * see ITypedElement.getImage
- */
- public Image getImage() {
- return CompareUI.getImage(fResource);
- }
-
- /*
- * Returns <code>true</code> if the other object is of type <code>ITypedElement</code>
- * and their names are identical. The content is not considered.
- */
- public boolean equals(Object other) {
- if (other instanceof ITypedElement) {
- String otherName= ((ITypedElement)other).getName();
- return getName().equals(otherName);
- }
- return super.equals(other);
- }
-
- /**
- * Returns the hash code of the name.
- * @return a hash code value for this object.
- */
- public int hashCode() {
- return getName().hashCode();
- }
-
- /* (non Javadoc)
- * see IStructureComparator.getChildren
- */
- public Object[] getChildren() {
- if (fChildren == null) {
- fChildren= new ArrayList();
- if (fResource instanceof IContainer) {
- try {
- IResource members[]= ((IContainer)fResource).members();
- for (int i= 0; i < members.length; i++) {
- IStructureComparator child= createChild(members[i]);
- if (child != null)
- fChildren.add(child);
- }
- } catch (CoreException ex) {
- // NeedWork
- }
- }
- }
- return fChildren.toArray();
- }
-
- /**
- * This hook method is called from <code>getChildren</code> once for every
- * member of a container resource. This implementation
- * creates a new <code>ResourceNode</code> for the given child resource.
- * Clients may override this method to create a different type of
- * <code>IStructureComparator</code> or to filter children by returning <code>null</code>.
- *
- * @param child the child resource for which a <code>IStructureComparator</code> must be returned
- * @return a <code>ResourceNode</code> for the given child or <code>null</code>
- */
- protected IStructureComparator createChild(IResource child) {
- return new ResourceNode(child);
- }
-
- /**
- * Returns an open stream if the corresponding resource implements the
- * <code>IStorage</code> interface. Otherwise the value <code>null</code> is returned.
- *
- * @return a buffered input stream containing the contents of this storage
- * @exception CoreException if the contents of this storage could not be accessed
- */
- protected InputStream createStream() throws CoreException {
- if (fResource instanceof IStorage) {
- InputStream is= null;
- IStorage storage= (IStorage) fResource;
- try {
- is= storage.getContents();
- } catch (CoreException e) {
- if (e.getStatus().getCode() == IResourceStatus.OUT_OF_SYNC_LOCAL) {
- fResource.refreshLocal(IResource.DEPTH_INFINITE, null);
- is= storage.getContents();
- } else
- throw e;
- }
- if (is != null)
- return new BufferedInputStream(is);
- }
- return null;
- }
-
- /* (non Javadoc)
- * see IEditableContent.isEditable
- */
- public boolean isEditable() {
- return true;
- }
-
- /* (non Javadoc)
- * see IEditableContent.replace
- */
- public ITypedElement replace(ITypedElement child, ITypedElement other) {
- return child;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.compare.IEncodedStreamContentAccessor#getCharset()
- */
- public String getCharset() {
- return Utilities.getCharset(fResource);
- }
-}
-
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/Splitter.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/Splitter.java
deleted file mode 100644
index 4fb46d6b1..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/Splitter.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.custom.SashForm;
-
-/**
- * The Splitter adds support for nesting to a SashForm.
- * <P>
- * If Splitters are nested directly:
- * <UL>
- * <LI>changing the visibility of a child may propagate upward to the parent Splitter if the child
- * is the last child to become invisible or the first to become visible.</LI>
- * <LI>maximizing a child makes it as large as the topmost enclosing Splitter</LI>
- * </UL>
- *
- * @since 2.1
- */
-public class Splitter extends SashForm {
-
- private static final String VISIBILITY= "org.eclipse.compare.internal.visibility"; //$NON-NLS-1$
-
- /**
- * Constructs a new instance of this class given its parent
- * and a style value describing its behavior and appearance.
- * <p>
- * The style value is either one of the style constants defined in
- * class <code>SWT</code> which is applicable to instances of this
- * class, or must be built by <em>bitwise OR</em>'ing together
- * (that is, using the <code>int</code> "|" operator) two or more
- * of those <code>SWT</code> style constants. The class description
- * lists the style constants that are applicable to the class.
- * Style bits are also inherited from superclasses.
- * </p>
- *
- * @param parent a widget which will be the parent of the new instance (cannot be null)
- * @param style the style of widget to construct
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
- * </ul>
- * @exception org.eclipse.swt.SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * </ul>
- */
- public Splitter(Composite parent, int style) {
- super(parent, style);
- }
-
- /**
- * Sets the visibility of the given child in this Splitter. If this change
- * affects the visibility state of the whole Splitter, and if the Splitter
- * is directly nested in one or more Splitters, this method recursively
- * propagates the new state upward.
- *
- * @param child the child control for which the visibility is changed
- * @param visible the new visibility state
- */
- public void setVisible(Control child, boolean visible) {
-
- boolean wasEmpty= isEmpty();
-
- child.setVisible(visible);
- child.setData(VISIBILITY, new Boolean(visible));
-
- if (wasEmpty != isEmpty()) {
- // recursively walk up
- Composite parent= getParent();
- if (parent instanceof Splitter) {
- Splitter sp= (Splitter) parent;
- sp.setVisible(this, visible);
- sp.layout();
- }
- } else {
- layout();
- }
- }
-
- /* (non-Javadoc)
- * Recursively calls setMaximizedControl for all direct parents that are
- * itself Splitters.
- */
- public void setMaximizedControl(Control control) {
- if (control == null || control == getMaximizedControl())
- super.setMaximizedControl(null);
- else
- super.setMaximizedControl(control);
-
- // recursively walk upward
- Composite parent= getParent();
- if (parent instanceof Splitter)
- ((Splitter) parent).setMaximizedControl(this);
- else
- layout(true);
- }
-
- /* (non-Javadoc)
- * Returns true if Splitter has no children or if all children are invisible.
- */
- private boolean isEmpty() {
- Control[] controls= getChildren();
- for (int i= 0; i < controls.length; i++)
- if (isVisible(controls[i]))
- return false;
- return true;
- }
-
- /* (non-Javadoc)
- * Returns the visibility state of the given child control. If the
- * control is a Sash, this method always returns false.
- */
- private boolean isVisible(Control child) {
- if (child instanceof Sash)
- return false;
- Object data= child.getData(VISIBILITY);
- if (data instanceof Boolean)
- return ((Boolean)data).booleanValue();
- return true;
- }
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java
deleted file mode 100644
index 15a1851dc..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare;
-
-import java.io.*;
-import java.util.*;
-import java.util.zip.*;
-
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.swt.graphics.Image;
-
-import org.eclipse.jface.util.Assert;
-
-import org.eclipse.compare.internal.*;
-import org.eclipse.compare.structuremergeviewer.*;
-
-
-/**
- * This implementation of the <code>IStructureCreator</code> interface
- * makes the contents of a zip archive available as a
- * hierarchical structure of <code>IStructureComparator</code>s.
- * <p>
- * It is used when comparing the internal structure of a zip archive.
- *
- * @since 2.0
- */
-public class ZipFileStructureCreator implements IStructureCreator {
-
- /**
- * Common base class for ZipFolder and ZipFile
- */
- static abstract class ZipResource implements IStructureComparator, ITypedElement {
-
- private String fName;
-
- ZipResource(String name) {
- fName= name;
- }
-
- public String getName() {
- return fName;
- }
-
- public Image getImage() {
- return CompareUI.getImage(getType());
- }
-
- /*
- * Returns true if other is ITypedElement and names are equal.
- * @see IComparator#equals
- */
- public boolean equals(Object other) {
- if (other instanceof ITypedElement)
- return fName.equals(((ITypedElement) other).getName());
- return super.equals(other);
- }
-
- public int hashCode() {
- return fName.hashCode();
- }
- }
-
- static class ZipFolder extends ZipResource {
-
- private HashMap fChildren= new HashMap(10);
-
- ZipFolder(String name) {
- super(name);
- }
-
- public String getType() {
- return ITypedElement.FOLDER_TYPE;
- }
-
- public Object[] getChildren() {
- Object[] children= new Object[fChildren.size()];
- Iterator iter= fChildren.values().iterator();
- for (int i= 0; iter.hasNext(); i++)
- children[i]= iter.next();
- return children;
- }
-
- ZipFile createContainer(String path) {
- String entry= path;
- int pos= path.indexOf('/');
- if (pos < 0)
- pos= path.indexOf('\\');
- if (pos >= 0) {
- entry= path.substring(0, pos);
- path= path.substring(pos + 1);
- } else if (entry.length() > 0) {
- if (CompareUIPlugin.getDefault().filter(path, false, true))
- return null;
- ZipFile ze= new ZipFile(entry);
- fChildren.put(entry, ze);
- return ze;
- } else
- return null;
-
- ZipFolder folder= null;
- if (fChildren != null) {
- Object o= fChildren.get(entry);
- if (o instanceof ZipFolder)
- folder= (ZipFolder) o;
- }
-
- if (folder == null) {
- if (path.length() > 0 && CompareUIPlugin.getDefault().filter(path, true, true))
- return null;
- folder= new ZipFolder(entry);
- fChildren.put(entry, folder);
- }
-
- return folder.createContainer(path);
- }
- }
-
- static class ZipFile extends ZipResource implements IStreamContentAccessor {
-
- private byte[] fContents;
-
- ZipFile(String name) {
- super(name);
- }
-
- public String getType() {
- String s= this.getName();
- int pos= s.lastIndexOf('.');
- if (pos >= 0)
- return s.substring(pos + 1);
- return ITypedElement.UNKNOWN_TYPE;
- }
-
- public Object[] getChildren() {
- return null;
- }
-
- public InputStream getContents() {
- if (fContents == null)
- fContents= new byte[0];
- return new ByteArrayInputStream(fContents);
- }
-
- byte[] getBytes() {
- return fContents;
- }
-
- void setBytes(byte[] buffer) {
- fContents= buffer;
- }
-
- void appendBytes(byte[] buffer, int length) {
- if (length > 0) {
- int oldLen= 0;
- if (fContents != null)
- oldLen= fContents.length;
- byte[] newBuf= new byte[oldLen + length];
- if (oldLen > 0)
- System.arraycopy(fContents, 0, newBuf, 0, oldLen);
- System.arraycopy(buffer, 0, newBuf, oldLen, length);
- fContents= newBuf;
- }
- }
- }
-
- private String fTitle;
-
- /**
- * Create a new ZipFileStructureCreator.
- */
- public ZipFileStructureCreator() {
- this(Utilities.getString("ZipStructureCreator.name")); //$NON-NLS-1$
- }
-
- /**
- * Create a new ZipFileStructureCreator with the given title.
- * The title is returned by the method <code>getName()</code>.
- * @param title the title of this strcuture creator
- */
- public ZipFileStructureCreator(String title) {
- fTitle= title;
- }
-
- public String getName() {
- return fTitle;
- }
-
- public IStructureComparator getStructure(Object input) {
-
- InputStream is= null;
-
- if (input instanceof IStreamContentAccessor) {
- IStreamContentAccessor sca= (IStreamContentAccessor) input;
- try {
- is= sca.getContents();
- } catch (CoreException ex) {
- // NeedWork
- }
- }
-
- if (is == null)
- return null;
-
- ZipInputStream zip= new ZipInputStream(is);
- ZipFolder root= new ZipFolder(""); //$NON-NLS-1$
- try {
- for (;;) {
- ZipEntry entry= zip.getNextEntry();
- if (entry == null)
- break;
-
- ZipFile ze= root.createContainer(entry.getName());
- if (ze != null) {
- int length= (int) entry.getSize();
- if (length >= 0) {
- byte[] buffer= new byte[length];
- int offset= 0;
-
- do {
- int n= zip.read(buffer, offset, length);
- offset += n;
- length -= n;
- } while (length > 0);
-
- ze.setBytes(buffer);
- } else {
- byte[] buffer= new byte[1024];
- int n;
- do {
- n= zip.read(buffer, 0, 1024);
- ze.appendBytes(buffer, n);
- } while (n >= 0);
- }
- }
- zip.closeEntry();
- }
- } catch (IOException ex) {
- return null;
- } finally {
- try {
- zip.close();
- } catch (IOException ex) {
- // silently ignored
- }
- }
-
- if (root.fChildren.size() == 1) {
- Iterator iter= root.fChildren.values().iterator();
- return (IStructureComparator) iter.next();
- }
- return root;
- }
-
- public String getContents(Object o, boolean ignoreWhitespace) {
- if (o instanceof ZipFile) {
- byte[] bytes= ((ZipFile)o).getBytes();
- if (bytes != null)
- return new String(bytes);
- return ""; //$NON-NLS-1$
- }
- return null;
- }
-
- /**
- * Returns <code>false</code> since we cannot update a zip archive.
- * @return <code>false</code>
- */
- public boolean canSave() {
- return false;
- }
-
- /**
- * Called whenever a copy operation has been performed on a tree node.
- * This implementation throws an <code>AssertionFailedException</code>
- * since we cannot update a zip archive.
- *
- * @param structure the node for which to save the new content
- * @param input the object from which the structure tree was created in <code>getStructure</code>
- */
- public void save(IStructureComparator structure, Object input) {
- Assert.isTrue(false); // Cannot update zip archive
- }
-
- public IStructureComparator locate(Object path, Object source) {
- return null;
- }
-
- /**
- * Returns <code>false</code> since this <code>IStructureCreator</code>
- * cannot rewrite the diff tree in order to fold certain combinations of
- * additons and deletions.
- * <p>
- * Note: this method is for internal use only. Clients should not call this method.
- * @return <code>false</code>
- */
- public boolean canRewriteTree() {
- return false;
- }
-
- /**
- * Empty implementation since this <code>IStructureCreator</code>
- * cannot rewrite the diff tree in order to fold certain combinations of
- * additons and deletions.
- * <p>
- * Note: this method is for internal use only. Clients should not call this method.
- * @param differencer
- * @param root
- */
- public void rewriteTree(Differencer differencer, IDiffContainer root) {
- // empty default implementation
- }
-}
-
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
deleted file mode 100644
index b5a54ba89..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
+++ /dev/null
@@ -1,1043 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.compare.contentmergeviewer;
-
-import java.util.ResourceBundle;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.ui.IKeyBindingService;
-import org.eclipse.ui.IWorkbenchPartSite;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.jface.util.*;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.viewers.ContentViewer;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ISelection;
-
-import org.eclipse.compare.*;
-import org.eclipse.compare.structuremergeviewer.*;
-import org.eclipse.compare.internal.*;
-
-/**
- * An abstract compare and merge viewer with two side-by-side content areas
- * and an optional content area for the ancestor. The implementation makes no
- * assumptions about the content type.
- * <p>
- * <code>ContentMergeViewer</code>
- * <ul>
- * <li>implements the overall layout and defines hooks so that subclasses
- * can easily provide an implementation for a specific content type,
- * <li>implements the UI for making the areas resizable,
- * <li>has an action for controlling whether the ancestor area is visible or not,
- * <li>has actions for copying one side of the input to the other side,
- * <li>tracks the dirty state of the left and right sides and send out notification
- * on state changes.
- * </ul>
- * A <code>ContentMergeViewer</code> accesses its
- * model by means of a content provider which must implement the
- * <code>IMergeViewerContentProvider</code> interface.
- * </p>
- * <p>
- * Clients may wish to use the standard concrete subclass <code>TextMergeViewer</code>,
- * or define their own subclass.
- *
- * @see IMergeViewerContentProvider
- * @see TextMergeViewer
- */
-public abstract class ContentMergeViewer extends ContentViewer
- implements IPropertyChangeNotifier, ISavable {
-
- class SaveAction extends MergeViewerAction {
-
- SaveAction(boolean left) {
- super(true, false, false);
- Utilities.initAction(this, getResourceBundle(), "action.save."); //$NON-NLS-1$
- }
-
- public void run() {
- saveContent(getInput());
- }
- }
-
- /**
- * Property names.
- */
- private static final String ANCESTOR_ENABLED= ComparePreferencePage.INITIALLY_SHOW_ANCESTOR_PANE;
-
- /* package */ static final int HORIZONTAL= 1;
- /* package */ static final int VERTICAL= 2;
-
- static final double HSPLIT= 0.5;
- static final double VSPLIT= 0.3;
-
- private class ContentMergeViewerLayout extends Layout {
-
- public Point computeSize(Composite c, int w, int h, boolean force) {
- return new Point(100, 100);
- }
-
- public void layout(Composite composite, boolean force) {
-
- // determine some derived sizes
- int headerHeight= fLeftLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).y;
- Rectangle r= composite.getClientArea();
-
- int centerWidth= getCenterWidth();
- int width1= (int)((r.width-centerWidth)*fHSplit);
- int width2= r.width-width1-centerWidth;
-
- int height1= 0;
- int height2= 0;
- if (fAncestorEnabled && fShowAncestor) {
- height1= (int)((r.height-(2*headerHeight))*fVSplit);
- height2= r.height-(2*headerHeight)-height1;
- } else {
- height1= 0;
- height2= r.height-headerHeight;
- }
-
- int y= 0;
-
- if (fAncestorEnabled && fShowAncestor) {
- fAncestorLabel.setBounds(0, y, r.width, headerHeight);
- fAncestorLabel.setVisible(true);
- y+= headerHeight;
- handleResizeAncestor(0, y, r.width, height1);
- y+= height1;
- } else {
- fAncestorLabel.setVisible(false);
- handleResizeAncestor(0, 0, 0, 0);
- }
-
- fLeftLabel.getSize(); // without this resizing would not always work
-
- if (centerWidth > 3) {
- fLeftLabel.setBounds(0, y, width1+1, headerHeight);
- fDirectionLabel.setVisible(true);
- fDirectionLabel.setBounds(width1+1, y, centerWidth-1, headerHeight);
- fRightLabel.setBounds(width1+centerWidth, y, width2, headerHeight);
- } else {
- fLeftLabel.setBounds(0, y, width1, headerHeight);
- fDirectionLabel.setVisible(false);
- fRightLabel.setBounds(width1, y, r.width-width1, headerHeight);
- }
-
- y+= headerHeight;
-
- if (fCenter != null && !fCenter.isDisposed())
- fCenter.setBounds(width1, y, centerWidth, height2);
-
- handleResizeLeftRight(0, y, width1, centerWidth, width2, height2);
- }
- }
-
- class Resizer extends MouseAdapter implements MouseMoveListener {
-
- Control fControl;
- int fX, fY;
- int fWidth1, fWidth2;
- int fHeight1, fHeight2;
- int fDirection;
- boolean fLiveResize;
- boolean fIsDown;
-
- public Resizer(Control c, int dir) {
- fDirection= dir;
- fControl= c;
- fLiveResize= !(fControl instanceof Sash);
- updateCursor(c, dir);
- fControl.addMouseListener(this);
- fControl.addMouseMoveListener(this);
- fControl.addDisposeListener(
- new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- fControl= null;
- }
- }
- );
- }
-
- public void mouseDoubleClick(MouseEvent e) {
- if ((fDirection & HORIZONTAL) != 0)
- fHSplit= HSPLIT;
- if ((fDirection & VERTICAL) != 0)
- fVSplit= VSPLIT;
- fComposite.layout(true);
- }
-
- public void mouseDown(MouseEvent e) {
- Composite parent= fControl.getParent();
-
- Point s= parent.getSize();
- Point as= fAncestorLabel.getSize();
- Point ys= fLeftLabel.getSize();
- Point ms= fRightLabel.getSize();
-
- fWidth1= ys.x;
- fWidth2= ms.x;
- fHeight1= fLeftLabel.getLocation().y-as.y;
- fHeight2= s.y-(fLeftLabel.getLocation().y+ys.y);
-
- fX= e.x;
- fY= e.y;
- fIsDown= true;
- }
-
- public void mouseUp(MouseEvent e) {
- fIsDown= false;
- if (!fLiveResize)
- resize(e);
- }
-
- public void mouseMove(MouseEvent e) {
- if (fIsDown && fLiveResize)
- resize(e);
- }
-
- private void resize(MouseEvent e) {
- int dx= e.x-fX;
- int dy= e.y-fY;
-
- int centerWidth= fCenter.getSize().x;
-
- if (fWidth1 + dx > centerWidth && fWidth2 - dx > centerWidth) {
- fWidth1+= dx;
- fWidth2-= dx;
- if ((fDirection & HORIZONTAL) != 0)
- fHSplit= (double)fWidth1/(double)(fWidth1+fWidth2);
- }
- if (fHeight1 + dy > centerWidth && fHeight2 - dy > centerWidth) {
- fHeight1+= dy;
- fHeight2-= dy;
- if ((fDirection & VERTICAL) != 0)
- fVSplit= (double)fHeight1/(double)(fHeight1+fHeight2);
- }
-
- fComposite.layout(true);
- fControl.getDisplay().update();
- }
- }
-
- /** Style bits for top level composite */
- private int fStyles;
- private ResourceBundle fBundle;
- private CompareConfiguration fCompareConfiguration;
- private IPropertyChangeListener fPropertyChangeListener;
- private ICompareInputChangeListener fCompareInputChangeListener;
- private ListenerList fListenerList;
- boolean fConfirmSave= true;
-
- private double fHSplit= HSPLIT; // width ratio of left and right panes
- private double fVSplit= VSPLIT; // height ratio of ancestor and bottom panes
-
- private boolean fAncestorEnabled= true; // show ancestor in case of conflicts
- /* package */ boolean fShowAncestor= false; // if current input has conflicts
- private boolean fIsThreeWay= false;
- private ActionContributionItem fAncestorItem;
-
- private Action fCopyLeftToRightAction; // copy from left to right
- private Action fCopyRightToLeftAction; // copy from right to left
-
- MergeViewerAction fLeftSaveAction;
- MergeViewerAction fRightSaveAction;
-
- private IKeyBindingService fKeyBindingService;
-
- // SWT widgets
- /* package */ Composite fComposite;
- private CLabel fAncestorLabel;
- private CLabel fLeftLabel;
- private CLabel fRightLabel;
- /* package */ CLabel fDirectionLabel;
- /* package */ Control fCenter;
-
- //---- SWT resources to be disposed
- private Image fRightArrow;
- private Image fLeftArrow;
- private Image fBothArrow;
- Cursor fNormalCursor;
- private Cursor fHSashCursor;
- private Cursor fVSashCursor;
- private Cursor fHVSashCursor;
-
- //---- end
-
- /**
- * Creates a new content merge viewer and initializes with a resource bundle and a
- * configuration.
- *
- * @param style SWT style bits
- * @param bundle the resource bundle
- * @param cc the configuration object
- */
- protected ContentMergeViewer(int style, ResourceBundle bundle, CompareConfiguration cc) {
- fStyles= style;
- fBundle= bundle;
-
- fAncestorEnabled= Utilities.getBoolean(cc, ANCESTOR_ENABLED, fAncestorEnabled);
- fConfirmSave= Utilities.getBoolean(cc, CompareEditor.CONFIRM_SAVE_PROPERTY, fConfirmSave);
-
- setContentProvider(new MergeViewerContentProvider(cc));
-
- fCompareInputChangeListener= new ICompareInputChangeListener() {
- public void compareInputChanged(ICompareInput input) {
- ContentMergeViewer.this.internalRefresh(input);
- }
- };
-
- fCompareConfiguration= cc;
- if (fCompareConfiguration != null) {
- fPropertyChangeListener= new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- ContentMergeViewer.this.propertyChange(event);
- }
- };
- fCompareConfiguration.addPropertyChangeListener(fPropertyChangeListener);
- }
-
- fLeftSaveAction= new SaveAction(true);
- fLeftSaveAction.setEnabled(false);
- fRightSaveAction= new SaveAction(false);
- fRightSaveAction.setEnabled(false);
- }
-
- //---- hooks ---------------------
-
- /**
- * Returns the viewer's name.
- *
- * @return the viewer's name
- */
- public String getTitle() {
- return Utilities.getString(getResourceBundle(), "title"); //$NON-NLS-1$
- }
-
- /**
- * Creates the SWT controls for the ancestor, left, and right
- * content areas of this compare viewer.
- * Implementations typically hold onto the controls
- * so that they can be initialized with the input objects in method
- * <code>updateContent</code>.
- *
- * @param composite the container for the three areas
- */
- abstract protected void createControls(Composite composite);
-
- /**
- * Lays out the ancestor area of the compare viewer.
- * It is called whenever the viewer is resized or when the sashes between
- * the areas are moved to adjust the size of the areas.
- *
- * @param x the horizontal position of the ancestor area within its container
- * @param y the vertical position of the ancestor area within its container
- * @param width the width of the ancestor area
- * @param height the height of the ancestor area
- */
- abstract protected void handleResizeAncestor(int x, int y, int width, int height);
-
- /**
- * Lays out the left and right areas of the compare viewer.
- * It is called whenever the viewer is resized or when the sashes between
- * the areas are moved to adjust the size of the areas.
- *
- * @param x the horizontal position of the left area within its container
- * @param y the vertical position of the left and right area within its container
- * @param leftWidth the width of the left area
- * @param centerWidth the width of the gap between the left and right areas
- * @param rightWidth the width of the right area
- * @param height the height of the left and right areas
- */
- abstract protected void handleResizeLeftRight(int x, int y, int leftWidth, int centerWidth,
- int rightWidth, int height);
-
- /**
- * Contributes items to the given <code>ToolBarManager</code>.
- * It is called when this viewer is installed in its container and if the container
- * has a <code>ToolBarManager</code>.
- * The <code>ContentMergeViewer</code> implementation of this method does nothing.
- * Subclasses may reimplement.
- *
- * @param toolBarManager the toolbar manager to contribute to
- */
- protected void createToolItems(ToolBarManager toolBarManager) {
- // empty implementation
- }
-
- /**
- * Initializes the controls of the three content areas with the given input objects.
- *
- * @param ancestor the input for the ancestor area
- * @param left the input for the left area
- * @param right the input for the right area
- */
- abstract protected void updateContent(Object ancestor, Object left, Object right);
-
- /**
- * Copies the content of one side to the other side.
- * Called from the (internal) actions for copying the sides of the viewer's input object.
- *
- * @param leftToRight if <code>true</code>, the left side is copied to the right side;
- * if <code>false</code>, the right side is copied to the left side
- */
- abstract protected void copy(boolean leftToRight);
-
- /**
- * Returns the byte contents of the left or right side. If the viewer
- * has no editable content <code>null</code> can be returned.
- *
- * @param left if <code>true</code>, the byte contents of the left area is returned;
- * if <code>false</code>, the byte contents of the right area
- * @return the content as an array of bytes, or <code>null</code>
- */
- abstract protected byte[] getContents(boolean left);
-
- //----------------------------
-
- /**
- * Returns the resource bundle of this viewer.
- *
- * @return the resource bundle
- */
- protected ResourceBundle getResourceBundle() {
- return fBundle;
- }
-
- /**
- * Returns the compare configuration of this viewer,
- * or <code>null</code> if this viewer does not yet have a configuration.
- *
- * @return the compare configuration, or <code>null</code> if none
- */
- protected CompareConfiguration getCompareConfiguration() {
- return fCompareConfiguration;
- }
-
- /**
- * The <code>ContentMergeViewer</code> implementation of this
- * <code>ContentViewer</code> method
- * checks to ensure that the content provider is an <code>IMergeViewerContentProvider</code>.
- * @param contentProvider the contentprovider to set. Must implement IMergeViewerContentProvider.
- */
- public void setContentProvider(IContentProvider contentProvider) {
- Assert.isTrue(contentProvider instanceof IMergeViewerContentProvider);
- super.setContentProvider(contentProvider);
- }
-
- /* package */ IMergeViewerContentProvider getMergeContentProvider() {
- return (IMergeViewerContentProvider) getContentProvider();
- }
-
- /**
- * The <code>ContentMergeViewer</code> implementation of this
- * <code>Viewer</code> method returns the empty selection. Subclasses may override.
- * @return empty selection.
- */
- public ISelection getSelection() {
- return new ISelection() {
- public boolean isEmpty() {
- return true;
- }
- };
- }
-
- /*
- * The <code>ContentMergeViewer</code> implementation of this
- * <code>Viewer</code> method does nothing. Subclasses may reimplement.
- */
- public void setSelection(ISelection selection, boolean reveal) {
- // empty implementation
- }
-
- /* package */ void propertyChange(PropertyChangeEvent event) {
-
- String key= event.getProperty();
-
- if (key.equals(ANCESTOR_ENABLED)) {
- fAncestorEnabled= Utilities.getBoolean(getCompareConfiguration(), ANCESTOR_ENABLED, fAncestorEnabled);
- fComposite.layout(true);
-
- updateCursor(fLeftLabel, VERTICAL);
- updateCursor(fDirectionLabel, HORIZONTAL | VERTICAL);
- updateCursor(fRightLabel, VERTICAL);
-
- return;
- }
- }
-
- void updateCursor(Control c, int dir) {
- if (!(c instanceof Sash)) {
- Cursor cursor= null;
- switch (dir) {
- case VERTICAL:
- if (fAncestorEnabled) {
- if (fVSashCursor == null) fVSashCursor= new Cursor(c.getDisplay(), SWT.CURSOR_SIZENS);
- cursor= fVSashCursor;
- } else {
- if (fNormalCursor == null) fNormalCursor= new Cursor(c.getDisplay(), SWT.CURSOR_ARROW);
- cursor= fNormalCursor;
- }
- break;
- case HORIZONTAL:
- if (fHSashCursor == null) fHSashCursor= new Cursor(c.getDisplay(), SWT.CURSOR_SIZEWE);
- cursor= fHSashCursor;
- break;
- case VERTICAL + HORIZONTAL:
- if (fAncestorEnabled) {
- if (fHVSashCursor == null) fHVSashCursor= new Cursor(c.getDisplay(), SWT.CURSOR_SIZEALL);
- cursor= fHVSashCursor;
- } else {
- if (fHSashCursor == null) fHSashCursor= new Cursor(c.getDisplay(), SWT.CURSOR_SIZEWE);
- cursor= fHSashCursor;
- }
- break;
- }
- if (cursor != null)
- c.setCursor(cursor);
- }
- }
-
- void setAncestorVisibility(boolean visible, boolean enabled) {
- if (fAncestorItem != null) {
- Action action= (Action) fAncestorItem.getAction();
- if (action != null) {
- action.setChecked(visible);
- action.setEnabled(enabled);
- }
- }
- if (fCompareConfiguration != null)
- fCompareConfiguration.setProperty(ANCESTOR_ENABLED, new Boolean(visible));
- }
-
- //---- input
-
- /* package */ boolean isThreeWay() {
- return fIsThreeWay;
- }
-
- /**
- * Internal hook method called when the input to this viewer is
- * initially set or subsequently changed.
- * <p>
- * The <code>ContentMergeViewer</code> implementation of this <code>Viewer</code>
- * method tries to save the old input by calling <code>doSave(...)</code> and
- * then calls <code>internalRefresh(...)</code>.
- *
- * @param input the new input of this viewer, or <code>null</code> if there is no new input
- * @param oldInput the old input element, or <code>null</code> if there was previously no input
- */
- protected final void inputChanged(Object input, Object oldInput) {
-
- if (input != oldInput)
- if (oldInput instanceof ICompareInput)
- ((ICompareInput)oldInput).removeCompareInputChangeListener(fCompareInputChangeListener);
-
- boolean success= doSave(input, oldInput);
-
- if (input != oldInput)
- if (input instanceof ICompareInput)
- ((ICompareInput)input).addCompareInputChangeListener(fCompareInputChangeListener);
-
- if (success) {
- setLeftDirty(false);
- setRightDirty(false);
- }
-
- if (input != oldInput)
- internalRefresh(input);
- }
-
- /**
- * This method is called from the <code>Viewer</code> method <code>inputChanged</code>
- * to save any unsaved changes of the old input.
- * <p>
- * The <code>ContentMergeViewer</code> implementation of this
- * method calls <code>saveContent(...)</code>. If confirmation has been turned on
- * with <code>setConfirmSave(true)</code>, a confirmation alert is posted before saving.
- * </p>
- * Clients can override this method and are free to decide whether
- * they want to call the inherited method.
- * @param newInput the new input of this viewer, or <code>null</code> if there is no new input
- * @param oldInput the old input element, or <code>null</code> if there was previously no input
- * @return <code>true</code> if saving was successful, or if the user didn't want to save (by pressing 'NO' in the confirmation dialog).
- * @since 2.0
- */
- protected boolean doSave(Object newInput, Object oldInput) {
-
- // before setting the new input we have to save the old
- if (fLeftSaveAction.isEnabled() || fRightSaveAction.isEnabled()) {
-
- // post alert
- if (fConfirmSave) {
- Shell shell= fComposite.getShell();
-
- MessageDialog dialog= new MessageDialog(shell,
- Utilities.getString(getResourceBundle(), "saveDialog.title"), //$NON-NLS-1$
- null, // accept the default window icon
- Utilities.getString(getResourceBundle(), "saveDialog.message"), //$NON-NLS-1$
- MessageDialog.QUESTION,
- new String[] {
- IDialogConstants.YES_LABEL,
- IDialogConstants.NO_LABEL,
- },
- 0); // default button index
-
- switch (dialog.open()) { // open returns index of pressed button
- case 0:
- saveContent(oldInput);
- break;
- case 1:
- setLeftDirty(false);
- setRightDirty(false);
- break;
- case 2:
- throw new ViewerSwitchingCancelled();
- }
- } else
- saveContent(oldInput);
- return true;
- }
- return false;
- }
-
- /**
- * Controls whether <code>doSave(Object, Object)</code> asks for confirmation before saving
- * the old input with <code>saveContent(Object)</code>.
- * @param enable a value of <code>true</code> enables confirmation
- * @since 2.0
- */
- public void setConfirmSave(boolean enable) {
- fConfirmSave= enable;
- }
-
- /* (non Javadoc)
- * see Viewer.refresh
- */
- public void refresh() {
- internalRefresh(getInput());
- }
-
- private void internalRefresh(Object input) {
-
- IMergeViewerContentProvider content= getMergeContentProvider();
- if (content != null) {
- Object ancestor= content.getAncestorContent(input);
- if (input instanceof ICompareInput)
- fIsThreeWay= (((ICompareInput)input).getKind() & Differencer.DIRECTION_MASK) != 0;
- else
- fIsThreeWay= ancestor != null;
-
- if (fAncestorItem != null)
- fAncestorItem.setVisible(fIsThreeWay);
-
- boolean oldFlag= fShowAncestor;
- fShowAncestor= fIsThreeWay && content.showAncestor(input);
-
- if (fAncestorEnabled && oldFlag != fShowAncestor)
- fComposite.layout(true);
-
- ToolBarManager tbm= CompareViewerPane.getToolBarManager(fComposite.getParent());
- if (tbm != null) {
- updateToolItems();
- tbm.update(true);
- tbm.getControl().getParent().layout(true);
- }
-
- updateHeader();
-
- Object left= content.getLeftContent(input);
- Object right= content.getRightContent(input);
- updateContent(ancestor, left, right);
- }
- }
-
- //---- layout & SWT control creation
-
- /**
- * Builds the SWT controls for the three areas of a compare/merge viewer.
- * <p>
- * Calls the hooks <code>createControls</code> and <code>createToolItems</code>
- * to let subclasses build the specific content areas and to add items to
- * an enclosing toolbar.
- * <p>
- * This method must only be called in the constructor of subclasses.
- *
- * @param parent the parent control
- * @return the new control
- */
- protected final Control buildControl(Composite parent) {
-
- fComposite= new Composite(parent, fStyles) {
- public boolean setFocus() {
- return internalSetFocus();
- }
- };
- fComposite.setData(CompareUI.COMPARE_VIEWER_TITLE, getTitle());
-
- hookControl(fComposite); // hook help & dispose listener
-
- fComposite.setLayout(new ContentMergeViewerLayout());
-
- int style= SWT.SHADOW_OUT;
- fAncestorLabel= new CLabel(fComposite, style);
-
- fLeftLabel= new CLabel(fComposite, style);
- new Resizer(fLeftLabel, VERTICAL);
-
- fDirectionLabel= new CLabel(fComposite, style);
- fDirectionLabel.setAlignment(SWT.CENTER);
- new Resizer(fDirectionLabel, HORIZONTAL | VERTICAL);
-
- fRightLabel= new CLabel(fComposite, style);
- new Resizer(fRightLabel, VERTICAL);
-
- if (fCenter == null || fCenter.isDisposed())
- fCenter= createCenter(fComposite);
-
- createControls(fComposite);
-
- IWorkbenchPartSite ps= Utilities.findSite(fComposite);
- fKeyBindingService= ps != null ? ps.getKeyBindingService() : null;
-
- ToolBarManager tbm= CompareViewerPane.getToolBarManager(parent);
- if (tbm != null) {
- tbm.removeAll();
-
- // define groups
- tbm.add(new Separator("modes")); //$NON-NLS-1$
- tbm.add(new Separator("merge")); //$NON-NLS-1$
- tbm.add(new Separator("navigation")); //$NON-NLS-1$
-
- CompareConfiguration cc= getCompareConfiguration();
-
- if (cc.isRightEditable()) {
- fCopyLeftToRightAction=
- new Action() {
- public void run() {
- copy(true);
- }
- };
- Utilities.initAction(fCopyLeftToRightAction, getResourceBundle(), "action.CopyLeftToRight."); //$NON-NLS-1$
- tbm.appendToGroup("merge", fCopyLeftToRightAction); //$NON-NLS-1$
- Utilities.registerAction(fKeyBindingService, fCopyLeftToRightAction, "org.eclipse.compare.copyAllLeftToRight"); //$NON-NLS-1$
- }
-
- if (cc.isLeftEditable()) {
- fCopyRightToLeftAction=
- new Action() {
- public void run() {
- copy(false);
- }
- };
- Utilities.initAction(fCopyRightToLeftAction, getResourceBundle(), "action.CopyRightToLeft."); //$NON-NLS-1$
- tbm.appendToGroup("merge", fCopyRightToLeftAction); //$NON-NLS-1$
- Utilities.registerAction(fKeyBindingService, fCopyRightToLeftAction, "org.eclipse.compare.copyAllRightToLeft"); //$NON-NLS-1$
- }
-
- Action a= new ChangePropertyAction(fBundle, fCompareConfiguration, "action.EnableAncestor.", ANCESTOR_ENABLED); //$NON-NLS-1$
- a.setChecked(fAncestorEnabled);
- fAncestorItem= new ActionContributionItem(a);
- fAncestorItem.setVisible(false);
- tbm.appendToGroup("modes", fAncestorItem); //$NON-NLS-1$
-
- createToolItems(tbm);
- updateToolItems();
-
- tbm.update(true);
- }
-
- return fComposite;
- }
-
- /* package */ boolean internalSetFocus() {
- return false;
- }
-
- /* package */ int getCenterWidth() {
- return 3;
- }
-
- /* package */ boolean getAncestorEnabled() {
- return fAncestorEnabled;
- }
-
- /* package */ Control createCenter(Composite parent) {
- Sash sash= new Sash(parent, SWT.VERTICAL);
- new Resizer(sash, HORIZONTAL);
- return sash;
- }
-
- /* package */ Control getCenter() {
- return fCenter;
- }
-
- /*
- * @see Viewer.getControl()
- */
- public Control getControl() {
- return fComposite;
- }
-
- /*
- * Called on the viewer disposal.
- * Unregisters from the compare configuration.
- * Clients may extend if they have to do additional cleanup.
- */
- protected void handleDispose(DisposeEvent event) {
-
- if (fKeyBindingService != null) {
- if (fCopyLeftToRightAction != null)
- fKeyBindingService.unregisterAction(fCopyLeftToRightAction);
- if (fCopyRightToLeftAction != null)
- fKeyBindingService.unregisterAction(fCopyRightToLeftAction);
- fKeyBindingService= null;
- }
-
- Object input= getInput();
- if (input instanceof ICompareInput)
- ((ICompareInput)input).removeCompareInputChangeListener(fCompareInputChangeListener);
-
- if (fCompareConfiguration != null && fPropertyChangeListener != null) {
- fCompareConfiguration.removePropertyChangeListener(fPropertyChangeListener);
- fPropertyChangeListener= null;
- }
-
- fAncestorLabel= null;
- fLeftLabel= null;
- fDirectionLabel= null;
- fRightLabel= null;
- fCenter= null;
-
- if (fRightArrow != null) {
- fRightArrow.dispose();
- fRightArrow= null;
- }
- if (fLeftArrow != null) {
- fLeftArrow.dispose();
- fLeftArrow= null;
- }
- if (fBothArrow != null) {
- fBothArrow.dispose();
- fBothArrow= null;
- }
-
- if (fNormalCursor != null) {
- fNormalCursor.dispose();
- fNormalCursor= null;
- }
- if (fHSashCursor != null) {
- fHSashCursor.dispose();
- fHSashCursor= null;
- }
- if (fVSashCursor != null) {
- fVSashCursor.dispose();
- fVSashCursor= null;
- }
- if (fHVSashCursor != null) {
- fHVSashCursor.dispose();
- fHVSashCursor= null;
- }
-
- super.handleDispose(event);
- }
-
- /**
- * Updates the enabled state of the toolbar items.
- * <p>
- * This method is called whenever the state of the items needs updating.
- * <p>
- * Subclasses may extend this method, although this is generally not required.
- */
- protected void updateToolItems() {
-
- IMergeViewerContentProvider content= getMergeContentProvider();
-
- Object input= getInput();
-
- if (fCopyLeftToRightAction != null) {
- boolean enable= content.isRightEditable(input);
-// if (enable && input instanceof ICompareInput) {
-// ITypedElement e= ((ICompareInput) input).getLeft();
-// if (e == null)
-// enable= false;
-// }
- fCopyLeftToRightAction.setEnabled(enable);
- }
-
- if (fCopyRightToLeftAction != null) {
- boolean enable= content.isLeftEditable(input);
-// if (enable && input instanceof ICompareInput) {
-// ITypedElement e= ((ICompareInput) input).getRight();
-// if (e == null)
-// enable= false;
-// }
- fCopyRightToLeftAction.setEnabled(enable);
- }
- }
-
- /**
- * Updates the headers of the three areas
- * by querying the content provider for a name and image for
- * the three sides of the input object.
- * <p>
- * This method is called whenever the header must be updated.
- * <p>
- * Subclasses may extend this method, although this is generally not required.
- */
- protected void updateHeader() {
-
- IMergeViewerContentProvider content= getMergeContentProvider();
- Object input= getInput();
-
- if (fAncestorLabel != null) {
- fAncestorLabel.setImage(content.getAncestorImage(input));
- fAncestorLabel.setText(content.getAncestorLabel(input));
- }
- if (fLeftLabel != null) {
- fLeftLabel.setImage(content.getLeftImage(input));
- fLeftLabel.setText(content.getLeftLabel(input));
- }
- if (fRightLabel != null) {
- fRightLabel.setImage(content.getRightImage(input));
- fRightLabel.setText(content.getRightLabel(input));
- }
- }
-
-// private Image loadImage(String name) {
-// ImageDescriptor id= ImageDescriptor.createFromFile(ContentMergeViewer.class, name);
-// if (id != null)
-// return id.createImage();
-// return null;
-// }
-
- /*
- * Calculates the height of the header.
- */
- /* package */ int getHeaderHeight() {
- int headerHeight= fLeftLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).y;
- headerHeight= Math.max(headerHeight, fDirectionLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).y);
- return headerHeight;
- }
-
- //---- merge direction
-
- /*
- * Returns true if both sides are editable.
- */
- /* package */ boolean canToggleMergeDirection() {
- IMergeViewerContentProvider content= getMergeContentProvider();
- Object input= getInput();
- return content.isLeftEditable(input) && content.isRightEditable(input);
- }
-
- //---- dirty state & saving state
-
- /* (non Javadoc)
- * see IPropertyChangeNotifier.addPropertyChangeListener
- */
- public void addPropertyChangeListener(IPropertyChangeListener listener) {
- if (fListenerList == null)
- fListenerList= new ListenerList();
- fListenerList.add(listener);
- }
-
- /* (non Javadoc)
- * see IPropertyChangeNotifier.removePropertyChangeListener
- */
- public void removePropertyChangeListener(IPropertyChangeListener listener) {
- if (fListenerList != null) {
- fListenerList.remove(listener);
- if (fListenerList.isEmpty())
- fListenerList= null;
- }
- }
-
- /* package */ void fireDirtyState(boolean state) {
- Utilities.firePropertyChange(fListenerList, this, CompareEditorInput.DIRTY_STATE, null, new Boolean(state));
- }
-
- /**
- * Sets the dirty state of the left side of this viewer.
- * If the new value differs from the old
- * all registered listener are notified with
- * a <code>PropertyChangeEvent</code> with the
- * property name <code>CompareEditorInput.DIRTY_STATE</code>.
- *
- * @param dirty the state of the left side dirty flag
- */
- protected void setLeftDirty(boolean dirty) {
- if (fLeftSaveAction.isEnabled() != dirty) {
- fLeftSaveAction.setEnabled(dirty);
- fireDirtyState(dirty);
- }
- }
-
- /**
- * Sets the dirty state of the right side of this viewer.
- * If the new value differs from the old
- * all registered listener are notified with
- * a <code>PropertyChangeEvent</code> with the
- * property name <code>CompareEditorInput.DIRTY_STATE</code>.
- *
- * @param dirty the state of the right side dirty flag
- */
- protected void setRightDirty(boolean dirty) {
- if (fRightSaveAction.isEnabled() != dirty) {
- fRightSaveAction.setEnabled(dirty);
- fireDirtyState(dirty);
- }
- }
-
- /*
- * Save the viewers's content.
- * Note: this method is for internal use only. Clients should not call this method.
- * @since 2.0
- */
- public void save(IProgressMonitor pm) throws CoreException {
- saveContent(getInput());
- }
-
- /*
- * Save modified content back to input elements via the content provider.
- */
- /* package */ void saveContent(Object oldInput) {
-
- // write back modified contents
- IMergeViewerContentProvider content= (IMergeViewerContentProvider) getContentProvider();
-
- boolean leftEmpty= content.getLeftContent(oldInput) == null;
- boolean rightEmpty= content.getRightContent(oldInput) == null;
-
- if (fCompareConfiguration.isLeftEditable() && fLeftSaveAction.isEnabled()) {
- byte[] bytes= getContents(true);
- if (leftEmpty && bytes != null && bytes.length == 0)
- bytes= null;
- setLeftDirty(false);
- content.saveLeftContent(oldInput, bytes);
- }
-
- if (fCompareConfiguration.isRightEditable() && fRightSaveAction.isEnabled()) {
- byte[] bytes= getContents(false);
- if (rightEmpty && bytes != null && bytes.length == 0)
- bytes= null;
- setRightDirty(false);
- content.saveRightContent(oldInput, bytes);
- }
- }
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java
deleted file mode 100644
index fedb53161..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare.contentmergeviewer;
-
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.IDocument;
-
-
-/**
- * Defines a subrange in a document.
- * <p>
- * It is used by text viewers that can work on a subrange of a document. For example,
- * a text viewer for Java compilation units might use this to restrict the view
- * to a single method.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- *
- * @see TextMergeViewer
- * @see org.eclipse.compare.structuremergeviewer.DocumentRangeNode
- */
-public interface IDocumentRange {
-
- /**
- * The position category typically used for an <code>IDocumentRange</code> position
- * (value <code>"DocumentRangeCategory"</code>).
- * @since 2.0
- */
- public static final String RANGE_CATEGORY= "DocumentRangeCategory"; //$NON-NLS-1$
-
- /**
- * Returns the underlying document.
- *
- * @return the underlying document
- */
- IDocument getDocument();
-
- /**
- * Returns a position that specifies a subrange in the underlying document,
- * or <code>null</code> if this document range spans the whole underlying document.
- *
- * @return a position that specifies a subrange in the underlying document, or <code>null</code>
- */
- Position getRange();
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java
deleted file mode 100644
index 31d78b570..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare.contentmergeviewer;
-
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.jface.viewers.IContentProvider;
-
-
-/**
- * A content provider that mediates between a <code>ContentMergeViewer</code>'s model
- * and the viewer itself.
- * <p>
- * Clients may implement this interface.
- * </p>
- *
- * @see ContentMergeViewer
- */
-public interface IMergeViewerContentProvider extends IContentProvider {
-
- //---- ancestor side
-
- /**
- * Returns the label for the ancestor side of a <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return the label for the ancestor side of a <code>ContentMergeViewer</code>
- */
- String getAncestorLabel(Object input);
-
- /**
- * Returns an optional image for the ancestor side of a <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return the image for the ancestor side of a <code>ContentMergeViewer</code>,
- * or <code>null</code> if none
- */
- Image getAncestorImage(Object input);
-
- /**
- * Returns the contents for the ancestor side of a <code>ContentMergeViewer</code>.
- * The interpretation of the returned object depends on the concrete <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return the content for the ancestor side of a <code>ContentMergeViewer</code>,
- * or <code>null</code> if none
- */
- Object getAncestorContent(Object input);
-
- /**
- * Returns whether the ancestor side of the given input element should be shown.
- * @param input the merge viewer's input
- * @return <code>true</code> if the ancestor side of the given input element should be shown
- */
- boolean showAncestor(Object input);
-
- //---- left side
-
- /**
- * Returns the label for the left side of a <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return the label for the left side of a <code>ContentMergeViewer</code>
- */
- String getLeftLabel(Object input);
-
- /**
- * Returns an optional image for the left side of a <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return the image for the left side of a <code>ContentMergeViewer</code>,
- * or <code>null</code> if none
- */
- Image getLeftImage(Object input);
-
- /**
- * Returns the contents for the left side of a <code>ContentMergeViewer</code>.
- * The interpretation of the returned object depends on the concrete <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return the content for the left side of a <code>ContentMergeViewer</code>,
- * or <code>null</code> if none
- */
- Object getLeftContent(Object input);
-
- /**
- * Returns whether the left side is editable.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return <code>true</code> if the left side of a <code>ContentMergeViewer</code> is editable
- */
- boolean isLeftEditable(Object input);
-
- /**
- * Saves new contents for the left side of the <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @param bytes the new contents to save for the left side
- */
- void saveLeftContent(Object input, byte[] bytes);
-
- //---- right side
-
- /**
- * Returns the label for the right side of a <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return the label for the right side of a <code>ContentMergeViewer</code>
- */
- String getRightLabel(Object input);
-
- /**
- * Returns an optional image for the right side of a <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return the image for the right side of a <code>ContentMergeViewer</code>,
- * or <code>null</code> if none
- */
- Image getRightImage(Object input);
-
- /**
- * Returns the contents for the right side of a <code>ContentMergeViewer</code>.
- * The interpretation of the returned object depends on the concrete <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return the content for the right side of a <code>ContentMergeViewer</code>,
- * or <code>null</code> if none
- */
- Object getRightContent(Object input);
-
- /**
- * Returns whether the right side is editable.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @return <code>true</code> if the right side of a <code>ContentMergeViewer</code> is editable
- */
- boolean isRightEditable(Object input);
-
- /**
- * Saves new contents for the right side of the <code>ContentMergeViewer</code>.
- *
- * @param input the input object of the <code>ContentMergeViewer</code>
- * @param bytes the new contents to save for the right side
- */
- void saveRightContent(Object input, byte[] bytes);
-}
-
-
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java
deleted file mode 100644
index 43f03f1f4..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.compare.contentmergeviewer;
-
-import org.eclipse.compare.rangedifferencer.IRangeComparator;
-
-
-/**
- * For performing a so-called "token compare" on a line of text.
- * This interface extends the <code>IRangeComparator</code> interface
- * so that it can be used by the <code>TextMergeViewer</code>.
- * <p>
- * <code>TextMergeViewer</code> activates the token compare when navigating into
- * a range of differing lines. At first the lines are selected as a block.
- * When navigating into this block the token compare shows for every line
- * the differing token by selecting them.
- * <p>
- * <code>TextMergeViewer</code>'s default token comparator works on characters separated
- * by whitespace. If a different strategy is needed (for example, to use Java tokens in
- * a Java-aware merge viewer), clients may create their own token
- * comparators by implementing this interface (and overriding the
- * <code>TextMergeViewer.createTokenComparator</code> factory method).
- * </p>
- *
- * @see TextMergeViewer
- */
-public interface ITokenComparator extends IRangeComparator {
-
- /**
- * Returns the start character position of the token with the given index.
- * If the index is out of range (but not negative) the character position
- * behind the last character (the length of the input string) is returned.
- *
- * @param index index of the token for which to return the start position
- * @return the start position of the token with the given index
- * @throws java.lang.IndexOutOfBoundsException if index is negative
- */
- int getTokenStart(int index);
-
- /**
- * Returns the character length of the token with the given index.
- * If the index is out of range (but not negative) the value 0 is returned.
- *
- * @param index index of the token for which to return the start position
- * @return the character length of the token with the given index
- * @throws java.lang.IndexOutOfBoundsException if index is negative
- */
- int getTokenLength(int index);
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
deleted file mode 100644
index f145e12e1..000000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
+++ /dev/null
@@ -1,4303 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * channingwalton@mac.com - curved line code
- *******************************************************************************/
-package org.eclipse.compare.contentmergeviewer;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.ResourceBundle;
-import java.text.MessageFormat;
-
-import java.io.UnsupportedEncodingException;
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.custom.*;
-
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.resource.ColorRegistry;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.*;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.CoreException;
-
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IKeyBindingService;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.progress.IProgressService;
-
-import org.eclipse.compare.*;
-import org.eclipse.compare.internal.ICompareContextIds;
-import org.eclipse.compare.internal.MergeSourceViewer;
-import org.eclipse.compare.internal.BufferedCanvas;
-import org.eclipse.compare.internal.MergeViewerContentProvider;
-import org.eclipse.compare.internal.Utilities;
-import org.eclipse.compare.internal.TokenComparator;
-import org.eclipse.compare.internal.DocLineComparator;
-import org.eclipse.compare.internal.ComparePreferencePage;
-import org.eclipse.compare.internal.INavigatable;
-import org.eclipse.compare.internal.CompareNavigator;
-import org.eclipse.compare.internal.DocumentManager;
-import org.eclipse.compare.internal.CompareMessages;
-import org.eclipse.compare.rangedifferencer.*;
-import org.eclipse.compare.structuremergeviewer.*;
-
-/**
- * A text merge viewer uses the <code>RangeDifferencer</code> to perform a
- * textual, line-by-line comparison of two (or three) input documents.
- * It is based on the <code>ContentMergeViewer</code> and uses <code>TextViewer</code>s
- * to implement the ancestor, left, and right content areas.
- * <p>
- * In the three-way compare case ranges of differing lines are highlighted and framed
- * with different colors to show whether the difference is an incoming, outgoing, or conflicting change.
- * The <code>TextMergeViewer</code> supports the notion of a current "differing range"
- * and provides toolbar buttons to navigate from one range to the next (or previous).
- * <p>
- * If there is a current "differing range" and the underlying document is editable
- * the <code>TextMergeViewer</code> enables actions in context menu and toolbar to
- * copy a range from one side to the other side, thereby performing a merge operation.
- * <p>
- * In addition to a line-by-line comparison the <code>TextMergeViewer</code>
- * uses a token based compare on differing lines.
- * The token compare is activated when navigating into
- * a range of differing lines. At first the lines are selected as a block.
- * When navigating into this block the token compare shows for every line
- * the differing token by selecting them.
- * <p>
- * The <code>TextMergeViewer</code>'s default token compare works on characters separated
- * by whitespace. If a different strategy is needed (for example, Java tokens in
- * a Java-aware merge viewer), clients can create their own token
- * comparators by implementing the <code>ITokenComparator</code> interface and overriding the
- * <code>TextMergeViewer.createTokenComparator</code> factory method).
- * <p>
- * Access to the <code>TextMergeViewer</code>'s model is by means of an
- * <code>IMergeViewerContentProvider</code>. Its <code>get<it>X</it></code>Content</code> methods must return
- * either an <code>IDocument</code>, an <code>IDocumentRange</code>, or an <code>IStreamContentAccessor</code>.
- * In the <code>IDocumentRange</code> case the <code>TextMergeViewer</code>
- * works on a subrange of a document. In the <code>IStreamContentAccessor</code> case
- * a document is created internally and initialized from the stream.
- * <p>
- * A <code>TextMergeViewer</code> can be used as is. However clients may subclass
- * to customize the behavior. For example a <code>MergeTextViewer</code> for Java would override
- * the <code>configureTextViewer</code> method to configure the <code>TextViewer</code> for Java source code,
- * the <code>createTokenComparator</code> method to create a Java specific tokenizer.
- *
- * @see org.eclipse.compare.rangedifferencer.RangeDifferencer
- * @see org.eclipse.jface.text.TextViewer
- * @see ITokenComparator
- * @see IDocumentRange
- * @see org.eclipse.compare.IStreamContentAccessor
- */
-public class TextMergeViewer extends ContentMergeViewer {
-
- private static final boolean DEBUG= false;
-
- private static final boolean FIX_47640= true;
-
- private static final String[] GLOBAL_ACTIONS= {
- ActionFactory.UNDO.getId(),
- ActionFactory.REDO.getId(),
- ActionFactory.CUT.getId(),
- ActionFactory.COPY.getId(),
- ActionFactory.PASTE.getId(),
- ActionFactory.DELETE.getId(),
- ActionFactory.SELECT_ALL.getId(),
- ActionFactory.SAVE.getId()
- };
- private static final String[] TEXT_ACTIONS= {
- MergeSourceViewer.UNDO_ID,
- MergeSourceViewer.REDO_ID,
- MergeSourceViewer.CUT_ID,
- MergeSourceViewer.COPY_ID,
- MergeSourceViewer.PASTE_ID,
- MergeSourceViewer.DELETE_ID,
- MergeSourceViewer.SELECT_ALL_ID,
- MergeSourceViewer.SAVE_ID
- };
-
- private static final String BUNDLE_NAME= "org.eclipse.compare.contentmergeviewer.TextMergeViewerResources"; //$NON-NLS-1$
-
- // the following symbolic constants must match the IDs in Compare's plugin.xml
- private static final String INCOMING_COLOR= "INCOMING_COLOR"; //$NON-NLS-1$
- private static final String OUTGOING_COLOR= "OUTGOING_COLOR"; //$NON-NLS-1$
- private static final String CONFLICTING_COLOR= "CONFLICTING_COLOR"; //$NON-NLS-1$
- private static final String RESOLVED_COLOR= "RESOLVED_COLOR"; //$NON-NLS-1$
-
- // constants
- /** Width of left and right vertical bar */
- private static final int MARGIN_WIDTH= 6;
- /** Width of center bar */
- private static final int CENTER_WIDTH= 34;
- /** Width of birds eye view */
- private static final int BIRDS_EYE_VIEW_WIDTH= 12;
- /** Width of birds eye view */
- private static final int BIRDS_EYE_VIEW_INSET= 2;
- /** */
- private static final int RESOLVE_SIZE= 5;
- /** if true copying conflicts from one side to other concatenates both sides */
- private static final boolean APPEND_CONFLICT= true;
-
- /** line width of change borders */
- private static final int LW= 1;
- /** Selects between smartTokenDiff and mergingTokenDiff */
- private static final boolean USE_MERGING_TOKEN_DIFF= false;
-
- // determines whether a change between left and right is considered incoming or outgoing
- private boolean fLeftIsLocal;
- private boolean fShowCurrentOnly= false;
- private boolean fShowCurrentOnly2= false;
- private int fMarginWidth= MARGIN_WIDTH;
- private int fTopInset;
-
- // Colors
- private RGB fBackground;
- private RGB fForeground;
- private boolean fPollSystemForeground= true;
- private boolean fPollSystemBackground= true;
-
- private RGB SELECTED_INCOMING;
- private RGB INCOMING;
- private RGB INCOMING_FILL;
-
- private RGB SELECTED_CONFLICT;
- private RGB CONFLICT;
- private RGB CONFLICT_FILL;
-
- private RGB SELECTED_OUTGOING;
- private RGB OUTGOING;
- private RGB OUTGOING_FILL;
-
- private RGB RESOLVED;
-
- private boolean fEndOfDocReached;
- private IDocumentListener fDocumentListener;
-
- private IPreferenceStore fPreferenceStore;
- private IPropertyChangeListener fPreferenceChangeListener;
-
- /** All diffs for calculating scrolling position (includes line ranges without changes) */
- private ArrayList fAllDiffs;
- /** Subset of above: just real differences. */
- private ArrayList fChangeDiffs;
- /** The current diff */
- private Diff fCurrentDiff;
-
- private HashMap fNewAncestorRanges= new HashMap();
- private HashMap fNewLeftRanges= new HashMap();
- private HashMap fNewRightRanges= new HashMap();
-
- private MergeSourceViewer fAncestor;
- private MergeSourceViewer fLeft;
- private MergeSourceViewer fRight;
-
- private int fLeftLineCount;
- private int fRightLineCount;
-
- private String fLeftEncoding;
- private String fRightEncoding;
-
- private boolean fInScrolling;
-
- private int fPts[]= new int[8]; // scratch area for polygon drawing
-
- private boolean fIgnoreAncestor= false;
- private ActionContributionItem fIgnoreAncestorItem;
- private boolean fHighlightRanges;
-
- private boolean fShowPseudoConflicts= false;
-
- private boolean fUseSplines= true;
- private boolean fUseSingleLine= true;
- private boolean fUseResolveUI= true;
-
- private String fSymbolicFontName;
-
- private ActionContributionItem fNextItem; // goto next difference
- private ActionContributionItem fPreviousItem; // goto previous difference
- private ActionContributionItem fCopyDiffLeftToRightItem;
- private ActionContributionItem fCopyDiffRightToLeftItem;
-
- private IKeyBindingService fKeyBindingService;
-
- private boolean fSynchronizedScrolling= true;
- private boolean fShowMoreInfo= false;
-
- private MergeSourceViewer fFocusPart;
-
- private boolean fSubDoc= true;
- private IPositionUpdater fPositionUpdater;
- private boolean fIsMotif;
- private boolean fIsCarbon;
-
- private boolean fHasErrors;
-
-
- // SWT widgets
- private BufferedCanvas fAncestorCanvas;
- private BufferedCanvas fLeftCanvas;
- private BufferedCanvas fRightCanvas;
- private Canvas fScrollCanvas;
- private ScrollBar fVScrollBar;
- private Canvas fBirdsEyeCanvas;
- private Canvas fSummaryHeader;
- private HeaderPainter fHeaderPainter;
-
- // SWT resources to be disposed
- private Map fColors;
- private Cursor fBirdsEyeCursor;
-
- // points for center curves
- private double[] fBasicCenterCurve;
-
- private Button fCenterButton;
- private Diff fButtonDiff;
-
- class HeaderPainter implements PaintListener {
-
- private static final int INSET= BIRDS_EYE_VIEW_INSET;
-
- private RGB fIndicatorColor;
- private Color fSeparatorColor;
-
- public HeaderPainter() {
- fSeparatorColor= fSummaryHeader.getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW);
- }
-
- /*
- * Returns true on color change
- */
- public boolean setColor(RGB color) {
- RGB oldColor= fIndicatorColor;
- fIndicatorColor= color;
- if (color == null)
- return oldColor != null;
- if (oldColor != null)
- return !color.equals(oldColor);
- return true;
- }
-
- private void drawBevelRect(GC gc, int x, int y, int w, int h, Color topLeft, Color bottomRight) {
- gc.setForeground(topLeft);
- gc.drawLine(x, y, x + w -1, y);
- gc.drawLine(x, y, x, y + h -1);
-
- gc.setForeground(bottomRight);
- gc.drawLine(x + w, y, x + w, y + h);
- gc.drawLine(x, y + h, x + w, y + h);
- }
-
- public void paintControl(PaintEvent e) {
-
- Point s= fSummaryHeader.getSize();
-
- if (fIndicatorColor != null) {
- Display d= fSummaryHeader.getDisplay();
- e.gc.setBackground(getColor(d, fIndicatorColor));
- int min= Math.min(s.x, s.y)-2*INSET;
- Rectangle r= new Rectangle((s.x-min)/2, (s.y-min)/2, min, min);
- e.gc.fillRectangle(r);
- if (d != null)
- drawBevelRect(e.gc, r.x, r.y, r.width -1, r.height -1, d.getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW), d.getSystemColor(SWT.COLOR_WIDGET_HIGHLIGHT_SHADOW));
-
- e.gc.setForeground(fSeparatorColor);
- e.gc.setLineWidth(1);
- e.gc.drawLine(0+1, s.y-1, s.x-1-1, s.y-1);
- }
- }
- }
-
- /*
- * The position updater used to adapt the positions representing
- * the child document ranges to changes of the parent document.
- */
- class ChildPositionUpdater extends DefaultPositionUpdater {
-
- /*
- * Creates the position updated.
- */
- protected ChildPositionUpdater(String category) {
- super(category);
- }
-
- /*
- * Child document ranges cannot be deleted other then by calling
- * freeChildDocument.
- */
- protected boolean notDeleted() {
- return true;
- }
-
- /*
- * If an insertion happens at a child document's start offset, the
- * position is extended rather than shifted. Also, if something is added
- * right behind the end of the position, the position is extended rather
- * than kept stable.
- */
- protected void adaptToInsert() {
-
- if (fPosition == fLeft.getRegion() || fPosition == fRight.getRegion()) {
- int myStart= fPosition.offset;
- int myEnd= fPosition.offset + fPosition.length;
- myEnd= Math.max(myStart, myEnd);
-
- int yoursStart= fOffset;
- int yoursEnd= fOffset + fReplaceLength -1;
- yoursEnd= Math.max(yoursStart, yoursEnd);
-
- if (myEnd < yoursStart)
- return;
-
- if (myStart <= yoursStart)
- fPosition.length += fReplaceLength;
- else
- fPosition.offset += fReplaceLength;
- } else {
- super.adaptToInsert();
- }
- }
- }
-
- /*
- * A Diff represents synchronized character ranges in two or three Documents.
- * The MergeTextViewer uses Diffs to find differences in line and token ranges.
- */
- /* package */ class Diff {
- /** character range in ancestor document */
- Position fAncestorPos;
- /** character range in left document */
- Position fLeftPos;
- /** character range in right document */
- Position fRightPos;
- /** if this is a TokenDiff fParent points to the enclosing LineDiff */
- Diff fParent;
- /** if Diff has been resolved */
- boolean fResolved;
- int fDirection;
- boolean fIsToken= false;
- /** child token diffs */
- ArrayList fDiffs;
- boolean fIsWhitespace= false;
-
- /*
- * Create Diff from two ranges and an optional parent diff.
- */
- Diff(Diff parent, int dir, IDocument ancestorDoc, Position aRange, int ancestorStart, int ancestorEnd,
- IDocument leftDoc, Position lRange, int leftStart, int leftEnd,
- IDocument rightDoc, Position rRange, int rightStart, int rightEnd) {
- fParent= parent != null ? parent : this;
- fDirection= dir;
-
- fLeftPos= createPosition(leftDoc, lRange, leftStart, leftEnd);
- fRightPos= createPosition(rightDoc, rRange, rightStart, rightEnd);
- if (ancestorDoc != null)
- fAncestorPos= createPosition(ancestorDoc, aRange, ancestorStart, ancestorEnd);
- }
-
- Position getPosition(char type) {
- switch (type) {
- case 'A':
- return fAncestorPos;
- case 'L':
- return fLeftPos;
- case 'R':
- return fRightPos;
- }
- return null;
- }
-
- boolean isInRange(char type, int pos) {
- Position p= getPosition(type);
- return (pos >= p.offset) && (pos < (p.offset+p.length));
- }
-
- String changeType() {
- boolean leftEmpty= fLeftPos.length == 0;
- boolean rightEmpty= fRightPos.length == 0;
-
- if (fDirection == RangeDifference.LEFT) {
- if (!leftEmpty && rightEmpty)
- return CompareMessages.getString("TextMergeViewer.changeType.addition"); //$NON-NLS-1$
- if (leftEmpty && !rightEmpty)
- return CompareMessages.getString("TextMergeViewer.changeType.deletion"); //$NON-NLS-1$
- } else {
- if (leftEmpty && !rightEmpty)
- return CompareMessages.getString("TextMergeViewer.changeType.addition"); //$NON-NLS-1$
- if (!leftEmpty && rightEmpty)
- return CompareMessages.getString("TextMergeViewer.changeType.deletion"); //$NON-NLS-1$
- }
- return CompareMessages.getString("TextMergeViewer.changeType.change"); //$NON-NLS-1$
- }
-
- Image getImage() {
- int code= Differencer.CHANGE;
- switch (fDirection) {
- case RangeDifference.RIGHT:
- code+= Differencer.LEFT;
- break;
- case RangeDifference.LEFT:
- code+= Differencer.RIGHT;
- break;
- case RangeDifference.ANCESTOR:
- case RangeDifference.CONFLICT:
- code+= Differencer.CONFLICTING;
- break;
- }
- if (code != 0)
- return getCompareConfiguration().getImage(code);
- return null;
- }
-
- Position createPosition(IDocument doc, Position range, int start, int end) {
- try {
- int l= end-start;
- if (range != null) {
- int dl= range.length;
- if (l > dl)
- l= dl;
- } else {
- int dl= doc.getLength();
- if (start+l > dl)
- l= dl-start;
- }
-
- Position p= null;
- try {
- p= new Position(start, l);
- } catch (RuntimeException ex) {
- // silently ignored
- }
-
- try {
- doc.addPosition(IDocumentRange.RANGE_CATEGORY, p);
- } catch (BadPositionCategoryException ex) {
- // silently ignored
- }
- return p;
- } catch (BadLocationException ee) {
- // silently ignored
- }
- return null;
- }
-
- void add(Diff d) {
- if (fDiffs == null)
- fDiffs= new ArrayList();
- fDiffs.add(d);
- }
-
- boolean isDeleted() {
- if (fAncestorPos != null && fAncestorPos.isDeleted())
- return true;
- return fLeftPos.isDeleted() || fRightPos.isDeleted();
- }
-
- void setResolved(boolean r) {
- fResolved= r;
- if (r)
- fDiffs= null;
- }
-
- boolean isResolved() {
- if (!fResolved && fDiffs != null) {
- Iterator e= fDiffs.iterator();
- while (e.hasNext()) {
- Diff d= (Diff) e.next();
- if (!d.isResolved())
- return false;
- }
- return true;
- }
- return fResolved;
- }
-
-// private boolean isIncoming() {
-// switch (fDirection) {
-// case RangeDifference.RIGHT:
-// if (fLeftIsLocal)
-// return true;
-// break;
-// case RangeDifference.LEFT:
-// if (!fLeftIsLocal)
-// return true;
-// break;
-// }
-// return false;
-// }
-
- private boolean isIncomingOrConflicting() {
- switch (fDirection) {
- case RangeDifference.RIGHT:
- if (fLeftIsLocal)
- return true;
- break;
- case RangeDifference.LEFT:
- if (!fLeftIsLocal)
- return true;
- break;
- case RangeDifference.CONFLICT:
- return true;
- }
- return false;
- }
-
-// private boolean isUnresolvedIncoming() {
-// if (fResolved)
-// return false;
-// return isIncoming();
-// }
-
- private boolean isUnresolvedIncomingOrConflicting() {
- if (fResolved)
- return false;
- return isIncomingOrConflicting();
- }
-
- Position getPosition(MergeSourceViewer w) {
- if (w == fLeft)
- return fLeftPos;
- if (w == fRight)
- return fRightPos;
- if (w == fAncestor)
- return fAncestorPos;
- return null;
- }
-
- /*
- * Returns true if given character range overlaps with this Diff.
- */
- boolean overlaps(MergeSourceViewer w, int start, int end) {
- Position h= getPosition(w);
- if (h != null) {
- int ds= h.getOffset();
- int de= ds + h.getLength();
- if ((start < de) && (end >= ds))
- return true;
- }
- return false;
- }
-
- int getMaxDiffHeight(boolean withAncestor) {
- Point region= new Point(0, 0);
- int h= fLeft.getLineRange(fLeftPos, region).y;
- if (withAncestor)
- h= Math.max(h, fAncestor.getLineRange(fAncestorPos, region).y);
- return Math.max(h, fRight.getLineRange(fRightPos, region).y);
- }
-
- int getAncestorHeight() {
- Point region= new Point(0, 0);
- return fAncestor.getLineRange(fAncestorPos, region).y;
- }
-
- int getLeftHeight() {
- Point region= new Point(0, 0);
- return fLeft.getLineRange(fLeftPos, region).y;
- }
-
- int getRightHeight() {
- Point region= new Point(0, 0);
- return fRight.getLineRange(fRightPos, region).y;
- }
- }
-
- //---- MergeTextViewer
-
- /**
- * Creates a text merge viewer under the given parent control.
- *
- * @param parent the parent control
- * @param configuration the configuration object
- */
- public TextMergeViewer(Composite parent, CompareConfiguration configuration) {
- this(parent, SWT.NULL, configuration);
- }
-
- /**
- * Creates a text merge viewer under the given parent control.
- *
- * @param parent the parent control
- * @param style SWT style bits for top level composite of this viewer
- * @param configuration the configuration object
- */
- public TextMergeViewer(Composite parent, int style, CompareConfiguration configuration) {
- super(style, ResourceBundle.getBundle(BUNDLE_NAME), configuration);
-
- fSymbolicFontName= getClass().getName();
-
- String platform= SWT.getPlatform();
- fIsMotif= "motif".equals(platform); //$NON-NLS-1$
- fIsCarbon= "carbon".equals(platform); //$NON-NLS-1$
-
- if (fIsMotif)
- fMarginWidth= 0;
-
- Display display= parent.getDisplay();
-
- fPreferenceChangeListener= new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- TextMergeViewer.this.propertyChange(event);
- }
- };
-
- fPreferenceStore= configuration.getPreferenceStore();
- if (fPreferenceStore != null) {
- fPreferenceStore.addPropertyChangeListener(fPreferenceChangeListener);
-
- checkForColorUpdate(display);
-
- fLeftIsLocal= Utilities.getBoolean(configuration, "LEFT_IS_LOCAL", false); //$NON-NLS-1$
- fSynchronizedScrolling= fPreferenceStore.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);
- fShowMoreInfo= fPreferenceStore.getBoolean(ComparePreferencePage.SHOW_MORE_INFO);
- fShowPseudoConflicts= fPreferenceStore.getBoolean(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS);
- //fUseSplines= fPreferenceStore.getBoolean(ComparePreferencePage.USE_SPLINES);
- fUseSingleLine= fPreferenceStore.getBoolean(ComparePreferencePage.USE_SINGLE_LINE);
- //fUseResolveUI= fPreferenceStore.getBoolean(ComparePreferencePage.USE_RESOLVE_UI);
- }
-
- fDocumentListener= new IDocumentListener() {
-
- public void documentAboutToBeChanged(DocumentEvent e) {
- // nothing to do
- }
-
- public void documentChanged(DocumentEvent e) {
- TextMergeViewer.this.documentChanged(e);
- }
- };
-
- buildControl(parent);
-
- INavigatable nav= new INavigatable() {
- public boolean gotoDifference(boolean next) {
- return navigate(next, false, false);
- }
- };
- fComposite.setData(INavigatable.NAVIGATOR_PROPERTY, nav);
-
- fBirdsEyeCursor= new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);
-
- JFaceResources.getFontRegistry().addListener(fPreferenceChangeListener);
- JFaceResources.getColorRegistry().addListener(fPreferenceChangeListener);
- updateFont();
- }
-
- private void updateFont() {
- Font f= JFaceResources.getFont(fSymbolicFontName);
- if (f != null) {
- if (fAncestor != null)
- fAncestor.setFont(f);
- if (fLeft != null)
- fLeft.setFont(f);
- if (fRight != null)
- fRight.setFont(f);
- }
- }
-
- private void checkForColorUpdate(Display display) {
- if (fPollSystemForeground) {
- RGB fg= display.getSystemColor(SWT.COLOR_LIST_FOREGROUND).getRGB();
- if (fForeground == null || !fg.equals(fForeground)) {
- fForeground= fg;
- updateColors(display);
- }
- }
- if (fPollSystemBackground) {
- RGB bg= display.getSystemColor(SWT.COLOR_LIST_BACKGROUND).getRGB();
- if (fBackground == null || !bg.equals(fBackground)) {
- fBackground= bg;
- updateColors(display);
- }
- }
- }
-
- /**
- * Sets the viewer's background color to the given RGB value.
- * If the value is <code>null</code> the system's default background color is used.
- * @param background the background color or <code>null</code> to use the system's default background color
- * @since 2.0
- */
- public void setBackgroundColor(RGB background) {
- fPollSystemBackground= (background == null);
- fBackground= background;
- updateColors(null);
- }
-
- private RGB getBackground(Display display) {
- if (fBackground != null)
- return fBackground;
- if (display == null)
- display= fComposite.getDisplay();
- return display.getSystemColor(SWT.COLOR_LIST_BACKGROUND).getRGB();
- }
-
- /**
- * Sets the viewer's foreground color to the given RGB value.
- * If the value is <code>null</code> the system's default foreground color is used.
- * @param foreground the foreground color or <code>null</code> to use the system's default foreground color
- * @since 2.0
- */
- public void setForegroundColor(RGB foreground) {
- fPollSystemForeground= (foreground == null);
- fForeground= foreground;
- updateColors(null);
- }
-
- private void updateColors(Display display) {
-
- if (display == null)
- display= fComposite.getDisplay();
-
- Color color= null;
- if (fBackground != null)
- color= getColor(display, fBackground);
-
- if (fAncestor != null)
- fAncestor.setBackgroundColor(color);
- if (fLeft != null)
- fLeft.setBackgroundColor(color);
- if (fRight != null)
- fRight.setBackgroundColor(color);
-
- ColorRegistry registry= JFaceResources.getColorRegistry();
-
- RGB bg= getBackground(display);
- SELECTED_INCOMING= registry.getRGB(INCOMING_COLOR);
- if (SELECTED_INCOMING == null)
- SELECTED_INCOMING= new RGB(0, 0, 255); // BLUE
- INCOMING= interpolate(SELECTED_INCOMING, bg, 0.6);
- INCOMING_FILL= interpolate(SELECTED_INCOMING, bg, 0.97);
-
- SELECTED_OUTGOING= registry.getRGB(OUTGOING_COLOR);
- if (SELECTED_OUTGOING == null)
- SELECTED_OUTGOING= new RGB(0, 0, 0); // BLACK
- OUTGOING= interpolate(SELECTED_OUTGOING, bg, 0.6);
- OUTGOING_FILL= interpolate(SELECTED_OUTGOING, bg, 0.97);
-
- SELECTED_CONFLICT= registry.getRGB(CONFLICTING_COLOR);
- if (SELECTED_CONFLICT == null)
- SELECTED_CONFLICT= new RGB(255, 0, 0); // RED
- CONFLICT= interpolate(SELECTED_CONFLICT, bg, 0.6);
- CONFLICT_FILL= interpolate(SELECTED_CONFLICT, bg, 0.97);
-
- RESOLVED= registry.getRGB(RESOLVED_COLOR);
- if (RESOLVED == null)
- RESOLVED= new RGB(0, 255, 0); // GREEN
-
- refreshBirdsEyeView();
- invalidateLines();
-
- updateAllDiffBackgrounds(display);
- }
-
- /**
- * Invalidates the current presentation by invalidating the three text viewers.
- * @since 2.0
- */
- public void invalidateTextPresentation() {
- if (fAncestor != null)
- fAncestor.invalidateTextPresentation();
- if (fLeft != null)
- fLeft.invalidateTextPresentation();
- if (fRight != null)
- fRight.invalidateTextPresentation();
- }
-
- /**
- * Configures the passed text viewer.
- * This method is called after the three text viewers have been created for the
- * content areas.
- * The <code>TextMergeViewer</code> implementation of this method does nothing.
- * Subclasses may reimplement to provide a specific configuration for the text viewer.
- *
- * @param textViewer the text viewer to configure
- */
- protected void configureTextViewer(TextViewer textViewer) {
- // empty impl
- }
-
- /**
- * Creates an <code>ITokenComparator</code> which is used to show the
- * intra line differences.
- * The <code>TextMergeViewer</code> implementation of this method returns a
- * tokenizer that breaks a line into words separated by whitespace.
- * Subclasses may reimplement to provide a specific tokenizer.
- * @param line the line for which to create the <code>ITokenComparator</code>
- * @return a ITokenComparator which is used for a second level token compare.
- */
- protected ITokenComparator createTokenComparator(String line) {
- return new TokenComparator(line);
- }
-
- /**
- * Returns a document partitioner which is suitable for the underlying content type.
- * This method is only called if the input provided by the content provider is a
- * <code>IStreamContentAccessor</code> and an internal document must be created. This
- * document is initialized with the partitioner returned from this method.
- * <p>
- * The <code>TextMergeViewer</code> implementation of this method returns
- * <code>null</code>. Subclasses may reimplement to create a partitioner for a
- * specific content type.
- *
- * @return a document partitioner, or <code>null</code>
- */
- protected IDocumentPartitioner getDocumentPartitioner() {
- return null;
- }
-
- /**
- * Called on the viewer disposal.
- * Unregisters from the compare configuration.
- * Clients may extend if they have to do additional cleanup.
- * @param event
- */
- protected void handleDispose(DisposeEvent event) {
-
- if (fKeyBindingService != null) {
- IAction a;
- if (fNextItem != null) {
- a= fNextItem.getAction();
- if (a != null)
- fKeyBindingService.unregisterAction(a);
- }
- if (fPreviousItem != null) {
- a= fPreviousItem.getAction();
- if (a != null)
- fKeyBindingService.unregisterAction(a);
- }
- if (fCopyDiffLeftToRightItem != null) {
- a= fCopyDiffLeftToRightItem.getAction();
- if (a != null)
- fKeyBindingService.unregisterAction(a);
- }
- if (fCopyDiffRightToLeftItem != null) {
- a= fCopyDiffRightToLeftItem.getAction();
- if (a != null)
- fKeyBindingService.unregisterAction(a);
- }
- fKeyBindingService= null;
- }
-
- Object input= getInput();
- DocumentManager.remove(getDocument2('A', input));
- DocumentManager.remove(getDocument2('L', input));
- DocumentManager.remove(getDocument2('R', input));
-
- if (DEBUG)
- DocumentManager.dump();
-
- if (fPreferenceChangeListener != null) {
- JFaceResources.getFontRegistry().removeListener(fPreferenceChangeListener);
- JFaceResources.getColorRegistry().removeListener(fPreferenceChangeListener);
- if (fPreferenceStore != null)
- fPreferenceStore.removePropertyChangeListener(fPreferenceChangeListener);
- fPreferenceChangeListener= null;
- }
-
- fLeftCanvas= null;
- fRightCanvas= null;
- fVScrollBar= null;
- fBirdsEyeCanvas= null;
- fSummaryHeader= null;
-
- unsetDocument(fAncestor);
- unsetDocument(fLeft);
- unsetDocument(fRight);
-
- if (fColors != null) {
- Iterator i= fColors.values().iterator();
- while (i.hasNext()) {
- Color color= (Color) i.next();
- if (!color.isDisposed())
- color.dispose();
- }
- fColors= null;
- }
-
- if (fBirdsEyeCursor != null) {
- fBirdsEyeCursor.dispose();
- fBirdsEyeCursor= null;
- }
-
- super.handleDispose(event);
- }
-
- //-------------------------------------------------------------------------------------------------------------
- //--- internal ------------------------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------------------------
-
- /*
- * Creates the specific SWT controls for the content areas.
- * Clients must not call or override this method.
- */
- protected void createControls(Composite composite) {
-
- WorkbenchHelp.setHelp(composite, ICompareContextIds.TEXT_MERGE_VIEW);
-
- // 1st row
- if (fMarginWidth > 0) {
- fAncestorCanvas= new BufferedCanvas(composite, SWT.NONE) {
- public void doPaint(GC gc) {
- paintSides(gc, fAncestor, fAncestorCanvas, false);
- }
- };
- fAncestorCanvas.addMouseListener(
- new MouseAdapter() {
- public void mouseDown(MouseEvent e) {
- setCurrentDiff2(handleMouseInSides(fAncestorCanvas, fAncestor, e.y), false);
- }
- }
- );
- }
-
- fAncestor= createPart(composite);
- fAncestor.setEditable(false);
-
- fSummaryHeader= new Canvas(composite, SWT.NONE);
- fHeaderPainter= new HeaderPainter();
- fSummaryHeader.addPaintListener(fHeaderPainter);
- updateResolveStatus();
-
- // 2nd row
- if (fMarginWidth > 0) {
- fLeftCanvas= new BufferedCanvas(composite, SWT.NONE) {
- public void doPaint(GC gc) {
- paintSides(gc, fLeft, fLeftCanvas, false);
- }
- };
- fLeftCanvas.addMouseListener(
- new MouseAdapter() {
- public void mouseDown(MouseEvent e) {
- setCurrentDiff2(handleMouseInSides(fLeftCanvas, fLeft, e.y), false);
- }
- }
- );
- }
-
- fLeft= createPart(composite);
- fLeft.getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);
- fLeft.addAction(MergeSourceViewer.SAVE_ID, fLeftSaveAction);
-
- fRight= createPart(composite);
- fRight.getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);
- fRight.addAction(MergeSourceViewer.SAVE_ID, fRightSaveAction);
-
- hsynchViewport(fAncestor, fLeft, fRight);
- hsynchViewport(fLeft, fAncestor, fRight);
- hsynchViewport(fRight, fAncestor, fLeft);
-
- if (fMarginWidth > 0) {
- fRightCanvas= new BufferedCanvas(composite, SWT.NONE) {
- public void doPaint(GC gc) {
- paintSides(gc, fRight, fRightCanvas, fSynchronizedScrolling);
- }
- };
- fRightCanvas.addMouseListener(
- new MouseAdapter() {
- public void mouseDown(MouseEvent e) {
- setCurrentDiff2(handleMouseInSides(fRightCanvas, fRight, e.y), false);
- }
- }
- );
- }
-
- fScrollCanvas= new Canvas(composite, SWT.V_SCROLL);
- Rectangle trim= fLeft.getTextWidget().computeTrim(0, 0, 0, 0);
- fTopInset= trim.y;
-
- fVScrollBar= fScrollCanvas.getVerticalBar();
- fVScrollBar.setIncrement(1);
- fVScrollBar.setVisible(true);
- fVScrollBar.addListener(SWT.Selection,
- new Listener() {
- public void handleEvent(Event e) {
- int vpos= ((ScrollBar)e.widget).getSelection();
- scrollVertical(vpos, vpos, vpos, null);
- workaround65205();
- }
- }
- );
-
- fBirdsEyeCanvas= new BufferedCanvas(composite, SWT.NONE) {
- public void doPaint(GC gc) {
- paintBirdsEyeView(this, gc);
- }
- };
- fBirdsEyeCanvas.addMouseListener(
- new MouseAdapter() {
- public void mouseDown(MouseEvent e) {
- setCurrentDiff2(handlemouseInBirdsEyeView(fBirdsEyeCanvas, e.y), true);
- }
- }
- );
- fBirdsEyeCanvas.addMouseMoveListener(
- new MouseMoveListener() {
-
- private Cursor fLastCursor;
-
- public void mouseMove(MouseEvent e) {
- Cursor cursor= null;
- Diff diff= handlemouseInBirdsEyeView(fBirdsEyeCanvas, e.y);
- if (diff != null && diff.fDirection != RangeDifference.NOCHANGE)
- cursor= fBirdsEyeCursor;
- if (fLastCursor != cursor) {
- fBirdsEyeCanvas.setCursor(cursor);
- fLastCursor= cursor;
- }
- }
- }
- );
- }
-
- private void hsynchViewport(final TextViewer tv1, final TextViewer tv2, final TextViewer tv3) {
- final StyledText st1= tv1.getTextWidget();
- final StyledText st2= tv2.getTextWidget();
- final StyledText st3= tv3.getTextWidget();
- final ScrollBar sb1= st1.getHorizontalBar();
- sb1.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- if (fSynchronizedScrolling) {
- int max= sb1.getMaximum()-sb1.getThumb();
- double v= 0.0;
- if (max > 0)
- v= (float)sb1.getSelection() / (float)max;
- if (st2.isVisible()) {
- ScrollBar sb2= st2.getHorizontalBar();
- st2.setHorizontalPixel((int)((sb2.getMaximum()-sb2.getThumb()) * v));
- }
- if (st3.isVisible()) {
- ScrollBar sb3= st3.getHorizontalBar();
- st3.setHorizontalPixel((int)((sb3.getMaximum()-sb3.getThumb()) * v));
- }
- workaround65205();
- }
- }
- });
- }
-
- /**
- * A workaround for bug #65205.
- * On MacOS X a Display.update() is required to flush pending paint requests after
- * programmatical scolling.
- */
- private void workaround65205() {
- if (fIsCarbon && fComposite != null && !fComposite.isDisposed())
- fComposite.getDisplay().update();
- }
-
- private void setCurrentDiff2(Diff diff, boolean reveal) {
- if (diff != null && diff.fDirection != RangeDifference.NOCHANGE) {
- //fCurrentDiff= null;
- setCurrentDiff(diff, reveal);
- }
- }
-
- private Diff handleMouseInSides(Canvas canvas, MergeSourceViewer tp, int my) {
-
- int lineHeight= tp.getTextWidget().getLineHeight();
- int visibleHeight= tp.getViewportHeight();
-
- if (! fHighlightRanges)
- return null;
-
- if (fChangeDiffs != null) {
- int shift= tp.getVerticalScrollOffset() + (2-LW);
-
- Point region= new Point(0, 0);
- Iterator e= fChangeDiffs.iterator();
- while (e.hasNext()) {
- Diff diff= (Diff) e.next();
- if (diff.isDeleted())
- continue;
-
- if (fShowCurrentOnly2 && !isCurrentDiff(diff))
- continue;
-
- tp.getLineRange(diff.getPosition(tp), region);
- int y= (region.x * lineHeight) + shift;
- int h= region.y * lineHeight;
-
- if (y+h < 0)
- continue;
- if (y >= visibleHeight)
- break;
-
- if (my >= y && my < y+h)
- return diff;
- }
- }
- return null;
- }
-
- private Diff getDiffUnderMouse(Canvas canvas, int mx, int my, Rectangle r) {
-
- if (! fSynchronizedScrolling)
- return null;
-
- int lineHeight= fLeft.getTextWidget().getLineHeight();
- int visibleHeight= fRight.getViewportHeight();
-
- Point size= canvas.getSize();
- int w= size.x;
-
- if (! fHighlightRanges)
- return null;
-
- if (fChangeDiffs != null) {
- int lshift= fLeft.getVerticalScrollOffset();
- int rshift= fRight.getVerticalScrollOffset();
-
- Point region= new Point(0, 0);
-
- Iterator e= fChangeDiffs.iterator();
- while (e.hasNext()) {
- Diff diff= (Diff) e.next();
- if (diff.isDeleted())
- continue;
-
- if (fShowCurrentOnly2 && !isCurrentDiff(diff))
- continue;
-
- fLeft.getLineRange(diff.fLeftPos, region);
- int ly= (region.x * lineHeight) + lshift;
- int lh= region.y * lineHeight;
-
- fRight.getLineRange(diff.fRightPos, region);
- int ry= (region.x * lineHeight) + rshift;
- int rh= region.y * lineHeight;
-
- if (Math.max(ly+lh, ry+rh) < 0)
- continue;
- if (Math.min(ly, ry) >= visibleHeight)
- break;
-
- int cx= (w-RESOLVE_SIZE)/2;
- int cy= ((ly+lh/2) + (ry+rh/2) - RESOLVE_SIZE)/2;
- if (my >= cy && my < cy+RESOLVE_SIZE && mx >= cx && mx < cx+RESOLVE_SIZE) {
- if (r != null) {
- int SIZE= fIsCarbon ? 30 : 20;
- r.x= cx+(RESOLVE_SIZE-SIZE)/2;
- r.y= cy+(RESOLVE_SIZE-SIZE)/2;
- r.width= SIZE;
- r.height= SIZE;
- }
- return diff;
- }
- }
- }
- return null;
- }
-
- private Diff handlemouseInBirdsEyeView(Canvas canvas, int my) {
- int yy, hh;
-
- Point size= canvas.getSize();
-
- int virtualHeight= fSynchronizedScrolling ? getVirtualHeight() : getRightHeight();
- if (virtualHeight < getViewportHeight())
- return null;
-
- int y= 0;
- if (fAllDiffs != null) {
- Iterator e= fAllDiffs.iterator();
- for (int i= 0; e.hasNext(); i++) {
- Diff diff= (Diff) e.next();
- int h= fSynchronizedScrolling ? diff.getMaxDiffHeight(fShowAncestor)
- : diff.getRightHeight();
- if (useChange(diff.fDirection) && !diff.fIsWhitespace) {
-
- yy= (y*size.y)/virtualHeight;
- hh= (h*size.y)/virtualHeight;
- if (hh < 3)
- hh= 3;
-
- if (my >= yy && my < yy+hh)
- return diff;
- }
- y+= h;
- }
- }
- return null;
- }
-
- private void paintBirdsEyeView(Canvas canvas, GC gc) {
-
- Color c;
- Rectangle r= new Rectangle(0, 0, 0, 0);
- int yy, hh;
-
- Point size= canvas.getSize();
-
- int virtualHeight= fSynchronizedScrolling ? getVirtualHeight() : getRightHeight();
- if (virtualHeight < getViewportHeight())
- return;
-
- Display display= canvas.getDisplay();
- int y= 0;
- if (fAllDiffs != null) {
- Iterator e= fAllDiffs.iterator();
- for (int i= 0; e.hasNext(); i++) {
- Diff diff= (Diff) e.next();
- int h= fSynchronizedScrolling ? diff.getMaxDiffHeight(fShowAncestor)
- : diff.getRightHeight();
-
- if (useChange(diff.fDirection) && !diff.fIsWhitespace) {
-
- yy= (y*size.y)/virtualHeight;
- hh= (h*size.y)/virtualHeight;
- if (hh < 3)
- hh= 3;
-
- c= getColor(display, getFillColor(diff));
- if (c != null) {
- gc.setBackground(c);
- gc.fillRectangle(BIRDS_EYE_VIEW_INSET, yy, size.x-(2*BIRDS_EYE_VIEW_INSET),hh);
- }
- c= getColor(display, getStrokeColor(diff));
- if (c != null) {
- gc.setForeground(c);
- r.x= BIRDS_EYE_VIEW_INSET;
- r.y= yy;
- r.width= size.x-(2*BIRDS_EYE_VIEW_INSET)-1;
- r.height= hh;
- if (diff == fCurrentDiff ||
- (fCurrentDiff != null && diff == fCurrentDiff.fParent)) {
- gc.setLineWidth(2);
- r.x++;
- r.y++;
- r.width--;
- r.height--;
- } else {
- gc.setLineWidth(1);
- }
- gc.drawRectangle(r);
- }
- }
-
- y+= h;
- }
- }
- }
-
- private void refreshBirdsEyeView() {
- if (fBirdsEyeCanvas != null)
- fBirdsEyeCanvas.redraw();
- }
-
- /*
- * Called whenever setFocus() is called on the ContentViewer's top level SWT Composite.
- * This implementation sets the focus to the first enabled text widget.
- */
- /* package */ boolean internalSetFocus() {
- if (fFocusPart == null) {
- if (fLeft != null && fLeft.getEnabled()) {
- fFocusPart= fLeft;
- } else if (fRight != null && fRight.getEnabled()) {
- fFocusPart= fRight;
- } else if (fAncestor != null && fAncestor.getEnabled()) {
- fFocusPart= fAncestor;
- }
- }
- if (fFocusPart != null) {
- StyledText st= fFocusPart.getTextWidget();
- if (st != null)
- return st.setFocus();
- }
- return false; // could not set focus
- }
-
-
- class HoverResizer extends Resizer {
- Canvas fCanvas;
- public HoverResizer(Canvas c, int dir) {
- super(c, dir);
- fCanvas= c;
- }
- public void mouseMove(MouseEvent e) {
- if (!fIsDown && fUseSingleLine && showResolveUI() && handleMouseMoveOverCenter(fCanvas, e.x, e.y))
- return;
- super.mouseMove(e);
- }
- }
-
- /*
- * Creates the central Canvas.
- * Called from ContentMergeViewer.
- */
- /* package */ Control createCenter(Composite parent) {
- if (fSynchronizedScrolling) {
- final Canvas canvas= new BufferedCanvas(parent, SWT.NONE) {
- public void doPaint(GC gc) {
- paintCenter(this, gc);
- }
- };
- if (fUseResolveUI) {
-
- new HoverResizer(canvas, HORIZONTAL);
-
- fCenterButton= new Button(canvas, fIsCarbon ? SWT.FLAT : SWT.PUSH);
- if (fNormalCursor == null) fNormalCursor= new Cursor(canvas.getDisplay(), SWT.CURSOR_ARROW);
- fCenterButton.setCursor(fNormalCursor);
- fCenterButton.setText("<"); //$NON-NLS-1$
- fCenterButton.pack();
- fCenterButton.setVisible(false);
- fCenterButton.addSelectionListener(
- new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- fCenterButton.setVisible(false);
- if (fButtonDiff != null) {
- setCurrentDiff(fButtonDiff, false);
- copy(fCurrentDiff, false, fCurrentDiff.fDirection == RangeDifference.CONFLICT);
- }
- }
- }
- );
- } else {
- new Resizer(canvas, HORIZONTAL);
- }
-
- return canvas;
- }
- return super.createCenter(parent);
- }
-
- private boolean handleMouseMoveOverCenter(Canvas canvas, int x, int y) {
- Rectangle r= new Rectangle(0, 0, 0, 0);
- Diff diff= getDiffUnderMouse(canvas, x, y, r);
- if (diff != null && !diff.isUnresolvedIncomingOrConflicting())
- diff= null;
- if (diff != fButtonDiff) {
- if (diff != null) {
- if (fLeft.isEditable()) {
- fButtonDiff= diff;
- fCenterButton.setText("<"); //$NON-NLS-1$
- String tt= fCopyDiffRightToLeftItem.getAction().getToolTipText();
- fCenterButton.setToolTipText(tt);
- fCenterButton.setBounds(r);
- fCenterButton.setVisible(true);
- } else if (fRight.isEditable()) {
- fButtonDiff= diff;
- fCenterButton.setText(">"); //$NON-NLS-1$
- String tt= fCopyDiffLeftToRightItem.getAction().getToolTipText();
- fCenterButton.setToolTipText(tt);
- fCenterButton.setBounds(r);
- fCenterButton.setVisible(true);
- } else
- fButtonDiff= null;
- } else {
- fCenterButton.setVisible(false);
- fButtonDiff= null;
- }
- }
- return fButtonDiff != null;
- }
-
- /*
- * Returns width of central canvas.
- * Overridden from ContentMergeViewer.
- */
- /* package */ int getCenterWidth() {
- if (fSynchronizedScrolling)
- return CENTER_WIDTH;
- return super.getCenterWidth();
- }
-
- /*
- * Creates and initializes a text part.
- */
- private MergeSourceViewer createPart(Composite parent) {
-
- final MergeSourceViewer part= new MergeSourceViewer(parent, getResourceBundle());
- final StyledText te= part.getTextWidget();
-
- if (!fConfirmSave)
- part.hideSaveAction();
-
- te.addPaintListener(
- new PaintListener() {
- public void paintControl(PaintEvent e) {
- paint(e, part);
- }
- }
- );
- te.addKeyListener(
- new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- handleSelectionChanged(part);
- }
- }
- );
- te.addMouseListener(
- new MouseAdapter() {
- public void mouseDown(MouseEvent e) {
- //syncViewport(part);
- handleSelectionChanged(part);
- }
- }
- );
-
- te.addFocusListener(
- new FocusAdapter() {
- public void focusGained(FocusEvent fe) {
- fFocusPart= part;
- connectGlobalActions(fFocusPart);
- }
- public void focusLost(FocusEvent fe) {
- connectGlobalActions(null);
- }
- }
- );
-
- part.addViewportListener(
- new IViewportListener() {
- public void viewportChanged(int verticalPosition) {
- syncViewport(part);
- }
- }
- );
-
- Font font= JFaceResources.getFont(fSymbolicFontName);
- if (font != null)
- te.setFont(font);
-
- if (fBackground != null) // not default
- te.setBackground(getColor(parent.getDisplay(), fBackground));
-
- configureTextViewer(part);
-
- return part;
- }
-
- private void connectGlobalActions(MergeSourceViewer part) {
- IActionBars actionBars= Utilities.findActionBars(fComposite);
- if (actionBars != null) {
- for (int i= 0; i < GLOBAL_ACTIONS.length; i++) {
- IAction action= null;
- if (part != null) {
- action= part.getAction(TEXT_ACTIONS[i]);
- if (action == null && TEXT_ACTIONS[i].equals(MergeSourceViewer.SAVE_ID)) {
- if (part == fLeft)
- action= fLeftSaveAction;
- else
- action= fRightSaveAction;
- }
- }
- actionBars.setGlobalActionHandler(GLOBAL_ACTIONS[i], action);
- }
- actionBars.updateActionBars();
- }
- }
-
- ITypedElement getLeg(char type, Object input) {
- if (input instanceof ICompareInput) {
- switch (type) {
- case 'A':
- return ((ICompareInput)input).getAncestor();
- case 'L':
- return ((ICompareInput)input).getLeft();
- case 'R':
- return ((ICompareInput)input).getRight();
- }
- }
- return null;
- }
-
- IDocument getDocument(char type, Object input) {
- ITypedElement te= getLeg(type, input);
- if (te instanceof IDocument)
- return (IDocument) te;
- if (te instanceof IDocumentRange)
- return ((IDocumentRange) te).getDocument();
- if (te instanceof IStreamContentAccessor)
- return DocumentManager.get(te);
- return null;
- }
-
- IDocument getDocument2(char type, Object input) {
- IDocument doc= getDocument(type, input);
- if (doc != null)
- return doc;
-
- if (input instanceof IDiffElement) {
- IDiffContainer parent= ((IDiffElement)input).getParent();
- return getDocument(type, parent);
- }
- return null;
- }
-
- /*
- * Returns true if the given inputs map to the same documents
- */
- boolean sameDoc(char type, Object newInput, Object oldInput) {
- IDocument newDoc= getDocument2(type, newInput);
- IDocument oldDoc= getDocument2(type, oldInput);
- return newDoc == oldDoc;
- }
-
- /**
- * Overridden to prevent save confirmation if new input is sub document of current input.
- * @param newInput the new input of this viewer, or <code>null</code> if there is no new input
- * @param oldInput the old input element, or <code>null</code> if there was previously no input
- * @return <code>true</code> if saving was successful, or if the user didn't want to save (by pressing 'NO' in the confirmation dialog).
- * @since 2.0
- */
- protected boolean doSave(Object newInput, Object oldInput) {
-
- if (oldInput != null && newInput != null) {
- // check whether underlying documents have changed.
- if (sameDoc('A', newInput, oldInput) &&
- sameDoc('L', newInput, oldInput) &&
- sameDoc('R', newInput, oldInput)) {
- if (DEBUG) System.out.println("----- Same docs !!!!"); //$NON-NLS-1$
- return false;
- }
- }
-
- if (DEBUG) System.out.println("***** New docs !!!!"); //$NON-NLS-1$
-
- IDocument aDoc= getDocument2('A', oldInput);
- DocumentManager.remove(aDoc);
- IDocument lDoc= getDocument2('L', oldInput);
- DocumentManager.remove(lDoc);
- IDocument rDoc= getDocument2('R', oldInput);
- DocumentManager.remove(rDoc);
-
- if (DEBUG)
- DocumentManager.dump();
-
- return super.doSave(newInput, oldInput);
- }
-
- private ITypedElement getParent(char type) {
- Object input= getInput();
- if (input instanceof IDiffElement) {
- IDiffContainer parent= ((IDiffElement)input).getParent();
- return getLeg(type, parent);
- }
- return null;
- }
-
- /*
- * Initializes the text viewers of the three content areas with the given input objects.
- * Subclasses may extend.
- */
- protected void updateContent(Object ancestor, Object left, Object right) {
-
- boolean emptyInput= (ancestor == null && left == null && right == null);
-
- Object input= getInput();
-
- Position leftRange= null;
- Position rightRange= null;
-
- // if one side is empty use container
- if (FIX_47640 && !emptyInput && (left == null || right == null)) {
- if (input instanceof IDiffElement) {
- IDiffContainer parent= ((IDiffElement)input).getParent();
- if (parent instanceof ICompareInput) {
- ICompareInput ci= (ICompareInput) parent;
-
- if (ci.getAncestor() instanceof IDocumentRange
- || ci.getLeft() instanceof IDocumentRange
- || ci.getRight() instanceof IDocumentRange) {
-
- if (left instanceof IDocumentRange)
- leftRange= ((IDocumentRange)left).getRange();
- if (right instanceof IDocumentRange)
- rightRange= ((IDocumentRange)right).getRange();
-
- ancestor= ci.getAncestor();
- left= ci.getLeft();
- right= ci.getRight();
- }
- }
- }
- }
-
- int n= 0;
- if (left != null)
- n++;
- if (right != null)
- n++;
- fHighlightRanges= n > 1;
-
- // clear stuff
- fCurrentDiff= null;
- fChangeDiffs= null;
- fAllDiffs= null;
- fEndOfDocReached= false;
- fHasErrors= false; // start with no errors
-
- CompareConfiguration cc= getCompareConfiguration();
- IMergeViewerContentProvider cp= getMergeContentProvider();
-
- if (cp instanceof MergeViewerContentProvider) {
- MergeViewerContentProvider mcp= (MergeViewerContentProvider) cp;
- mcp.setAncestorError(null);
- mcp.setLeftError(null);
- mcp.setRightError(null);
- }
-
- // set new documents
- setDocument(fLeft, 'L', left);
- fLeftLineCount= fLeft.getLineCount();
- fLeftEncoding= getEncoding(left);
-
- setDocument(fRight, 'R', right);
- fRightLineCount= fRight.getLineCount();
- fRightEncoding= getEncoding(right);
-
- setDocument(fAncestor, 'A', ancestor);
-
- updateHeader();
- updateControls();
- updateToolItems();
-
- if (!fHasErrors)
- doDiff();
-
- fRight.setEditable(cc.isRightEditable() && cp.isRightEditable(input));
- fLeft.setEditable(cc.isLeftEditable() && cp.isLeftEditable(input));
-
- invalidateLines();
- updateVScrollBar();
- refreshBirdsEyeView();
-
- if (!fHasErrors && !emptyInput && !fComposite.isDisposed()) {
- Diff selectDiff= null;
- if (FIX_47640) {
- if (leftRange != null)
- selectDiff= findDiff('L', leftRange);
- else if (rightRange != null)
- selectDiff= findDiff('R', rightRange);
- }
- if (selectDiff != null)
- setCurrentDiff(selectDiff, true);
- else
- selectFirstDiff();
- }
- }
-
- private Diff findDiff(char c, Position range) {
-
- MergeSourceViewer v;
- int start= range.getOffset();
- int end= start + range.getLength();
- if (c == 'L')
- v= fLeft;
- else if (c == 'R')
- v= fRight;
- else
- return null;
-
- if (fChangeDiffs != null) {
- Iterator iter= fChangeDiffs.iterator();
- while (iter.hasNext()) {
- Diff diff= (Diff) iter.next();
- if (diff.isDeleted() || diff.fDirection == RangeDifference.NOCHANGE)
- continue;
- if (diff.overlaps(v, start, end))
- return diff;
- }
- }
- return null;
- }
-
- private static String getEncoding(Object o) {
- String encoding= null;
- if (o instanceof IEncodedStreamContentAccessor) {
- try {
- encoding= ((IEncodedStreamContentAccessor)o).getCharset();
- } catch (CoreException e) {
- // ignored
- }
- }
- if (encoding == null)
- encoding= ResourcesPlugin.getEncoding();
- return encoding;
- }
-
- private void updateDiffBackground(Diff diff) {
-
- if (! fHighlightRanges)
- return;
-
- if (diff == null || diff.fIsToken)