This commit was manufactured by cvs2svn to create branch 'branch_9734'.

Sprout from master 2002-02-15 20:19:33 UTC Jean Michel-Lemieux <jlemieux> 'Bug 9781: NPE in makeOutgoing() - doesn't do anything for already outgoing changes'
Delete:
    bundles/org.eclipse.compare/.classpath
    bundles/org.eclipse.compare/.cvsignore
    bundles/org.eclipse.compare/.vcm_meta
    bundles/org.eclipse.compare/about.html
    bundles/org.eclipse.compare/build.properties
    bundles/org.eclipse.compare/buildnotes_compare.html
    bundles/org.eclipse.compare/compare.jar
    bundles/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties
    bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NavigationAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/package.html
    bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java
    bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html
    bundles/org.eclipse.compare/doc/hglegal.htm
    bundles/org.eclipse.compare/doc/ngibmcpy.gif
    bundles/org.eclipse.compare/doc/org_eclipse_compare.html
    bundles/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html
    bundles/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html
    bundles/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html
    bundles/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html
    bundles/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif
    bundles/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif
    bundles/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif
    bundles/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif
    bundles/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif
    bundles/org.eclipse.compare/icons/full/clcl16/next_nav.gif
    bundles/org.eclipse.compare/icons/full/clcl16/prev_nav.gif
    bundles/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif
    bundles/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif
    bundles/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif
    bundles/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif
    bundles/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif
    bundles/org.eclipse.compare/icons/full/cview16/compare_view.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/next_nav.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif
    bundles/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif
    bundles/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif
    bundles/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif
    bundles/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif
    bundles/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif
    bundles/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif
    bundles/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif
    bundles/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif
    bundles/org.eclipse.compare/icons/full/elcl16/next_nav.gif
    bundles/org.eclipse.compare/icons/full/elcl16/prev_nav.gif
    bundles/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif
    bundles/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif
    bundles/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif
    bundles/org.eclipse.compare/icons/full/etool16/conflict_edit.gif
    bundles/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif
    bundles/org.eclipse.compare/icons/full/eview16/compare_view.gif
    bundles/org.eclipse.compare/icons/full/obj16/day_obj.gif
    bundles/org.eclipse.compare/icons/full/obj16/resource_obj.gif
    bundles/org.eclipse.compare/icons/full/ovr16/add_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/chg_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/del_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/error_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/indel_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif
    bundles/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif
    bundles/org.eclipse.compare/plugin.properties
    bundles/org.eclipse.compare/plugin.xml
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/.classpath
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/.cvsignore
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/.vcm_meta
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/about.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/build.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare.jar
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NavigationAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Attic/LineReader.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/package.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/hglegal.htm
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/ngibmcpy.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/next_nav.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/prev_nav.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/cview16/compare_view.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/next_nav.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/next_nav.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/prev_nav.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/conflict_edit.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/eview16/compare_view.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/day_obj.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/resource_obj.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/add_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/chg_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/del_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/error_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/indel_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.properties
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.xml
    bundles/org.eclipse.compare/plugins/org.eclipse.compare/scripts/exportplugin.xml
    bundles/org.eclipse.compare/scripts/exportplugin.xml
    bundles/org.eclipse.team.core/.classpath
    bundles/org.eclipse.team.core/.cvsignore
    bundles/org.eclipse.team.core/.vcm_meta
    bundles/org.eclipse.team.core/README
    bundles/org.eclipse.team.core/about.html
    bundles/org.eclipse.team.core/build.properties
    bundles/org.eclipse.team.core/buildnotes_team.html
    bundles/org.eclipse.team.core/doc/hglegal.htm
    bundles/org.eclipse.team.core/doc/ngibmcpy.gif
    bundles/org.eclipse.team.core/doc/org_eclipse_team_core.html
    bundles/org.eclipse.team.core/doc/org_eclipse_team_core_providers.html
    bundles/org.eclipse.team.core/plugin.properties
    bundles/org.eclipse.team.core/plugin.xml
    bundles/org.eclipse.team.core/plugin.xml.off
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/IFileTypeRegistry.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/IIgnoreInfo.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/IResourceStateChangeListener.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamManager.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamNature.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamProvider.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamProviderTests.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamException.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamPlugin.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/Assert.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileTypeRegistry.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/IgnoreInfo.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/Policy.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/TeamManager.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/messages.properties
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/ILocalSyncElement.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteResource.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteSyncElement.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/ISyncProvider.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/LocalSyncElement.java
    bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/RemoteSyncElement.java
    bundles/org.eclipse.team.cvs.ssh/.classpath
    bundles/org.eclipse.team.cvs.ssh/.cvsignore
    bundles/org.eclipse.team.cvs.ssh/.vcm_meta
    bundles/org.eclipse.team.cvs.ssh/about.html
    bundles/org.eclipse.team.cvs.ssh/build.properties
    bundles/org.eclipse.team.cvs.ssh/plugin.properties
    bundles/org.eclipse.team.cvs.ssh/plugin.xml
    bundles/org.eclipse.team.cvs.ssh/plugin.xml.off
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Blowfish.java
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Cipher.java
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ClientPacket.java
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Misc.java
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Packet.java
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHMethod.java
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPlugin.java
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPluginResources.properties
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java
    bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ServerPacket.java
    bundles/org.eclipse.team.cvs.ui/.classpath
    bundles/org.eclipse.team.cvs.ui/.cvsignore
    bundles/org.eclipse.team.cvs.ui/.vcm_meta
    bundles/org.eclipse.team.cvs.ui/about.html
    bundles/org.eclipse.team.cvs.ui/build.properties
    bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/clear_co.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/newstream_wiz.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/refresh.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/ctool16/checkout.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/console_view.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/history_view.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/repo_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/branches_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/module_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/prjversions_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/repository_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/tag.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/versions_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/ovr16/confauto_ov.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/ovr16/question_ov.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/wizards/newconnect_wiz.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/wizards/newlocation_wiz.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/mergestream_wizban.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/newconnect_wizban.gif
    bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/newstream_wizban.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/clear_co.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/newstream_wiz.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/refresh.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/ctool16/checkout.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/cview16/console_view.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/cview16/history_view.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/cview16/repo_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/obj16/branches_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/obj16/module_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/obj16/prjversions_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/obj16/repository_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/obj16/tag.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/obj16/versions_rep.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/confauto_ov.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/question_ov.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newconnect_wiz.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newlocation_wiz.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/wizban/mergestream_wizban.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newconnect_wizban.gif
    bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newstream_wizban.gif
    bundles/org.eclipse.team.cvs.ui/plugin.properties
    bundles/org.eclipse.team.cvs.ui/plugin.xml
    bundles/org.eclipse.team.cvs.ui/plugin.xml.off
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareEditorInput.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareRevisionsInput.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecorationRunnable.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecorator.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorConfiguration.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFilePropertiesPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPropertiesPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSResourceNode.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ChangeListener.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConsoleOutputStream.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryDropAdapter.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistorySorter.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryView.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IDecorationNotifier.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IRepositoryListener.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/OverlayIcon.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Policy.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileEditorInput.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileStorage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositoriesView.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositoryManager.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositorySorter.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourceEditionNode.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourcePropertiesPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/SimpleContentProvider.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagSelectionDialog.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TextViewerAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkbenchUserAuthenticator.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddToWorkspaceAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AutoDefineTagsAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/BranchAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAsAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteResourcesAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRevisionAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/DefineBranchAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/DefineVersionAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/GenerateDiffFileAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/IgnoreAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MergeAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenLogEntryAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenRemoteFileAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveBranchTagAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveModuleVersionAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveRootAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithTagAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowHistoryAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/BranchesElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeEditorInput.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizard.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardEndPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardStartPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/ProjectElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/TagElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/UpdateMergeAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/VersionsElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/AllRootsElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchCategory.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchTag.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSAdapterFactory.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSModelElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryRootElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFileElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteResourceElement.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSCatchupReleaseViewer.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSSyncCompareInput.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CommitSyncAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/IgnoreAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/MergeAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ToolTipMessageDialog.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/UpdateSyncAction.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/BranchWizard.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/BranchWizardPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSWizardPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardAutoconnectPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileOperation.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileWizard.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/NewLocationWizard.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RepositorySelectionPage.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java
    bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardFinishPage.java
    bundles/org.eclipse.team.ui/.classpath
    bundles/org.eclipse.team.ui/.cvsignore
    bundles/org.eclipse.team.ui/.vcm_meta
    bundles/org.eclipse.team.ui/README
    bundles/org.eclipse.team.ui/about.html
    bundles/org.eclipse.team.ui/build.properties
    bundles/org.eclipse.team.ui/doc/hglegal.htm
    bundles/org.eclipse.team.ui/doc/ngibmcpy.gif
    bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui.html
    bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui_configurationWizards.html
    bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui_decorators.html
    bundles/org.eclipse.team.ui/icons/basic/clcl16/catchup_rls.gif
    bundles/org.eclipse.team.ui/icons/basic/clcl16/catchuprelease_rls.gif
    bundles/org.eclipse.team.ui/icons/basic/clcl16/conflict_synch.gif
    bundles/org.eclipse.team.ui/icons/basic/clcl16/ignorews_edit.gif
    bundles/org.eclipse.team.ui/icons/basic/clcl16/incom_synch.gif
    bundles/org.eclipse.team.ui/icons/basic/clcl16/outgo_synch.gif
    bundles/org.eclipse.team.ui/icons/basic/clcl16/refresh.gif
    bundles/org.eclipse.team.ui/icons/basic/clcl16/release_rls.gif
    bundles/org.eclipse.team.ui/icons/basic/cview16/synch_synch.gif
    bundles/org.eclipse.team.ui/icons/basic/wizban/newconnect_wizban.gif
    bundles/org.eclipse.team.ui/icons/full/clcl16/catchup_rls.gif
    bundles/org.eclipse.team.ui/icons/full/clcl16/catchuprelease_rls.gif
    bundles/org.eclipse.team.ui/icons/full/clcl16/conflict_synch.gif
    bundles/org.eclipse.team.ui/icons/full/clcl16/ignorews_edit.gif
    bundles/org.eclipse.team.ui/icons/full/clcl16/incom_synch.gif
    bundles/org.eclipse.team.ui/icons/full/clcl16/outgo_synch.gif
    bundles/org.eclipse.team.ui/icons/full/clcl16/refresh.gif
    bundles/org.eclipse.team.ui/icons/full/clcl16/release_rls.gif
    bundles/org.eclipse.team.ui/icons/full/cview16/synch_synch.gif
    bundles/org.eclipse.team.ui/icons/full/ovr/checkedin_ov.gif
    bundles/org.eclipse.team.ui/icons/full/ovr/checkedout_ov.gif
    bundles/org.eclipse.team.ui/icons/full/ovr/dirty_ov.gif
    bundles/org.eclipse.team.ui/icons/full/wizban/newconnect_wizban.gif
    bundles/org.eclipse.team.ui/plugin.properties
    bundles/org.eclipse.team.ui/plugin.xml
    bundles/org.eclipse.team.ui/plugin.xml.off
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardElement.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardNode.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizard.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizardMainPage.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IgnorePreferencePage.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TextPreferencePage.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/UIConstants.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/IConfigurationWizard.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/ISharedImages.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamUIPlugin.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/CheckInAction.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/CheckOutAction.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/ConfigureProjectAction.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/DeconfigureProjectAction.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/DeleteAction.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/GetAction.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/TeamAction.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/UndoCheckOutAction.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/CatchupReleaseViewer.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/ChangedTeamContainer.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/ITeamNode.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/MergeResource.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncCompareInput.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncSet.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncView.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/TeamFile.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/TypedBufferedContent.java
    bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/UnchangedTeamContainer.java
    tests/org.eclipse.team.tests.core/about.html
    tests/org.eclipse.team.tests.cvs.core/.classpath
    tests/org.eclipse.team.tests.cvs.core/.cvsignore
    tests/org.eclipse.team.tests.cvs.core/.vcm_meta
    tests/org.eclipse.team.tests.cvs.core/about.html
    tests/org.eclipse.team.tests.cvs.core/plugin.xml
    tests/org.eclipse.team.tests.cvs.core/readme.txt
    tests/org.eclipse.team.tests.cvs.core/repository.properties
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/CVSROOT/modules
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/docs/readme.html
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/macros/macro1
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project1/f1/file-in-p1.txt
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project2/file-p2.txt
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.c
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.h
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/sub/file-sub.txt
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/common/common.txt
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/linux/linux.txt
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/pc/pc.txt
    tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project8/file-p8.txt
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTests.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSTestSetup.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/JUnitTestCase.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/NullOutputStream.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/AllTests.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/BasicTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/CompatibleTestSetup.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ConflictTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ModuleTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ReferenceClient.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ReferenceException.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/SameResultEnv.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/AllTests.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/LocalFileTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/LocalFolderTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/ResourceSyncInfoTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/SynchronizerTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTests.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProviderTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CommandsTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ImportTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ModuleTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/RemoteResourceTest.java
    tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/SyncElementTest.java
    tests/org.eclipse.team.tests.cvs.core/test.xml
diff --git a/bundles/org.eclipse.compare/.classpath b/bundles/org.eclipse.compare/.classpath
deleted file mode 100644
index ce863b7..0000000
--- a/bundles/org.eclipse.compare/.classpath
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="src" path="compare"/>
-    <classpathentry kind="src" path="/org.eclipse.core.boot"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
-    <classpathentry kind="src" path="/org.eclipse.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.core.resources"/>
-    <classpathentry exported="true" kind="lib" path="compare.jar" sourcepath="/org.eclipse.compare/comparesrc.zip"/>
-    <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
-    <classpathentry kind="src" path="/org.eclipse.swt"/>
-    <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 092357e..0000000
--- a/bundles/org.eclipse.compare/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin

diff --git a/bundles/org.eclipse.compare/.vcm_meta b/bundles/org.eclipse.compare/.vcm_meta
deleted file mode 100644
index f6264c0..0000000
--- a/bundles/org.eclipse.compare/.vcm_meta
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<project-description>

-	<nature id="org.eclipse.jdt.core.javanature"/>

-	<reference project-name="org.eclipse.core.boot"/>

-	<reference project-name="org.eclipse.ui"/>

-	<reference project-name="org.eclipse.core.runtime"/>

-	<reference project-name="org.eclipse.core.resources"/>

-	<reference project-name="org.eclipse.swt"/>

-	<builder name="org.eclipse.jdt.core.javabuilder">

-	</builder>

-</project-description>

diff --git a/bundles/org.eclipse.compare/about.html b/bundles/org.eclipse.compare/about.html
deleted file mode 100644
index 768324e..0000000
--- a/bundles/org.eclipse.compare/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>

-<head>

-<title>About</title>

-<style type="text/css">

-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}

-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}

-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}

-code { font-family: "Courier New", Courier, mono; font-size: 10pt}

-sup { font-family: arial,helvetica,geneva; font-size: 10px}

-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}

-li { font-family: arial, helvetica, geneva; font-size: 10pt}

-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}

-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect(   ); margin-top: 5mm; margin-left: 3mm}

-</style>

-</head>

-<body lang="EN-US" link="blue" vlink="purple">

-<table border="0" cellspacing="5" cellpadding="2" width="100%" >

-  <tr> 

-    <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>

-  </tr>

-  <tr> 

-    <td> 

-<p>11th December, 2001</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

-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> &quot;CPL&quot;.  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>

-</td></tr></table>

-</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 c32a501..0000000
--- a/bundles/org.eclipse.compare/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-source.compare.jar = compare/

-bin.includes = icons/,\

-               plugin.xml,\

-               *.jar,\

-               plugin.properties,\

-               notice.html,\

-               about.html

diff --git a/bundles/org.eclipse.compare/buildnotes_compare.html b/bundles/org.eclipse.compare/buildnotes_compare.html
deleted file mode 100644
index e70b5e1..0000000
--- a/bundles/org.eclipse.compare/buildnotes_compare.html
+++ /dev/null
@@ -1,544 +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 February ??th 2002

-

-<h2>

-What's new in this drop</h2>

-Patch: for every rejected file a task marker is added

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9540">#9540</a>: Compare with patch: it should not be possible to check items that could not be applied<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9532">#9532</a>: Compare with patch: next disabled although clipboard specified<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input February 12th 2002

-

-<h2>

-What's new in this drop</h2>

-The patch wizard no longer opens a Compare Editor but applies the

-patch directly to the workspace. This will be the default.

-In the future the old behavior of opening the Compare Editor will be

-an additional option when finishing the wizard.

-<br>

-Patch wizard has a 'Reverse' option for applying a "reversed" patch.

-This option can be used to 'undo' a patch.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9153">#9153</a>: NPE when closing synchronize view<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9331">#9331</a>: NPE during compare with stream version<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6346">#6346</a>: Problems with Patch<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6727">#6727</a>: Patch: *.rej file must be saved in workspace<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7358">#7358</a>: Internal Error in Compare with Patch with new files<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input February 5th 2002

-

-<h2>

-What's new in this drop</h2>

-The structure compare pane opens when a resource is selected.

-In previous version a double click was required.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5063">#5063</a>: Should not have to double-click to open Structure Compare<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2602">#2602</a>: Compare FW accessibility issues (1GK79UB)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2707">#2707</a>: Merge viewer should ask for save before releasing (1GI9JXS)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2772">#2772</a>: DCR: Automatic structure compare (1GJ6EUY)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=3829">#3829</a>: Smart rename button enabled when no smartness is available (1GEUVHN)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9089">#9089</a>: Local history - Selecting item in structured compare has no effect<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 29th 2002

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6271">#6271</a>: Can't tell which file is which in Compare browser<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2519">#2519</a>: next/prev arrows active when only one difference in compare (1GFIQX3)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=8363">#8363</a>: NPE comparing two resources in the navigator.<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2501">#2501</a>: Empty menu in compare browser (1GFBQKE)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2854">#2854</a>: Compare: Save code path problematic (1GJYGAX)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=8574">#8574</a>: Not structure compare in compare with local history<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 23th 2002

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=8089">#8089</a>: Replace from local history: parse error<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 22th 2002

-

-<h2>

-What's new in this drop</h2>

-Fixed an inconsistency in the binary compare viewer:

-info message didn't match +/-icon in the resource compare pane.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=3859">#3859</a>: replace from history does not work for elements with error (1GEYIZ6)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6177">#6177</a>: Double click action dangerous in 'Restore from Local History'<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7821">#7821</a>: Team 2.0 CVS synchronze bug <no-name> dirs..<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2773">#2773</a>: Java structure compare should give better indication when no changes (1GJ6ENE)<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 15th 2002

-

-<h2>

-What's new in this drop</h2>

-Fixed a problem in DiffNode.getName()and the DiffTreeViewer's label provider

-where the left and right half of a DiffNode label would be reversed because

-the "leftIsLocal" property of a CompareConfiguration wasn't obeyed.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=1893">#1893</a>: Compare Viewer doesn't scroll to last line (1GBB34N)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5839">#5839</a>: Usability: Initial diff is sometimes not horizontally aligned<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5325">#5325</a>: Compare always scroll the text pane to the extreme limit<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7048">#7048</a>: First element not selected<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2548">#2548</a>: Project compare should open viewing selected file (1GFMRP6)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2938">#2938</a>: Replace from local history should show busy cursor (1GKU0P3)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7594">#7594</a>: Menu entry "Replace with Previous" shouldn't have a "..."<br>

-Workaround added for:<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7320">#7320</a>: Next diff scrolls when going into current diff<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 8th 2002

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-Added methods to CompareUI plugin for adding and removing aliases

-for the file extension to StructureCompareViewer mapping

-(addStructureViewerAlias, removeStructureViewerAlias).

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6828">#6828</a>: Support with replace with previous<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2396">#2396</a>: Save in compare editors needs progress bar (1GEYF58)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5271">#5271</a>: JARs compared as source in release browser<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5121">#5121</a>: Replace with Previous (from local history)<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input December 11th 2001

-

-<h2>

-What's new in this drop</h2>

-Keyboard shortcuts for 'Goto next Difference' and 'Goto previous Difference'

-changed to Control-E and Control-Shift-E.<br>

-Better NLS support.<br>

-Updated file "about.html".

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input December 4th 2001

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=4381">#4381</a>: Replace from local histroy - workspace element included <br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input November 27th 2001

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6298">#6298</a>: Replace with Local History: Workbench -> Workspace<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5238">#5238</a>: Compare fails if takes more than 20 seconds<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 210, November 12th, 2001

-

-<h2>

-What's new in this drop</h2>

-First cut for 'rejected hunk' support.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-new classes CompareViewerPane and CompareViewerSwitchingPane<br>

-

-<h3>

-Other highlights</h3>

-Improved Patch wizard.<br>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5723">#5723</a>: Apply Patch dialog has no radio selection<br>

-

-<h2>

-Problem reports closed</h2>

-

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 207, November 1st, 2001

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5334">#5334: Internal errors using patch tool</a><br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5150">#5150: Compare with patch cannot read VCM's CVS patch file</a><br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 204, October 12th, 2001

-

-<h2>

-What's new in this drop</h2>

-First cut of patch support.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 202, September 27th, 2001

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-1GKKUA5: ITPUI:WINNT - Severe: memory leak in sync view<br>

-1GKKGGS: ITPJUI:WIN2000 - (136) compares zips as source<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 201, September 21st, 2001

-

-<h2>

-What's new in this drop</h2>

-removed direction icon in TextMergeViewer for two-way compare

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-1GJURWJ: ITPUI:WIN2000 - Hebrew + Japanese: compare view defaults to binary<br>

-1GK0388: ITPJCORE:WIN2000 - replace with local history: selecting (workspace) deletes source<br>

-1GITG2V: ITPUI:WIN2000 - Comparing html files uses binary compare<br>

-1GJW2TP: ITPJUI:WIN2000 - java compare: why beep every time?<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 200, September 13th, 2001

-

-<h2>

-What's new in this drop</h2>

-If not specified otherwise Compare viewer font is taken from workbench text font<br>

-The shortcut for "Goto Next/Previous Difference" is Ctrl-D/Ctrl-Shift-D

-to avoid a clash with Ctrl-P of the Print command.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-new method EditionSelectionDialog.setHideIdenticalEntries(boolean)<br>

-new method EditionSelectionDialog.setTargetIsRight(boolean)<br>

-new method EditionSelectionDialog.setAddMode(boolean)<br>

-new method CompareEditorInput.saveChanges(...)<br>

-new method TextMergeViewer.createLineComparator(IDocument document, IRegion region, boolean ignoreWhiteSpace)<br>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-1GFMLFB: ITPUI:WIN2000 - files that are out of sync with the file system appear as empty<br>

-1GG0ELM: ITPVCM:ALL - Local history displayed some of Today's items as Yesterday<br>

-1GGNKHN: ITPJUI:ALL - No progress during replace with local history<br>

-1GF2JNI: ITPUI:ALL - (minor)Compare failed title should be title case<br>

-1GHBPA1: ITPVCM:WINNT - Compare - next change arrow switches to wrong file<br>

-1GGQQH3: ITPJUI:WINNT - Compare hightlights a non-change instead of the change<br>

-1GI5DN9: ITPUI:WIN2000 - Conflicting token deletions don't show up in text compare viewer<br>

-1GI3KUR: ITPJUI:WIN2000 - Compare: double-click in versions list closes view<br>

-1GFFR4B: ITPUI:WIN98 - local history is misleading<br>

-1GBM0IL: ITPUI:WINNT - CompareEditorInput#save should throw CoreException<br>

-1GI99LE: ITPUI:ALL - Compare viewer does not show last line when horizontal scroll bar is present<br>

-1GBB34N: ITPJUI:WIN2000 - Compare Viewer doesn't scroll to last line<br>

-1GGZ8DO: ITPJUI:WIN - MergeViewer invalid selection range<br>

-1GIIBHM: ITPUI:WIN2000 - Problems when comparing zip files<br>

-1GIKKOZ: ITPUI:ALL - alt copyright text in html doc needs update<br>

-1GIURNB: ITPUI:ALL - property file of EditionSelectionDialog contains configuration options<br>

-1GIUS6L: ITPUI:ALL - TextMergeViewer uses deprecated Thread.stop()<br>

-1GI3HDZ: ITPJUI:ALL - Compare: conflicts with no ancestor does not show differences<br>

-1GEUX0D: ITPJUI:ALL - not state aware toolbar button in compare<br>

-

-<h2>

-Problem reports closed</h2>

-1GF9Y9C: ITPUI:WIN2000 - DCR: only get ancestor pane contents if pane is visible<br>

-

-<br>&nbsp;

-<a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corporation 2000" BORDER=0 height=12 width=195></a>

-<br>&nbsp;

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/compare.jar b/bundles/org.eclipse.compare/compare.jar
deleted file mode 100644
index 83bc3a2..0000000
--- a/bundles/org.eclipse.compare/compare.jar
+++ /dev/null
Binary files differ
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 d64b122..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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() {

-	}

-		

-	/* (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) {

-			}

-		}

-		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 35d4147..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
+++ /dev/null
@@ -1,405 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.

-	 */

-	public static final String IGNORE_WHITESPACE= "IGNORE_WHITESPACE"; //$NON-NLS-1$

-	/**

-	 * Name of the show pseudo conflicts property.

-	 */

-	public static final String SHOW_PSEUDO_CONFLICTS= "SHOW_PSEUDO_CONFLICTS"; //$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$

-		

-//		ImageDescriptor tmp= fgImages[Differencer.ADDITION];

-//		fgImages[Differencer.ADDITION]= fgImages[Differencer.DELETION];

-//		fgImages[Differencer.DELETION]= tmp;

-	}

-

-	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.

-	 */

-	public CompareConfiguration() {

-		

-		setProperty("LEFT_IS_LOCAL", new Boolean(fLeftIsLocal)); //$NON-NLS-1$

-		

-		IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-		if (ps != null) {

-			boolean b= ps.getBoolean(ComparePreferencePage.INITIALLY_SHOW_ANCESTOR_PANE);

-			setProperty(ComparePreferencePage.INITIALLY_SHOW_ANCESTOR_PANE, new Boolean(b));

-		}

-	}

-

-	/**

-	 * 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

-	 */

-	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() {

-	}

-

-	/**

-	 * 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 propertyName the name of the property to set

-	 * @param value 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 propertyName 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 efd6e33..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
+++ /dev/null
@@ -1,727 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare; 

-

-import java.lang.reflect.InvocationTargetException;

-

-import java.util.List;

-import java.util.ArrayList;

-import java.util.ResourceBundle;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.graphics.Point;

-import org.eclipse.swt.widgets.*;

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.core.resources.IResource;

-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.swt.custom.BusyIndicator;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.resource.ImageDescriptor;

-

-import org.eclipse.compare.contentmergeviewer.ContentMergeViewer;

-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 interface 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 {

-	

-	

-	/**

-	 * The name of the "dirty" property.

-	 */

-	public static final String DIRTY_STATE= "DIRTY_STATE"; //$NON-NLS-1$

-		

-	private static final String COMPARE_EDITOR_IMAGE_NAME= "cview16/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 ISelection fSelection2;

-	private Object fInput;

-	private String fTitle;

-	private ListenerList fListenerList= new ListenerList();

-	private CompareNavigator fNavigator;

-	private boolean fDirty= false;

-	private IPropertyChangeListener fDirtyStateListener;

-

-	private IgnoreWhiteSpaceAction fIgnoreWhitespace;

-	private ShowPseudoConflicts fShowPseudoConflicts;

-	

-	boolean fStructureCompareOnSingleClick= 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);

-		

-		ResourceBundle bundle= CompareUIPlugin.getResourceBundle();

-		fIgnoreWhitespace= new IgnoreWhiteSpaceAction(bundle, configuration);

-		fShowPseudoConflicts= new ShowPseudoConflicts(bundle, configuration);

-		

-		fDirtyStateListener= new IPropertyChangeListener() {

-			public void propertyChange(PropertyChangeEvent e) {

-				if (Utilities.getValue(e, false))

-					setDirty(true);

-			}

-		};

-	}

-	

-	private boolean structureCompareOnSingleClick() {

-		return fStructureCompareOnSingleClick;

-	}

-		

-	/* (non Javadoc)

-	 * see IAdaptable.getAdapter

-	 */

-	public Object getAdapter(Class adapter) {

-		if (CompareNavigator.class.equals(adapter)) {

-			if (fNavigator == null)

-				fNavigator= new CompareNavigator(

-					new CompareViewerSwitchingPane[] {

-						fStructureInputPane,

-						fStructurePane1,

-						fStructurePane2,

-						fContentInputPane

-					}

-				);

-			return fNavigator;

-		}

-		return null;

-	}

-	

-	/* (non Javadoc)

-	 * see IEditorInput.getImageDescriptor

-	 */

-	public ImageDescriptor getImageDescriptor() {

-		return null;

-	}

-	

-	/* (non Javadoc)

-	 * see IEditorInput.getToolTipText

-	 */

-	public String getToolTipText() {

-		return fTitle;

-	}

-	

-	/* (non Javadoc)

-	 * see IEditorInput.getName

-	 */

-	public String getName() {

-		return fTitle;

-	}

-			

-	/**

-	 * 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() {

-		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>.

-	 *

-	 * @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);

-			

-		final Splitter h= new Splitter(fComposite, SWT.HORIZONTAL);

-

-		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);

-				

-		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;

-			}

-		};

-		fComposite.setVisible(h, false);

-		fComposite.setVisible(fContentInputPane, true);

-		

-		fComposite.setWeights(new int[] { 30, 70 });

-		

-		fComposite.layout();

-

-		// setup the wiring for top left pane

-		fStructureInputPane.addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent e) {

-					feed1(e.getSelection());

-				}

-			}

-		);

-		

-		if (!structureCompareOnSingleClick()) {

-			fStructureInputPane.addDoubleClickListener(

-				new IDoubleClickListener() {

-					public void doubleClick(DoubleClickEvent e) {

-						feedDefault1(e.getSelection());

-					}

-				}

-			);

-		}

-

-		// setup the wiring for second pane

-		fStructurePane1.addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent e) {

-					feed2(e.getSelection());

-				}

-			}

-		);

-

-		// setup the wiring for third pane

-		fStructurePane2.addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent e) {

-					feed3(e.getSelection());

-				}

-			}

-		);

-		

-		// now deal with activation

-		Listener activationListener= new Listener() {

-			public void handleEvent(Event event) {

-				if (event.widget instanceof CompareViewerSwitchingPane) {

-					fFocusPane= (CompareViewerSwitchingPane) event.widget;

-				}

-			}

-		};

-		fStructureInputPane.addListener(SWT.Activate, activationListener);

-		fStructurePane1.addListener(SWT.Activate, activationListener);

-		fStructurePane2.addListener(SWT.Activate, activationListener);

-		fContentInputPane.addListener(SWT.Activate, activationListener);

-	

-		if (fInput instanceof ICompareInput) {

-			ICompareInput input2= (ICompareInput) fInput;

-			fStructureInputPane.setInput(input2);

-			feed1(fStructureInputPane.getSelection());

-		}

-		

-		fComposite.setData("Nav", //$NON-NLS-1$

-			new CompareViewerSwitchingPane[] {

-				fStructureInputPane,

-				fStructurePane1,

-				fStructurePane2,

-				fContentInputPane

-			}

-		);

-	

-		return fComposite;

-	}

-	

-	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);

-						if (structureCompareOnSingleClick()) {

-							fStructurePane1.setInput(input);

-							//if (fStructurePane1.isEmpty())

-								fContentInputPane.setInput(input);

-						} else {

-							fContentInputPane.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>

-	 *

-	 * @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 CompareUIPlugin.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>

-	 *

-	 * @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 v= CompareUIPlugin.findContentViewer(oldViewer, input, parent, fCompareConfiguration);

-		

-		if (v instanceof IPropertyChangeNotifier) {

-			final IPropertyChangeNotifier dsp= (IPropertyChangeNotifier) v;

-

-			dsp.addPropertyChangeListener(fDirtyStateListener);

-			

-			Control c= v.getControl();

-			c.addDisposeListener(

-				new DisposeListener() {

-					public void widgetDisposed(DisposeEvent e) {

-						dsp.removePropertyChangeListener(fDirtyStateListener);

-					}

-				}

-			);

-		}

-		

-		return v;

-	}

-	

-	/**

-	 * 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;

-	}

-		

-	/**

-	 * 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) {

-		if (dirty != fDirty) {

-			boolean old= fDirty;

-			fDirty= dirty;

-			Utilities.firePropertyChange(fListenerList, this, DIRTY_STATE, new Boolean(old), new Boolean(fDirty));

-		}

-	}

-	

-	/* (non Javadoc)

-	 * see IPropertyChangeNotifier.addListener

-	 */

-	public void addPropertyChangeListener(IPropertyChangeListener listener) {

-		fListenerList.add(listener);

-	}

-

-	/* (non Javadoc)

-	 * see IPropertyChangeNotifier.removeListener

-	 */

-	public void removePropertyChangeListener(IPropertyChangeListener listener) {

-		fListenerList.remove(listener);

-	}

-

-	/**

-	 * Save any unsaved changes.

-	 * Empty implementation.

-	 * Subclasses must override to save any changes.

-	 *

-	 * @param progressMonitor an <code>IProgressMonitor</code> that the implementation of save may use to show progress

-	 * @deprecated Override method saveChanges instead.

-	 */

-	public void save(IProgressMonitor pm) {

-	}

-	

-	/**

-	 * Save any unsaved changes.

-	 * Subclasses must override to save any changes.

-	 * This implementation tries to flush changes in all viewers by

-	 * calling <code>setInput</code> on them.

-	 *

-	 * @param progressMonitor an <code>IProgressMonitor</code> that the implementation of save may use to show progress

-	 */

-	public void saveChanges(IProgressMonitor pm) throws CoreException {

-		

-		// flush changes in any dirty viewer

-		flushViewer(fStructureInputPane);

-		flushViewer(fStructurePane1);

-		flushViewer(fStructurePane2);

-		flushViewer(fContentInputPane);

-

-		save(pm);

-	}

-	

-	private static void flushViewer(CompareViewerSwitchingPane pane) {

-		if (pane != null) {

-			Viewer v= pane.getViewer();

-			if (v != null) {

-				

-				// since we have already asked the user whether he wants to save

-				// changes, we disable the confirmation alert in

-				// ContentMergeViewer.inputChanged

-				if (v instanceof ContentMergeViewer)

-					((ContentMergeViewer)v).setConfirmSave(false);

-

-				Object input= pane.getInput();

-				v.setInput(input);

-			}

-		}

-	}

-}

-

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 5a39d9d..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.ui.plugin.AbstractUIPlugin;

-

-import org.eclipse.compare.internal.CompareUIPlugin;

-import org.eclipse.compare.internal.IStructureCreatorDescriptor;

-import org.eclipse.compare.structuremergeviewer.ICompareInput;

-import org.eclipse.compare.structuremergeviewer.IStructureCreator;

-

-

-/**

- * 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 {

-	

-	/** Image descriptors for the 'Next' tool bar button. */

-	public static final ImageDescriptor DESC_DTOOL_NEXT= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.DTOOL_NEXT);

-	public static final ImageDescriptor DESC_CTOOL_NEXT= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.CTOOL_NEXT);

-	public static final ImageDescriptor DESC_ETOOL_NEXT= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.ETOOL_NEXT);

-	

-	/** Image descriptors for the 'Previous' tool bar button. */

-	public static final ImageDescriptor DESC_DTOOL_PREV= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.DTOOL_PREV);

-	public static final ImageDescriptor DESC_CTOOL_PREV= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.CTOOL_PREV);

-	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$

-	

-	/* (non Javadoc)

-	 * non inatiatiable!

-	 */

-	private CompareUI() {

-	}

-	

-	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.getResourceBundle();

-	}

-	

-	/**

-	 * Performs the comparison described by the given input and opens a

-	 * compare editor on the result.

-	 *

-	 * @param input the input on which to open the compare editor

-	 */

-	public static void openCompareEditor(CompareEditorInput input) {

-		CompareUIPlugin plugin= CompareUIPlugin.getDefault();

-		if (plugin != null)

-			plugin.openCompareEditor(input);

-	}

-			

-	/**

-	 * 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);

-	}

-		

-	/**

-	 * 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.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.findContentViewer(oldViewer, input, parent, configuration);

-	}

-		

-	public static void addStructureViewerAlias(String type, String alias) {

-		CompareUIPlugin.addStructureViewerAlias(type, alias);

-	}

-	

-	public static void removeAllStructureViewerAliases(String type) {

-		CompareUIPlugin.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 3106b11..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.widgets.*;

-

-import org.eclipse.jface.action.ToolBarManager;

-

-import org.eclipse.compare.internal.Splitter;

-

-/**

- * 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>.

- */

-public class CompareViewerPane extends ViewForm {

-	

-	private ToolBarManager fToolBarManager;

-

-

-	public CompareViewerPane(Composite parent, int style) {

-		super(parent, style);

-		

-		marginWidth= 0;

-		marginHeight= 0;

-		

-		CLabel label= new CLabel(this, SWT.NONE);

-		setTopLeft(label);

-		

-		MouseAdapter ml= new MouseAdapter() {

-			public void mouseDoubleClick(MouseEvent e) {

-				Control parent= getParent();

-				if (parent instanceof Splitter)

-					((Splitter)parent).setMaximizedControl(CompareViewerPane.this);

-			}

-		};	

-				

-		addMouseListener(ml);

-		label.addMouseListener(ml);	

-	}

-	

-	public void setText(String label) {

-		CLabel cl= (CLabel) getTopLeft();

-		cl.setText(label);		

-	}

-	

-	public void setImage(Image image) {

-		CLabel cl= (CLabel) getTopLeft();

-		cl.setImage(image);

-	}

-	

-	/**

-	 * Returns a <code>ToolBarManager</code> if the given parent is a <code>CompareViewerPane</code>.

-	 */

-	public static ToolBarManager getToolBarManager(Composite parent) {

-		if (parent instanceof CompareViewerPane) {

-			CompareViewerPane pane= (CompareViewerPane) parent;

-			return pane.getToolBarManager();

-		}

-		return null;

-	}

-

-	/**

-	 * Clear tool items in <code>CompareViewerPane</code>'s control bar.

-	 */

-	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 42717db..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-import java.text.MessageFormat;

-

-import org.eclipse.swt.SWT;

-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> which supports viewer switching.

- * <p>

- * Clients must implement the viewer switching strategy by implementing

- * <code>getViewer</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.

- */

-public abstract class CompareViewerSwitchingPane extends CompareViewerPane

-				implements ISelectionChangedListener, ISelectionProvider, IDoubleClickListener {

-	

-	private Viewer fViewer;

-	private Object fInput;

-	private ListenerList fSelectionListeners= new ListenerList();

-	private ListenerList fOpenListeners= new ListenerList();

-	private boolean fControlVisibility= false;

-	private String fTitle;

-	private String fTitleArgument;

-

-

-	/**

-	 * Creates a <code>CompareViewerSwitchingPane</code> as a child of the given parent and with the

-	 * specified SWT style bits.

-	 */

-	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.

-	 */

-	public CompareViewerSwitchingPane(Composite parent, int style, boolean visibility) {

-		super(parent, style);

-

-		fControlVisibility= visibility;

-		

-		setViewer(new NullViewer(this));

-		

-		CompareNavigator.hookNavigation(this);

-

-		addDisposeListener(

-			new DisposeListener() {

-				public void widgetDisposed(DisposeEvent e) {

-					if (fViewer instanceof ISelectionProvider)

-						((ISelectionProvider) fViewer).removeSelectionChangedListener(CompareViewerSwitchingPane.this);

-					if (fViewer instanceof StructuredViewer)

-						 ((StructuredViewer) fViewer).removeDoubleClickListener(CompareViewerSwitchingPane.this);

-					fViewer= null;

-					fInput= null;

-					fSelectionListeners= null;

-				}

-			}

-		);

-	}

-	

-	/**

-	 * Returns the current viewer.

-	 */

-	public Viewer getViewer() {

-		return fViewer;

-	}

-	

-	/**

-	 * Sets the current viewer.

-	 */

-	private void setViewer(Viewer newViewer) {

-		

-		if (newViewer == fViewer)

-			return;

-				

-		boolean oldEmpty= isEmpty();

-

-		if (fViewer != null) {

-			

-			if (fViewer instanceof ISelectionProvider)

-				 ((ISelectionProvider) fViewer).removeSelectionChangedListener(this);

-				 

-			if (fViewer instanceof StructuredViewer)

-				((StructuredViewer)fViewer).removeDoubleClickListener(this);

-

-			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();

-

-			if (fViewer instanceof ISelectionProvider)

-				 ((ISelectionProvider) fViewer).addSelectionChangedListener(this);

-			if (fViewer instanceof StructuredViewer)

-				((StructuredViewer)fViewer).addDoubleClickListener(this);

-

-			if (oldEmpty != newEmpty) {	// relayout my container

-				Composite parent= getParent();

-				if (parent instanceof Splitter)

-					((Splitter)parent).setVisible(this, fControlVisibility ? !newEmpty : true);

-			}

-				

-			layout(true);

-		}

-	}

-

-	/**

-	 * Returns <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) {

-		fOpenListeners.add(l);

-	}

-

-	public void removeDoubleClickListener(IDoubleClickListener l) {

-		fOpenListeners.remove(l);

-	}

-

-	public void doubleClick(DoubleClickEvent event) {

-		Object[] listeners= fOpenListeners.getListeners();

-		for (int i= 0; i < listeners.length; i++)

-			((IDoubleClickListener) listeners[i]).doubleClick(event);

-	}

-

-	public ISelection getSelection() {

-		if (fViewer instanceof ISelectionProvider)

-			return ((ISelectionProvider) fViewer).getSelection();

-		return null;

-	}

-

-	public void setSelection(ISelection s) {

-		if (fViewer instanceof ISelectionProvider)

-			 ((ISelectionProvider) 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;

-	}

-		

-	/**

-	 * If the old viewer had focus, new setInput tries to set

-	 * focus on new viewer too.

-	 */ 

-	public void setInput(Object input) {

-

-		if (fInput == input)

-			return;

-			

-		boolean hadFocus= hasFocus2();

-		

-		try {

-			if (fViewer != null)

-				fViewer.setInput(null);	// force save before switching viewer

-		} catch (ViewerSwitchingCancelled ex) {

-			return;

-		}

-

-		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();

-	}

-	

-	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$

-		}

-	}

-

-	public Object getInput() {

-		return fInput;

-	}

-

-	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 9123305..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
+++ /dev/null
@@ -1,1040 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-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.io.InputStream;

-import java.text.*;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.graphics.Point;

-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.dialogs.Dialog;

-import org.eclipse.jface.resource.ImageDescriptor;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.util.Assert;

-import org.eclipse.jface.dialogs.IDialogConstants;

-

-import org.eclipse.core.resources.IFile;

-import org.eclipse.core.resources.IFileState;

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.compare.internal.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.compare.*;

-

-/**

- * 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 Dialog {

-		

-	/**

-	 * 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 {

-							InputStream is= sca.getContents();

-							if (is != null)

-								fContent= Utilities.readString(is);

-						} catch (CoreException ex) {

-						}

-					}

-				}

-				if (fContent == null)

-					fContent= ""; //$NON-NLS-1$

-			}

-			return fContent;

-		}

-		

-		/**

-		 * Compares content of item.

-		 */

-		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;

-	/** 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;

-	

-	/**

-	 * 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;

-	/** The editions of the current selected member */

-	private List fCurrentEditions;

-	private Thread fThread;

-	private ResourceBundle fBundle;

-	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);

-		setShellStyle(SWT.CLOSE | SWT.APPLICATION_MODAL | SWT.RESIZE);

-		

-		fBundle= bundle;

-	

-		fCompareConfiguration= new CompareConfiguration();

-		fCompareConfiguration.setLeftEditable(false);

-		fCompareConfiguration.setRightEditable(false);

-				

-		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();

-		iconName= Utilities.getString(fBundle, "timeIcon", "obj16/resource_obj.gif"); //$NON-NLS-1$ //$NON-NLS-2$

-		id= CompareUIPlugin.getImageDescriptor(iconName);

-		if (id != null)

-			fTimeImage= id.createImage();

-	}

-		

-	public void setEditionTitleArgument(String titleArgument) {

-		fTitleArg= titleArgument;

-	}

-	

-	public void setEditionTitleImage(Image titleImage) {

-		fTitleImage= titleImage;

-	}

-	

-	/**

-	 * Select the previous edition.

-	 *

-	 * @param target the input object against which the editions are compared; must not be <code>null</code>

-	 * @param editions the list of editions (element type: <code>ITypedElement</code>s)

-	 * @param path 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 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, 0, count-1);

-			

-		// find StructureCreator if ppath is not null

-		IStructureCreator structureCreator= null;

-		if (ppath != null) {

-			String type= target.getType();

-			IStructureCreatorDescriptor scd= CompareUIPlugin.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 (! 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 editions the list of editions (element type: <code>ITypedElement</code>s)

-	 * @param path 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, 0, count-1);

-			

-		// find StructureCreator if ppath is not null

-		IStructureCreator structureCreator= null;

-		if (ppath != null) {

-			String type= target.getType();

-			IStructureCreatorDescriptor scd= CompareUIPlugin.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)

-				fCompareConfiguration.setRightLabel(targetLabel);

-			else

-				fCompareConfiguration.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.

-	 */

-	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.

-	 */

-	public void setTargetIsRight(boolean isRight) {

-		fTargetIsRight= isRight;

-	}

-		

-	/**

-	 * Controls whether the EditionSelectionDialog is in 'add' mode

-	 * or 'replace' mode (the default).

-	 *

-	 * @param addMode if true dialog is in 'add' mode.

-	 */

-	public void setAddMode(boolean addMode) {

-		fAddMode= addMode;

-	}

-	

-	/**

-	 * Controls whether the EditionSelectionDialog is in 'compare' mode

-	 * or 'add/replace' (the default) mode. 

-	 *

-	 * @param addMode if true dialog is in 'add' mode.

-	 */

-	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 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 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 });

-	}

-	

-	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

-  	 */

-	protected Image getEditionImage(ITypedElement selectedEdition, ITypedElement item) {

-		if (selectedEdition instanceof ResourceNode)

-			return selectedEdition.getImage();

-		if (selectedEdition instanceof HistoryItem)

-			return fTimeImage;

-		return null;

-	}

-	

-	/* (non Javadoc)

-	 * Returns the size initialized with the constructor.

-	 */

-	protected Point getInitialSize() {

-		Point size= new Point(Utilities.getInteger(fBundle, "width", 0), //$NON-NLS-1$

-					Utilities.getInteger(fBundle, "height", 0)); //$NON-NLS-1$

-		

-		Shell shell= getParentShell();

-		if (shell != null) {

-			Point parentSize= shell.getSize();

-			if (size.x <= 0)

-				size.x= parentSize.x-300;

-			if (size.y <= 0)

-				size.y= parentSize.y-200;

-		}

-		if (size.x < 700)

-			size.x= 700;

-		if (size.y < 500)

-			size.y= 500;

-		return size;

-	}

-

- 	/* (non Javadoc)

- 	 * Creates SWT control tree.

- 	 */

-	protected synchronized Control createDialogArea(Composite parent) {

-		

-		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 (fDateImage != null)

-						fDateImage.dispose();

-					if (fTimeImage != null)

-						fTimeImage.dispose();

-				}

-			}

-		);

-		

-		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$

-			fMemberTable= new Table(fMemberPane, SWT.H_SCROLL + SWT.V_SCROLL);

-			fMemberTable.addSelectionListener(

-				new SelectionAdapter() {

-					public void widgetSelected(SelectionEvent e) {

-						handleMemberSelect(e.item);

-					}

-				}

-			);

-			

-			fMemberPane.setContent(fMemberTable);

-			

-			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 CompareUIPlugin.findStructureViewer(oldViewer, (ICompareInput)input, this, fCompareConfiguration);

-						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.NONE) {

-			protected Viewer getViewer(Viewer oldViewer, Object input) {

-				return CompareUIPlugin.findContentViewer(oldViewer, input, this, fCompareConfiguration);	

-			}

-		};

-		vsplitter.setWeights(new int[] { 30, 70 });

-				

-		return vsplitter;

-	}

-	

-	/* (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.

-	 */

-	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 void handleDefaultSelected() {

-//		if (fSelectedItem != null)

-//			okPressed();

-//	}

-	

-	private static void internalSort(IModificationDate[] keys, int left, int right) { 

-	

-		int original_left= left;

-		int original_right= right;

-		

-		IModificationDate mid= keys[(left + right) / 2]; 

-		do { 

-			while (keys[left].getModificationDate() > mid.getModificationDate())

-				left++; 

-			

-			while (mid.getModificationDate() > keys[right].getModificationDate())

-				right--; 

-		

-			if (left <= right) { 

-				IModificationDate tmp= keys[left]; 

-				keys[left]= keys[right]; 

-				keys[right]= tmp;			

-				left++; 

-				right--; 

-			} 

-		} while (left <= right);

-		

-		if (original_left < right)

-			internalSort(keys, original_left, right); 

-		

-		if (left < original_right)

-			internalSort(keys, left, original_right); 

-	}

-	

-	/**

-	 * 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) {

-					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();

-		

-		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= (ITypedElement)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);

-			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);

-		if (first) {

-			fEditionTree.setSelection(new TreeItem[] {ti});

-			if (!fAddMode)

-				fEditionTree.setFocus();

-			feedInput(ti);

-		}

-		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) {

-				setInput(fSelectedItem);

-				fContentPane.setText(editionLabel);

-				fContentPane.setImage(editionImage);

-			} else {

-				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)

-			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 98ddbb7..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-import java.io.InputStream;

-import java.io.BufferedInputStream;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.core.resources.IFileState;

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.compare.*;

-

-/**

- * 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 IStreamContentAccessor, ITypedElement, IModificationDate {

-	

-	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());

-	}

-}

-

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 095f52f..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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 bc62b5a..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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 0af2c91..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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 a child,

-	 * - remove a child,

-	 * - copy the contents of a child

-	 * 

-	 * What to do is encoded in the two arguments as follows:

-	 * add:	child == null		other != null

-	 * remove:	child != null		other == null

-	 * copy:	child != null		other != null

-	 */

-	ITypedElement replace(ITypedElement child, ITypedElement other);

-}

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 98f9364..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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 447f227..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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 fee4741..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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/ITypedElement.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
deleted file mode 100644
index e914a57..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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. 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.

-	 */

-	public static final String TEXT_TYPE= "txt"; //$NON-NLS-1$

-

-	/**

-	 * Type for an element whose actual type could not

-	 * be determined.

-	 */

-	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 c6f60e7..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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/ResourceNode.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
deleted file mode 100644
index 6c488a1..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-import java.io.*;

-import java.util.ArrayList;

-import java.util.Iterator;

-

-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.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 IStructureComparator, ITypedElement, IEditableContent, IModificationDate {

-			

-	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.

-	 */

-	/* (non Javadoc)

-	 * see IStructureComparator.equals

-	 */

-	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.

-	 */

-	/* (non Javadoc)

-	 * see IStructureComparator.hashCode

-	 */

-	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) {

-				}

-			}

-		}

-		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)

-			return new BufferedInputStream(((IStorage)fResource).getContents());

-		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;

-	}

-}

-

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 902d5dc..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-import java.io.*;

-import java.util.Iterator;

-import java.util.HashMap;

-import java.util.zip.*;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.compare.internal.Utilities;

-

-

-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) {

-				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) {

-				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;

-

-	public ZipFileStructureCreator() {

-		this(Utilities.getString("ZipStructureCreator.name")); //$NON-NLS-1$

-	}

-	

-	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) {

-			}

-		}

-

-		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) {

-			}

-		}

-

-		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.

-	 */

-	public boolean canSave() {

-		return false;

-	}

-

-	/**

-	 * Throws <code>AssertionFailedException</code> since we cannot update a zip archive.

-	 */

-	public void save(IStructureComparator structure, Object input) {

-		Assert.isTrue(false); // Cannot update zip archive

-	}

-	

-	public IStructureComparator locate(Object path, Object source) {

-		return null;

-	}

-	

-	public boolean canRewriteTree() {

-		return false;

-	}

-	

-	public void rewriteTree(Differencer diff, IDiffContainer root) {

-	}

-}

-

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 987d42c..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
+++ /dev/null
@@ -1,912 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.jface.util.*;

-import org.eclipse.jface.action.*;

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.resource.ImageDescriptor;

-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.contentmergeviewer.IMergeViewerContentProvider;

-import org.eclipse.compare.contentmergeviewer.TextMergeViewer;

-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 {

-	

-	class SaveAction extends MergeViewerAction {

-		

-		private boolean fLeft;

-		

-		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;

-		

-		public Resizer(Control c, int dir) {

-			fDirection= dir;

-			fControl= c;

-			fControl.addMouseListener(this);

-			fLiveResize= !(fControl instanceof Sash);

-			

-			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;

-			fControl.addMouseMoveListener(this);

-		}

-		

-		public void mouseUp(MouseEvent e) {

-			fControl.removeMouseMoveListener(this);

-			if (!fLiveResize)

-				resize(e);

-		}

-		

-		public void mouseMove(MouseEvent e) {

-			if (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;

-

-	// 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;

-	//---- end

-	

-	/**

-	 * Creates a new content merge viewer and initializes with a resource bundle and a

-	 * configuration.

-	 *

-	 * @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);

-			}

-		};

-		

-		fPropertyChangeListener= new IPropertyChangeListener() {

-			public void propertyChange(PropertyChangeEvent event) {

-				ContentMergeViewer.this.propertyChange(event);

-			}

-		};

-		

-		fCompareConfiguration= cc;

-		if (fCompareConfiguration != null)

-			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) {

-	}

-

-	/**

-	 * 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>.

-	 */

-	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.

-	 */

-	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 s, boolean reveal) {

-	}

-

-	/* package */ void propertyChange(PropertyChangeEvent event) {

-		

-		String key= event.getProperty();

-

-		if (key.equals(ANCESTOR_ENABLED)) {

-			fAncestorEnabled= Utilities.getBoolean(getCompareConfiguration(), ANCESTOR_ENABLED, fAncestorEnabled);

-			fComposite.layout(true);

-			return;

-		}

-	}

-	

-	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 retrieves the content from the three sides by calling the methods

-	 * <code>getAncestorContent</code>, <code>getLeftContent</code>,

-	 * and <code>getRightContent</code> on the content provider.

-	 * The values returned from these calls are passed to the hook method <code>updateContent</code>.

-	 * </p>

-	 *

-	 * @param input the new input of this viewer, or <code>null</code> if none

-	 * @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);

-		

-		// 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,

-						IDialogConstants.CANCEL_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);

-		}

-			

-		if (input != oldInput)

-			if (input instanceof ICompareInput)

-				((ICompareInput)input).addCompareInputChangeListener(fCompareInputChangeListener);

-		

-		setLeftDirty(false);

-		setRightDirty(false);

-

-		if (input != oldInput)

-			internalRefresh(input);

-	}

-	

-	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= CompareViewerSwitchingPane.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);

-						

-		ToolBarManager tbm= CompareViewerSwitchingPane.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$

-			}

-			

-			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$

-			}

-			

-			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) {

-		

-		Object input= getInput();	

-		if (input instanceof ICompareInput)

-			((ICompareInput)input).removeCompareInputChangeListener(fCompareInputChangeListener);

-		

-		if (fCompareConfiguration != null)

-			fCompareConfiguration.removePropertyChangeListener(fPropertyChangeListener);

-

-		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;

-		}

-		

-		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 modified content back to input elements via the content provider.

-	 */

-	/* package */ void saveContent(Object oldInput) {

-				

-		// write back modified contents

-		IMergeViewerContentProvider content= (IMergeViewerContentProvider) getContentProvider();

-		

-		if (fCompareConfiguration.isLeftEditable() && fLeftSaveAction.isEnabled()) {

-			byte[] bytes= getContents(true);

-			setLeftDirty(false);

-			content.saveLeftContent(oldInput, bytes);

-		}

-		

-		if (fCompareConfiguration.isRightEditable() && fRightSaveAction.isEnabled()) {

-			byte[] bytes= getContents(false);

-			setRightDirty(false);

-			content.saveRightContent(oldInput, bytes);

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java
deleted file mode 100644
index 1f7d6d2..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package org.eclipse.compare.contentmergeviewer;

-

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.core.runtime.IProgressMonitor;

-import java.lang.reflect.InvocationTargetException;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.operation.ModalContext;

-import org.eclipse.jface.dialogs.ProgressMonitorDialog;

-

-

-class DelayedProgressMonitor implements IProgressMonitor {

-	

-	ProgressMonitorDialog fProgressDialog;

-	IProgressMonitor fRealProgressMonitor;

-	String fTaskName;

-	String fSubTaskName;

-	int fTotalWork;

-	int fWorked;

-	boolean fCancelable;

-	Shell fShell;

-	int fTime;

-	

-	

-	DelayedProgressMonitor(Shell shell) {

-		fShell= shell;

-	}

-

-	/*

-	 * @see IProgressMonitor#beginTask(String, int)

-	 */

-	public void beginTask(String name, int totalWork) {

-		fTaskName= name;

-		fTotalWork= totalWork;

-		fTime= 0;

-	}

-

-	/*

-	 * @see IProgressMonitor#done()

-	 */

-	public void done() {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.done();

-	}

-

-	/*

-	 * @see IProgressMonitor#internalWorked(double)

-	 */

-	public void internalWorked(double work) {

-		if (fRealProgressMonitor != null) {

-			fRealProgressMonitor.internalWorked(work);

-		}

-	}

-	

-	private void checkTimeout() {

-		if (fRealProgressMonitor == null) {

-			

-			//if (fTime++ < 100)

-			//	return;

-			

-			fProgressDialog= new ProgressMonitorDialog(fShell);

-			fProgressDialog.setCancelable(true);

-			fProgressDialog.open();

-			fRealProgressMonitor= fProgressDialog.getProgressMonitor();

-			fRealProgressMonitor.beginTask(fTaskName, fTotalWork);

-			if (fSubTaskName != null)

-				fRealProgressMonitor.subTask(fSubTaskName);

-			fRealProgressMonitor.worked(fWorked);

-		}

-	}

-

-	/*

-	 * @see IProgressMonitor#isCanceled()

-	 */

-	public boolean isCanceled() {

-		checkTimeout();

-		if (fRealProgressMonitor != null)

-			return fRealProgressMonitor.isCanceled();

-		return false;

-	}

-

-	/*

-	 * @see IProgressMonitor#setCanceled(boolean)

-	 */

-	public void setCanceled(boolean value) {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.setCanceled(value);

-		else

-			fCancelable= value;

-	}

-

-	/*

-	 * @see IProgressMonitor#setTaskName(String)

-	 */

-	public void setTaskName(String name) {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.setTaskName(name);

-		else

-			fTaskName= name;

-	}

-

-	/*

-	 * @see IProgressMonitor#subTask(String)

-	 */

-	public void subTask(String name) {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.subTask(name);

-		else

-			fSubTaskName= name;

-	}

-

-	/*

-	 * @see IProgressMonitor#worked(int)

-	 */

-	public void worked(int work) {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.internalWorked(work);

-		else {

-			fWorked+= work;

-			checkTimeout();

-		}

-	}

-	

-	public static void run(Shell shell, boolean fork, boolean cancelable, IRunnableWithProgress runnable)

-						throws InvocationTargetException, InterruptedException {

-		

-		DelayedProgressMonitor pm= new DelayedProgressMonitor(shell);

-		pm.checkTimeout();

-		try {

-			ModalContext.run(runnable, fork, pm, shell.getDisplay());

-		} finally {

-			if (pm.fProgressDialog != null)

-				pm.fProgressDialog.close();

-		}

-	}

-}

-

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 a176323..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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 {

-	

-	/**

-	 * 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 2f75e91..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.

-	 *

-	 * @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 9035817..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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 9d894a9..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
+++ /dev/null
@@ -1,2706 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.io.InputStream;

-import java.io.IOException;

-import java.text.MessageFormat;

-import java.lang.InterruptedException;

-

-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.FontData;

-import org.eclipse.swt.graphics.Font;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.*;

-import org.eclipse.swt.custom.*;

-

-import org.eclipse.jface.action.*;

-import org.eclipse.jface.text.*;

-import org.eclipse.jface.text.source.SourceViewer;

-import org.eclipse.jface.util.PropertyChangeEvent;

-import org.eclipse.jface.util.IPropertyChangeListener;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.preference.IPreferenceStore;

-import org.eclipse.jface.preference.PreferenceConverter;

-import org.eclipse.jface.dialogs.MessageDialog;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.ui.texteditor.IUpdate;

-import org.eclipse.ui.IActionBars;

-import org.eclipse.ui.IWorkbenchActionConstants;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.MergeSourceViewer;

-import org.eclipse.compare.internal.BufferedCanvas;

-import org.eclipse.compare.internal.Utilities;

-import org.eclipse.compare.internal.TokenComparator;

-import org.eclipse.compare.internal.ChangePropertyAction;

-import org.eclipse.compare.internal.CompareEditor;

-import org.eclipse.compare.internal.DocLineComparator;

-import org.eclipse.compare.internal.ComparePreferencePage;

-import org.eclipse.compare.internal.CompareUIPlugin;

-import org.eclipse.compare.internal.MergeViewerAction;

-import org.eclipse.compare.internal.INavigatable;

-import org.eclipse.compare.internal.CompareNavigator;

-import org.eclipse.compare.internal.TimeoutContext;

-import org.eclipse.compare.rangedifferencer.*;

-import org.eclipse.compare.structuremergeviewer.Differencer;

-

-/**

- * 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 String[] GLOBAL_ACTIONS= {

-		IWorkbenchActionConstants.UNDO,

-		IWorkbenchActionConstants.REDO,

-		IWorkbenchActionConstants.CUT,

-		IWorkbenchActionConstants.COPY,

-		IWorkbenchActionConstants.PASTE,

-		IWorkbenchActionConstants.DELETE,

-		IWorkbenchActionConstants.SELECT_ALL,

-	};

-	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,

-	};

-		

-	private static final String MY_UPDATER= "my_updater"; //$NON-NLS-1$

-	

-	private static final String SYNC_SCROLLING= "SYNC_SCROLLING"; //$NON-NLS-1$

-	

-	private static final String TEXT_FONT= ComparePreferencePage.TEXT_FONT;

-	

-	private static final String BUNDLE_NAME= "org.eclipse.compare.contentmergeviewer.TextMergeViewerResources"; //$NON-NLS-1$

-		

-	// constants

-	/** Width of left and right vertical bar */

-	private static final int MARGIN_WIDTH= 10;

-	/** Width of center bar */

-	private static final int CENTER_WIDTH= 40;

-	/** */

-	private static final int LW= 1;

-	/** Provide more merge controls in CompareViewerPane toolbar */

-	private static final boolean USE_MORE_CONTROLS= true;

-	/** Selects between smartTokenDiff and mergingTokenDiff */

-	private static final boolean USE_MERGING_TOKEN_DIFF= false;

-	/** if DEAD_STEP is true navigation with the next/previous buttons needs an extra step 

-	when wrapping around the beginning or end */

-	private static final boolean DEAD_STEP= false;

-	/** When calculating differences show Progress after this timeout (in milliseconds) */

-	private static final int TIMEOUT= 2000;

-		

-	// 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 to use

-	private static final RGB INCOMING= new RGB(100, 100, 200);

-	private static final RGB INCOMING_FILL= new RGB(230, 230, 240);

-	private static final RGB SELECTED_INCOMING= new RGB(0, 0, 255);

-	private static final RGB SELECTED_INCOMING_FILL= new RGB(255, 255, 255);

-	

-	private static final RGB CONFLICT= new RGB(200, 100, 100);

-	private static final RGB CONFLICT_FILL= new RGB(240, 230, 230);

-	private static final RGB SELECTED_CONFLICT= new RGB(255, 0, 0);

-	private static final RGB SELECTED_CONFLICT_FILL= new RGB(255, 255, 255);

-	

-	private static final RGB OUTGOING= new RGB(100, 100, 100);

-	private static final RGB OUTGOING_FILL= new RGB(230, 230, 230);

-	private static final RGB SELECTED_OUTGOING= new RGB(0, 0, 0);

-	private static final RGB SELECTED_OUTGOING_FILL= new RGB(255, 255, 255);

-	

-//	private static final RGB INCOMING= new RGB(230, 230, 240);

-//	private static final RGB INCOMING_FILL= new RGB(250, 250, 255);

-//	private static final RGB SELECTED_INCOMING= new RGB(0, 0, 255);

-//	private static final RGB SELECTED_INCOMING_FILL= new RGB(255, 255, 255);

-//	

-//	private static final RGB CONFLICT= new RGB(240, 230, 230);

-//	private static final RGB CONFLICT_FILL= new RGB(255, 250, 250);

-//	private static final RGB SELECTED_CONFLICT= new RGB(255, 0, 0);

-//	private static final RGB SELECTED_CONFLICT_FILL= new RGB(255, 255, 255);

-//	

-//	private static final RGB OUTGOING= new RGB(230, 230, 230);

-//	private static final RGB OUTGOING_FILL= new RGB(250, 250, 250);

-//	private static final RGB SELECTED_OUTGOING= new RGB(0, 0, 0);

-//	private static final RGB SELECTED_OUTGOING_FILL= new RGB(255, 255, 255);

-

-	private IDocumentListener fDocumentListener;

-	

-	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 MergeSourceViewer fAncestor;

-	private MergeSourceViewer fLeft;

-	private MergeSourceViewer fRight;

-	

-	private int fLeftLineCount;

-	private int fRightLineCount;

-	

-	private boolean fLeftContentsChanged;

-	private boolean fRightContentsChanged;

-

-	private boolean fInScrolling;

-	

-	private int fPts[]= new int[8];	// scratch area for polygon drawing

-	

-	//PR1GI3HDZ

-	private boolean fIgnoreAncestor= false;

-	private ActionContributionItem fIgnoreAncestorItem;

-	//end PR1GI3HDZ

-

-	private ActionContributionItem fNextItem;	// goto next difference

-	private ActionContributionItem fPreviousItem;	// goto previous difference

-	private ActionContributionItem fCopyDiffLeftToRightItem;

-	private ActionContributionItem fCopyDiffRightToLeftItem;

-	

-	private boolean fSynchronizedScrolling= true;

-	

-	private MergeSourceViewer fFocusPart;

-	

-	private boolean fSubDoc= true;

-	private IPositionUpdater fPositionUpdater;

-	private boolean fIsMotif;	

-

-	// SWT widgets

-	private BufferedCanvas fAncestorCanvas;

-	private BufferedCanvas fLeftCanvas;

-	private BufferedCanvas fRightCanvas;

-	private Canvas fScrollCanvas;

-	private ScrollBar fVScrollBar;

-		

-	// SWT resources to be disposed

-	private Map fColors;

-	private Font fFont;

-

-

-	/**

-	 * 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;

-

-		/**

-		 * Create Diff from two ranges and an optional parent diff.

-		 */

-		Diff(Diff parent, int dir, IDocument ancestorDoc, int ancestorStart, int ancestorEnd,

-							 IDocument leftDoc, int leftStart, int leftEnd,

-							 IDocument rightDoc, int rightStart, int rightEnd) {

-			fParent= parent != null ? parent : this;

-			fDirection= dir;

-			

-			fLeftPos= createPosition(leftDoc, leftStart, leftEnd);

-			fRightPos= createPosition(rightDoc, rightStart, rightEnd);

-			if (ancestorDoc != null)

-				fAncestorPos= createPosition(ancestorDoc, ancestorStart, ancestorEnd);

-		}

-		

-		String changeType() {

-			boolean leftEmpty= fLeftPos.length == 0;

-			boolean rightEmpty= fRightPos.length == 0;

-			

-			if (fDirection == RangeDifference.LEFT) {

-				if (!leftEmpty && rightEmpty)

-					return "addition";

-				if (leftEmpty && !rightEmpty)

-					return "deletion";

-			} else {

-				if (leftEmpty && !rightEmpty)

-					return "addition";

-				if (!leftEmpty && rightEmpty)

-					return "deletion";

-			}

-			return "change";

-		}

-		

-		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, int start, int end) {

-			try {

-				int dl= doc.getLength();

-				int l= end-start;

-				if (start+l > dl)

-					l= dl-start;

-					

-				Position p= null;

-				try {

-					p= new Position(start, l);

-				} catch (RuntimeException ex) {

-					//System.out.println("Diff.createPosition: " + start + " " + l);

-				}

-				

-				try {

-					doc.addPosition(MY_UPDATER, p);

-				} catch (BadPositionCategoryException ex) {

-				}

-				return p;

-			} catch (BadLocationException ee) {

-				//System.out.println("Diff.createPosition: " + start + " " + end);

-			}

-			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;

-		}

-

-		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 contains(MergeSourceViewer w, int start, int end) {

-			Position h= getPosition(w);

-			if (h != null) {

-				int offset= h.getOffset();

-				if (start >= offset) {

-					int endPos= offset+h.getLength();

-					if (end < endPos)

-						return true;

-					if (endPos == w.getDocument().getLength())

-						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);

-		}

-	}

-

-	//---- 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);

-		

-		String platform= SWT.getPlatform();

-		fIsMotif= "motif".equals(platform); //$NON-NLS-1$

-		

-		if (fIsMotif)

-			fMarginWidth= 0;

-				

-		IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-		if (ps != null) {

-			fPreferenceChangeListener= new IPropertyChangeListener() {

-				public void propertyChange(PropertyChangeEvent event) {

-					TextMergeViewer.this.propertyChange(event);

-				}

-			};

-			ps.addPropertyChangeListener(fPreferenceChangeListener);

-			

-			updateFont(ps, parent);

-			fLeftIsLocal= Utilities.getBoolean(configuration, "LEFT_IS_LOCAL", false); //$NON-NLS-1$

-			fSynchronizedScrolling= ps.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);

-		}

-		

-		fDocumentListener= new IDocumentListener() {

-			

-			public void documentAboutToBeChanged(DocumentEvent e) {

-			}

-			

-			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);

-	}

-	

-	private void updateFont(IPreferenceStore ps, Control c) {

-		

-		Font oldFont= fFont;

-		

-		FontData fontData= null;

-		if (ps.contains(TEXT_FONT) && !ps.isDefault(TEXT_FONT))

-			fontData= PreferenceConverter.getFontData(ps, TEXT_FONT);

-		else

-			fontData= PreferenceConverter.getDefaultFontData(ps, TEXT_FONT);

-		if (fontData != null) {

-			fFont= new Font(c.getDisplay(), fontData);

-			

-			if (fAncestor != null)

-				fAncestor.setFont(fFont);

-			if (fLeft != null)

-				fLeft.setFont(fFont);

-			if (fRight != null)

-				fRight.setFont(fFont);

-				

-			if (oldFont != null)

-				oldFont.dispose();

-		}

-	}

-	

-	/**

-	 * 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) {

-	}

-				

-	/**

-	 * 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.

-	 *

-	 * @return a ITokenComparator which is used for a second level token compare.

-	 */

-	protected ITokenComparator createTokenComparator(String s) {

-		return new TokenComparator(s);

-	}

-	

-	/**

-	 * 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.

-	 */

-	protected void handleDispose(DisposeEvent event) {

-		

-		if (fPreferenceChangeListener != null) {

-			IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-			if (ps != null)

-				ps.removePropertyChangeListener(fPreferenceChangeListener);

-			fPreferenceChangeListener= null;

-		}

-		

-		fLeftCanvas= null;

-		fRightCanvas= null;

-		fVScrollBar= 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();

-			}

-		}

-		

-		if (fFont != null) {

-			fFont.dispose();

-			fFont= 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) {

-		

-		// 1st row

-		if (fMarginWidth > 0) {

-			fAncestorCanvas= new BufferedCanvas(composite, SWT.NONE) {

-				public void doPaint(GC gc) {

-					paintSides(gc, fAncestor, fAncestorCanvas, false);

-				}

-			};

-		}

-									

-		fAncestor= createPart(composite);

-		fAncestor.setEditable(false);

-		

-		// 2nd row

-		if (fMarginWidth > 0) {

-			fLeftCanvas= new BufferedCanvas(composite, SWT.NONE) {

-				public void doPaint(GC gc) {

-					paintSides(gc, fLeft, fLeftCanvas, 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);

-		

-		if (fMarginWidth > 0) {

-			fRightCanvas= new BufferedCanvas(composite, SWT.NONE) {

-				public void doPaint(GC gc) {

-					paintSides(gc, fRight, fRightCanvas, fSynchronizedScrolling);

-				}

-			};

-		}

-		

-		fScrollCanvas= new Canvas(composite, SWT.V_SCROLL);

-		Rectangle trim= fScrollCanvas.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) {

-					scrollVertical(((ScrollBar)e.widget).getSelection(), null);

-				}

-			}

-		);

-	}

-	

-	/**

-	 * 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

-	}

-	

-	/**

-	 * 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);

-				}

-			};

-			CompareNavigator.hookNavigation(canvas);

-			new Resizer(canvas, HORIZONTAL);

-			return canvas;

-		}

-		return super.createCenter(parent);

-	}

-	

-	/**

-	 * 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);

-					CompareNavigator.handleNavigationKeys(e);

-				}

-			}

-		);

-		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);

-				}

-			}

-		);

-		

-		if (fFont != null)

-			te.setFont(fFont);

-		

-		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]);

-				actionBars.setGlobalActionHandler(GLOBAL_ACTIONS[i], action);

-			}

-			actionBars.updateActionBars();

-		}

-	}

-

-	/**

-	 * 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);

-

-		// clear stuff

-		fCurrentDiff= null;

-	 	fChangeDiffs= null;

-		fAllDiffs= null;

-		

-		fLeftContentsChanged= false;

-		fRightContentsChanged= false;

-		

-		CompareConfiguration cc= getCompareConfiguration();

-		IMergeViewerContentProvider cp= getMergeContentProvider();

-		

-		boolean rightEditable= cc.isRightEditable() && cp.isRightEditable(getInput());

-		boolean leftEditable= cc.isLeftEditable() && cp.isLeftEditable(getInput());

-		

-		fRight.setEditable(rightEditable);

-		fLeft.setEditable(leftEditable);

-																			

-		// set new documents

-		setDocument(fLeft, left);

-		fLeftLineCount= fLeft.getLineCount();

-

-		setDocument(fRight, right);

-		fRightLineCount= fRight.getLineCount();

-		

-		setDocument(fAncestor, ancestor);

-		

-		doDiff();

-				

-		invalidateLines();

-		updateVScrollBar();

-		

-		if (!emptyInput && !fComposite.isDisposed()) {

-			// delay so that StyledText widget gets a chance to resize itself

-			// (otherwise selectFirstDiff would not know its visible area)

-			fComposite.getDisplay().asyncExec(

-				new Runnable() {

-					public void run() {

-						selectFirstDiff();

-					}

-				}

-			);

-		}

-	}

-	

-	private void updateDiffBackground(Diff diff) {

-		

-		if (diff == null || diff.fIsToken)

-			return;

-			

-		if (fShowCurrentOnly && !isCurrentDiff(diff))

-			return;

-						

-		Color c= getColor(getFillColor(diff));

-		if (c == null)

-			return;

-			

-		if (isThreeWay())

-			fAncestor.setLineBackground(diff.fAncestorPos, c);

-		fLeft.setLineBackground(diff.fLeftPos, c);

-		fRight.setLineBackground(diff.fRightPos, c);

-	}

-	

-	private void unsetDocument(MergeSourceViewer tp) {

-		IDocument oldDoc= tp.getDocument();

-		if (oldDoc != null) {	// deinstall old positions

-			if (fPositionUpdater != null)

-				oldDoc.removePositionUpdater(fPositionUpdater);

-			try {

-				oldDoc.removePositionCategory(MY_UPDATER);

-			} catch (BadPositionCategoryException ex) {

-			}

-		}

-	}

-	

-	boolean isCurrentDiff(Diff diff) {

-		if (diff == null)

-			return false;

-		if (diff == fCurrentDiff)

-			return true;

-		if (fCurrentDiff != null && fCurrentDiff.fParent == diff)

-			return true;

-		return false;

-	}

-	

-	/**

-	 * Called whenver one of the documents changes.

-	 * Sets the dirty state of this viewer and updates the lines.

-	 * Implements IDocumentListener.

-	 */

-	private void documentChanged(DocumentEvent e) {

-		

-		IDocument doc= e.getDocument();

-		

-		if (doc == fLeft.getDocument()) {

-			fLeftContentsChanged= true;

-			setLeftDirty(true);

-		} else if (doc == fRight.getDocument()) {

-			setRightDirty(true);

-			fRightContentsChanged= true;

-		}

-

-		updateLines(doc);

-	}

-	

-	/**

-	 * Returns true if a new Document could be installed.

-	 */

-	private boolean setDocument(MergeSourceViewer tp, Object o) {

-		

-		if (tp == null)

-			return false;

-				

-		IDocument newDoc= null;

-		

-		if (o instanceof IDocumentRange) {

-			newDoc= ((IDocumentRange)o).getDocument();

-

-		} else if (o instanceof Document) {

-			newDoc= (Document) o;

-			

-		} else if (o instanceof IStreamContentAccessor) {

-			IStreamContentAccessor sca= (IStreamContentAccessor) o;

-			if (sca != null) {

-				String s= null;

-				

-				try {

-					s= Utilities.readString(sca.getContents());

-				} catch (CoreException ex) {

-				}

-

-				newDoc= new Document(s != null ? s : ""); //$NON-NLS-1$

-				IDocumentPartitioner partitioner= getDocumentPartitioner();

-				if (partitioner != null) {

-					newDoc.setDocumentPartitioner(partitioner);

-					partitioner.connect(newDoc);

-				}

-			}

-		}

-

-		boolean enabled= true;

-		if (newDoc == null) {

-			newDoc= new Document(""); //$NON-NLS-1$

-			enabled= false;

-		}

-		

-		IDocument oldDoc= tp.getDocument();

-		

-		unsetDocument(tp);

-		

-		if (newDoc != null) {

-			newDoc.addPositionCategory(MY_UPDATER);

-			if (fPositionUpdater == null)

-				fPositionUpdater= new DefaultPositionUpdater(MY_UPDATER);

-			newDoc.addPositionUpdater(fPositionUpdater);

-		}

-		

-		if (newDoc != oldDoc) {	// new document

-			

-			// deinstall old document

-			if (oldDoc != null)

-				oldDoc.removeDocumentListener(fDocumentListener);

-			

-			// install new document

-			if (newDoc != null) {

-						

-				Position range= null;

-				if (o instanceof IDocumentRange)

-					range= ((IDocumentRange) o).getRange();

-					

-				tp.setRegion(range);

-				if (fSubDoc) {

-					if (range != null) {

-						IRegion r= normalizeDocumentRegion(newDoc, toRegion(range));

-						tp.setDocument(newDoc, r.getOffset(), r.getLength());

-					} else

-						tp.setDocument(newDoc);

-				} else

-					tp.setDocument(newDoc);

-								

-				newDoc.addDocumentListener(fDocumentListener);

-			}

-			

-		} else {	// just different range

-			

-			Position range= null;

-			if (o instanceof IDocumentRange)

-				range= ((IDocumentRange) o).getRange();

-				

-			tp.setRegion(range);

-			if (fSubDoc) {

-				if (range != null) {

-					IRegion r= normalizeDocumentRegion(tp.getDocument(), toRegion(range));

-					tp.setVisibleRegion(r.getOffset(), r.getLength());

-				}

-			}			

-		}

-		

-		tp.setEnabled(enabled);

-

-		return enabled;

-	}

-	

-	/**

-	 * Returns the contents of the underlying document as an array of bytes.

-	 * 

-	 * @param left if <code>true</code> the contents of the left side is returned; otherwise the right side

-	 * @return the contents of the left or right document

-	 */

-	protected byte[] getContents(boolean left) {

-		

-		if (left) {

-			//if (fLeftContentsChanged)	// TRY

-				return fLeft.getDocument().get().getBytes();

-		} else {

-			//if (fRightContentsChanged)	// TRY

-				return fRight.getDocument().get().getBytes();

-		}

-		//return null;

-	}

-				

-	private IRegion normalizeDocumentRegion(IDocument doc, IRegion region) {

-		

-		if (region == null || doc == null)

-			return region;

-			

-		int maxLength= doc.getLength();

-		

-		int start= region.getOffset();

-		if (start < 0)

-			start= 0;

-		else if (start > maxLength)

-			start= maxLength;

-			

-		int length= region.getLength();

-		if (length < 0)

-			length= 0;

-		else if (start + length > maxLength)

-			length= maxLength - start;

-			

-		return new Region(start, length);

-	}

-		

-	protected final void handleResizeAncestor(int x, int y, int width, int height) {

-		if (width > 0) {

-			Rectangle trim= fLeft.getTextWidget().computeTrim(0, 0, 0, 0);

-			int scrollbarHeight= trim.height;

-			if (Utilities.okToUse(fAncestorCanvas))

-				fAncestorCanvas.setVisible(true);

-			if (fAncestor.isControlOkToUse())

-				fAncestor.getTextWidget().setVisible(true);

-			

-			if (fAncestorCanvas != null) {

-				fAncestorCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);

-				x+= fMarginWidth;

-				width-= fMarginWidth;

-			}

-			fAncestor.getTextWidget().setBounds(x, y, width, height);

-		} else {

-			if (Utilities.okToUse(fAncestorCanvas))

-				fAncestorCanvas.setVisible(false);

-			if (fAncestor.isControlOkToUse()) {

-				StyledText t= fAncestor.getTextWidget();

-				t.setVisible(false);

-				t.setBounds(0, 0, 0, 0);

-				if (fFocusPart == fAncestor) {

-					fFocusPart= fLeft;

-					fFocusPart.getTextWidget().setFocus();

-				}

-			}

-		}

-	}

-

-	/**

-	 * Lays out everything.

-	 */

-  	protected final void handleResizeLeftRight(int x, int y, int width1, int centerWidth, int width2,  int height) {

-  				

-		Rectangle trim= fLeft.getTextWidget().computeTrim(0, 0, 0, 0);

-		int scrollbarHeight= trim.height;

-		Composite composite= (Composite) getControl();

-

-		int leftTextWidth= width1;

-		if (fLeftCanvas != null) {

-			fLeftCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);

-			x+= fMarginWidth;

-			leftTextWidth-= fMarginWidth;

-		}

-		

-		fLeft.getTextWidget().setBounds(x, y, leftTextWidth, height);

-		x+= leftTextWidth;

-		

-		if (fCenter == null || fCenter.isDisposed())

-			fCenter= createCenter(composite);

-		fCenter.setBounds(x, y, centerWidth, height-scrollbarHeight);

-		x+= centerWidth;

-		

-		if (!fSynchronizedScrolling) {	// canvas is to the left of text

-			if (fRightCanvas != null) {

-				fRightCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);

-				fRightCanvas.redraw();

-				x+= fMarginWidth;

-			}

-			// we draw the canvas to the left of the text widget

-		}

-		

-		int scrollbarWidth= 0;

-		if (fSynchronizedScrolling && fScrollCanvas != null)

-			scrollbarWidth= fScrollCanvas.computeTrim(0, 0, 0, 0).width;

-		int rightTextWidth= width2-scrollbarWidth;

-		if (fRightCanvas != null)

-			rightTextWidth-= fMarginWidth;

-		fRight.getTextWidget().setBounds(x, y, rightTextWidth, height);

-		x+= rightTextWidth;

-			

-		if (fSynchronizedScrolling) {

-			if (fRightCanvas != null) {	// canvas is to the right of the text

-				fRightCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);

-				x+= fMarginWidth;

-			}

-			if (fScrollCanvas != null)

-				fScrollCanvas.setBounds(x, y, scrollbarWidth, height-scrollbarHeight);

-		}

-		

-		// doesn't work since TextEditors don't have their correct size yet.

-		updateVScrollBar(); 

-	}

-							

-	/**

-	 * Track selection changes to update the current Diff.

-	 */

-	private void handleSelectionChanged(MergeSourceViewer tw) {

-		Point p= tw.getSelectedRange();

-		Diff d= findDiff(tw, p.x, p.x+p.y);

-		updateStatus(d);

-		setCurrentDiff(d, false);	// don't select or reveal

-	}

-

-	private static IRegion toRegion(Position position) {

-		if (position != null)

-			return new Region(position.getOffset(), position.getLength());

-		return null;

-	}

-	

-	//---- the differencing

-	

-	private static int maxWork(IRangeComparator a, IRangeComparator l, IRangeComparator r) {

-		int ln= l.getRangeCount();

-		int rn= r.getRangeCount();

-		if (a != null) {

-			int an= a.getRangeCount();

-			return (2 * Math.max(an, ln)) + (2 * Math.max(an, rn));

-		}

-		return 2 * Math.max(ln, rn);

-	}

-	

-	/**

-	 * Perform a two level 2- or 3-way diff.

-	 * The first level is based on line comparison, the second level on token comparison.

-	 */

-	private void doDiff() {

-						

-		fAllDiffs= new ArrayList();

-		fChangeDiffs= new ArrayList();

-		fCurrentDiff= null;

-		

-		IDocument aDoc= null;

-		IDocument lDoc= fLeft.getDocument();

-		IDocument rDoc= fRight.getDocument();

-		if (lDoc == null || rDoc == null)

-			return;

-			

-		Position aRegion= null;

-		Position lRegion= fLeft.getRegion();

-		Position rRegion= fRight.getRegion();

-				

-		boolean threeWay= isThreeWay();

-		

-		if (threeWay && !fIgnoreAncestor) {

-			aDoc= fAncestor.getDocument();

-			aRegion= fAncestor.getRegion();

-		}

-		

-		fAncestor.resetLineBackground();

-		fLeft.resetLineBackground();

-		fRight.resetLineBackground();

-		

-		boolean ignoreWhiteSpace= Utilities.getBoolean(getCompareConfiguration(), CompareConfiguration.IGNORE_WHITESPACE, false);		

-		

-		DocLineComparator sright= new DocLineComparator(rDoc, toRegion(rRegion), ignoreWhiteSpace);

-		DocLineComparator sleft= new DocLineComparator(lDoc, toRegion(lRegion), ignoreWhiteSpace);

-		DocLineComparator sancestor= null;

-		if (aDoc != null)

-			sancestor= new DocLineComparator(aDoc, toRegion(aRegion), ignoreWhiteSpace);

-			

-		if (!fSubDoc && rRegion != null && lRegion != null) {

-			// we have to add a diff for the ignored lines

-			

-			int astart= 0;

-			int as= 0;

-			if (aRegion != null) {

-				astart= aRegion.getOffset();

-				as= Math.max(0, astart-1);

-			}

-			int ys= Math.max(0, lRegion.getOffset()-1);

-			int ms= Math.max(0, rRegion.getOffset()-1);

-			

-			if (as > 0 || ys > 0 || ms > 0) {

-				Diff diff= new Diff(null, RangeDifference.NOCHANGE,

-					aDoc, 0, astart,

-					lDoc, 0, lRegion.getOffset(),

-					rDoc, 0, rRegion.getOffset());

-				fAllDiffs.add(diff);

-			}

-		}

-		

-		final ResourceBundle bundle= getResourceBundle();

-			

-		final Object[] result= new Object[1];

-		final DocLineComparator sa= sancestor, sl= sleft, sr= sright;

-		IRunnableWithProgress runnable= new IRunnableWithProgress() {

-			public void run(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {

-				String progressTitle= Utilities.getString(bundle, "compareProgressTask.title"); //$NON-NLS-1$

-				monitor.beginTask(progressTitle, maxWork(sa, sl, sr));

-				try {

-					result[0]= RangeDifferencer.findRanges(monitor, sa, sl, sr);

-				} catch (OutOfMemoryError ex) {

-					System.gc();

-					throw new InvocationTargetException(ex);

-				}

-				if (monitor.isCanceled())	{ // cancelled

-					throw new InterruptedException();

-				}

-				monitor.done();

-			}

-		};

-		

-		RangeDifference[] e= null;

-		try {

-			TimeoutContext.run(true, TIMEOUT, getControl().getShell(), runnable);

-			e= (RangeDifference[]) result[0];

-		} catch (InvocationTargetException ex) {

-			String title= Utilities.getString(bundle, "tooComplexError.title"); //$NON-NLS-1$

-			String format= Utilities.getString(bundle, "tooComplexError.format"); //$NON-NLS-1$

-			String msg= MessageFormat.format(format, new Object[] { Integer.toString(TIMEOUT/1000) } );

-			MessageDialog.openError(fComposite.getShell(), title, msg);

-			e= null;

-		} catch (InterruptedException ex) {

-			// 

-		}

-					

-		if (e == null) {

-			// we create a NOCHANGE range for the whole document

-			Diff diff= new Diff(null, RangeDifference.NOCHANGE,

-				aDoc, 0, aDoc != null ? aDoc.getLength() : 0,

-				lDoc, 0, lDoc.getLength(),

-				rDoc, 0, rDoc.getLength());	

-				

-			fAllDiffs.add(diff);

-		} else {

-			for (int i= 0; i < e.length; i++) {

-				String a= null, s= null, d= null;

-				RangeDifference es= e[i];

-				

-				int kind= es.kind();

-				

-				int ancestorStart= 0;

-				int ancestorEnd= 0;

-				if (sancestor != null) {

-					ancestorStart= sancestor.getTokenStart(es.ancestorStart());

-					ancestorEnd= getTokenEnd2(sancestor, es.ancestorStart(), es.ancestorLength());

-				}

-				

-				int leftStart= sleft.getTokenStart(es.leftStart());

-				int leftEnd= getTokenEnd2(sleft, es.leftStart(), es.leftLength());

-				

-				int rightStart= sright.getTokenStart(es.rightStart());

-				int rightEnd= getTokenEnd2(sright, es.rightStart(), es.rightLength());

-				

-				Diff diff= new Diff(null, kind,

-					aDoc, ancestorStart, ancestorEnd,

-					lDoc, leftStart, leftEnd,

-					rDoc, rightStart, rightEnd);	

-				

-				fAllDiffs.add(diff);	// remember all range diffs for scrolling

-		

-				if (ignoreWhiteSpace) {

-					if (sancestor != null)

-						a= extract2(aDoc, sancestor, es.ancestorStart(), es.ancestorLength());

-					s= extract2(lDoc, sleft, es.leftStart(), es.leftLength());

-					d= extract2(rDoc, sright, es.rightStart(), es.rightLength());

-				

-					if ((a == null || a.trim().length() == 0) && s.trim().length() == 0 && d.trim().length() == 0)

-						continue;

-				}

-		

-				if (kind != RangeDifference.NOCHANGE && kind != RangeDifference.ANCESTOR) {

-					fChangeDiffs.add(diff);	// here we remember only the real diffs

-					updateDiffBackground(diff);

-		

-					if (s == null)

-						s= extract2(lDoc, sleft, es.leftStart(), es.leftLength());

-					if (d == null)

-						d= extract2(rDoc, sright, es.rightStart(), es.rightLength());

-					

-					if (s.length() > 0 && d.length() > 0) {

-						if (a == null && sancestor != null)

-							a= extract2(aDoc, sancestor, es.ancestorStart(), es.ancestorLength());

-						if (USE_MERGING_TOKEN_DIFF)

-							mergingTokenDiff(diff, aDoc, a, rDoc, d, lDoc, s);

-						else

-							simpleTokenDiff(diff, aDoc, a, rDoc, d, lDoc, s);

-					}

-				}

-			}

-		}

-		

-		if (!fSubDoc && rRegion != null && lRegion != null) {

-			// we have to add a diff for the ignored lines

-			

-			int aEnd= 0;

-			int aLen= 0;

-			if (aRegion != null && aDoc != null) {

-				aEnd= aRegion.getOffset()+aRegion.getLength();

-				aLen= aDoc.getLength();

-			}

-			Diff diff= new Diff(null, RangeDifference.NOCHANGE,

-				aDoc, aEnd, aLen,

-				lDoc, lRegion.getOffset()+lRegion.getLength(), lDoc.getLength(),

-				rDoc, rRegion.getOffset()+rRegion.getLength(), rDoc.getLength());

-			fAllDiffs.add(diff);

-		}

-	}

-	

-	private int getTokenEnd(ITokenComparator tc, int start, int count) {

-		if (count <= 0)

-			return tc.getTokenStart(start);

-		int index= start + count - 1;

-		return tc.getTokenStart(index) + tc.getTokenLength(index);

-	}

-	

-	private static int getTokenEnd2(ITokenComparator tc, int start, int length) {

-		return tc.getTokenStart(start + length);

-	}

-

-	/**

-	 * Returns the content of lines in the specified range as a String.

-	 * This includes the line separators.

-	 *

-	 * @param doc the document from which to extract the characters

-	 * @param start index of first line

-	 * @param length number of lines

-	 * @return the contents of the specified line range as a String

-	 */

-	private String extract2(IDocument doc, ITokenComparator tc, int start, int length) {

-		int count= tc.getRangeCount();

-		if (length > 0 && count > 0) {

-			

-//			

-//			int startPos= tc.getTokenStart(start);

-//			int endPos= startPos;

-//			

-//			if (length > 1)

-//				endPos= tc.getTokenStart(start + (length-1));

-//			endPos+= tc.getTokenLength(start + (length-1));

-//				

-

-			int startPos= tc.getTokenStart(start);

-			int endPos;

-			

-			if (length == 1) {

-				endPos= startPos + tc.getTokenLength(start);

-			} else {

-				endPos= tc.getTokenStart(start + length);

-			}

-

-			try {

-				return doc.get(startPos, endPos - startPos);

-			} catch (BadLocationException e) {

-			}

-

-		}

-		return ""; //$NON-NLS-1$

-	}

-

-	/**

-	 * Performs a token based 3-way diff on the character range specified by the given baseDiff.

-	 */

-	private void simpleTokenDiff(final Diff baseDiff,

-				IDocument ancestorDoc, String a,

-				IDocument rightDoc, String d,

-				IDocument leftDoc, String s) {

-

-		int ancestorStart= 0;

-		ITokenComparator sa= null;

-		if (ancestorDoc != null) {

-			ancestorStart= baseDiff.fAncestorPos.getOffset();

-			sa= createTokenComparator(a);

-		}

-		

-		int rightStart= baseDiff.fRightPos.getOffset();	

-		ITokenComparator sm= createTokenComparator(d);

-		

-		int leftStart= baseDiff.fLeftPos.getOffset();

-		ITokenComparator sy= createTokenComparator(s);

-		

-		RangeDifference[] e= RangeDifferencer.findRanges(sa, sy, sm);

-		for (int i= 0; i < e.length; i++) {

-			RangeDifference es= e[i];

-			int kind= es.kind();

-			if (kind != RangeDifference.NOCHANGE) {

-				

-				int ancestorStart2= ancestorStart;

-				int ancestorEnd2= ancestorStart;

-				if (ancestorDoc != null) {

-					ancestorStart2 += sa.getTokenStart(es.ancestorStart());

-					ancestorEnd2 += getTokenEnd(sa, es.ancestorStart(), es.ancestorLength());

-				}

-				

-				int leftStart2= leftStart + sy.getTokenStart(es.leftStart());

-				int leftEnd2= leftStart + getTokenEnd(sy, es.leftStart(), es.leftLength());

-				

-				int rightStart2= rightStart + sm.getTokenStart(es.rightStart());

-				int rightEnd2= rightStart + getTokenEnd(sm, es.rightStart(), es.rightLength());

-				

-				Diff diff= new Diff(baseDiff, kind,

-						ancestorDoc, ancestorStart2, ancestorEnd2,

-						leftDoc, leftStart2, leftEnd2,

-						rightDoc, rightStart2, rightEnd2);

-				diff.fIsToken= true;

-				// add to base Diff

-				baseDiff.add(diff);

-			}

-		}

-	}

-	

-	/**

-	 * Performs a "smart" token based 3-way diff on the character range specified by the given baseDiff.

-	 * It is "smart" because it tries to minimize the number of token diffs by merging them.

-	 */

-	private void mergingTokenDiff(Diff baseDiff, 

-				IDocument ancestorDoc, String a,

-				IDocument rightDoc, String d,

-				IDocument leftDoc, String s) {

-		ITokenComparator sa= null;

-		int ancestorStart= 0;

-		if (ancestorDoc != null) {

-			sa= createTokenComparator(a);

-			ancestorStart= baseDiff.fAncestorPos.getOffset();

-		}

-		

-		int rightStart= baseDiff.fRightPos.getOffset();	

-		ITokenComparator sm= createTokenComparator(d);

-		

-		int leftStart= baseDiff.fLeftPos.getOffset();

-		ITokenComparator sy= createTokenComparator(s);

-		

-		RangeDifference[] r= RangeDifferencer.findRanges(sa, sy, sm);

-		for (int i= 0; i < r.length; i++) {

-			RangeDifference  es= r[i];

-			// determine range of diffs in one line

-			int start= i;

-			int leftLine= -1;

-			int rightLine= -1;

-			try {

-				leftLine= leftDoc.getLineOfOffset(leftStart+sy.getTokenStart(es.leftStart()));

-				rightLine= rightDoc.getLineOfOffset(rightStart+sm.getTokenStart(es.rightStart()));

-			} catch (BadLocationException e) {

-			}

-			i++;

-			for (; i < r.length; i++) {

-				es= r[i];

-				try {

-					if (leftLine != leftDoc.getLineOfOffset(leftStart+sy.getTokenStart(es.leftStart())))

-						break;

-					if (rightLine != rightDoc.getLineOfOffset(rightStart+sm.getTokenStart(es.rightStart())))

-						break;

-				} catch (BadLocationException e) {

-				}

-			}

-			int end= i;

-			

-			// find first diff from left

-			RangeDifference first= null;

-			for (int ii= start; ii < end; ii++) {

-				es= r[ii];

-				int kind= es.kind();

-				if (kind != RangeDifference.NOCHANGE && kind != RangeDifference.ANCESTOR) {

-					first= es;

-					break;

-				}

-			}

-			

-			// find first diff from mine

-			RangeDifference last= null;

-			for (int ii= end-1; ii >= start; ii--) {

-				es= r[ii];

-				int kind= es.kind();

-				if (kind != RangeDifference.NOCHANGE && kind != RangeDifference.ANCESTOR) {

-					last= es;

-					break;

-				}

-			}

-			

-			if (first != null && last != null) {

-				

-				int ancestorStart2= 0;

-				int ancestorEnd2= 0;

-				if (ancestorDoc != null) {

-					ancestorStart2= ancestorStart+sa.getTokenStart(first.ancestorStart());

-					ancestorEnd2= ancestorStart+getTokenEnd(sa, last.ancestorStart(), last.ancestorLength());

-				}

-				

-				int leftStart2= leftStart+sy.getTokenStart(first.leftStart());

-				int leftEnd2= leftStart+getTokenEnd(sy, last.leftStart(), last.leftLength());

-				

-				int rightStart2= rightStart+sm.getTokenStart(first.rightStart());

-				int rightEnd2= rightStart+getTokenEnd(sm, last.rightStart(), last.rightLength());

-				Diff diff= new Diff(baseDiff, first.kind(),

-							ancestorDoc, ancestorStart2, ancestorEnd2+1,

-							leftDoc, leftStart2, leftEnd2+1,

-							rightDoc, rightStart2, rightEnd2+1);	

-				diff.fIsToken= true;

-				baseDiff.add(diff);

-			}

-		}

-	}

-	

-	//---- update UI stuff

-	

-	private void updateControls() {

-		

-		boolean leftToRight= false;

-		boolean rightToLeft= false;

-		

-		updateStatus(fCurrentDiff);

-

-		if (fCurrentDiff != null) {

-			IMergeViewerContentProvider cp= getMergeContentProvider();

-			if (cp != null) {

-				rightToLeft= cp.isLeftEditable(getInput());

-				leftToRight= cp.isRightEditable(getInput());

-			}			

-		}

-		

-		if (fDirectionLabel != null) {

-			if (fCurrentDiff != null && isThreeWay() && !fIgnoreAncestor) {

-				fDirectionLabel.setImage(fCurrentDiff.getImage());

-			} else {

-				fDirectionLabel.setImage(null);

-			}

-		}

-		

-		if (fCopyDiffLeftToRightItem != null)			

-			((Action)fCopyDiffLeftToRightItem.getAction()).setEnabled(leftToRight);

-		if (fCopyDiffRightToLeftItem != null)

-			((Action)fCopyDiffRightToLeftItem.getAction()).setEnabled(rightToLeft);

-			

-		boolean enableNavigation= false;

-		if (fCurrentDiff == null && fChangeDiffs != null && fChangeDiffs.size() > 0)

-			enableNavigation= true;

-		else if (fChangeDiffs != null && fChangeDiffs.size() > 1)

-			enableNavigation= true;

-		else if (fCurrentDiff != null && fCurrentDiff.fDiffs != null)

-			enableNavigation= true;

-		else if (fCurrentDiff != null && fCurrentDiff.fIsToken)

-			enableNavigation= true;

-		

-		if (fNextItem != null) {

-			IAction a= fNextItem.getAction();

-			a.setEnabled(enableNavigation);

-		}

-		if (fPreviousItem != null) {

-			IAction a= fPreviousItem.getAction();

-			a.setEnabled(enableNavigation);

-		}	

-	}

-

-	private void updateStatus(Diff diff) {

-		

-		IActionBars bars= Utilities.findActionBars(fComposite);

-		if (bars == null)

-			return;

-		IStatusLineManager slm= bars.getStatusLineManager();

-		if (slm == null)

-			return;

-					

-		String diffDescription;

-		

-		if (diff == null) {

-			diffDescription= ", no diff";

-		} else {

-			

-			if (diff.fIsToken)		// we don't show special info for token diffs

-				diff= diff.fParent;

-		

-			String format= ", {0} #{1} (Left: {2}, Right: {3})";

-			diffDescription= MessageFormat.format(format, 

-				new String[] {

-					getDiffType(diff),						// 0: diff type

-					getDiffNumber(diff),					// 1: diff number

-					getDiffRange(fLeft, diff.fLeftPos),		// 2: left start line

-					getDiffRange(fRight, diff.fRightPos)	// 3: left end line

-				}

-			);

-		}

-		

-		String format= "Left: {0}, Right: {1}{2}";

-		String s= MessageFormat.format(format, 

-			new String[] {

-				getCursorPosition(fLeft),	// 0: left cursor

-				getCursorPosition(fRight),	// 1: right column

-				diffDescription				// 2: diff description

-			}

-		);

-	

-		slm.setMessage(s);

-	}

-	

-	private String getDiffType(Diff diff) {

-		String s= "";

-		switch(diff.fDirection) {

-		case RangeDifference.LEFT:

-			s= "outgoing";

-			break;

-		case RangeDifference.RIGHT:

-			s= "incoming";

-			break;

-		case RangeDifference.CONFLICT:

-			s= "conflicting";

-			break;

-		}

-		s+= " " + diff.changeType();

-		return s;

-	}

-	

-	private String getDiffNumber(Diff diff) {

-		// find the diff's number

-		int diffNumber= 0;

-		if (fChangeDiffs != null) {

-			Iterator e= fChangeDiffs.iterator();

-			while (e.hasNext()) {

-				Diff d= (Diff) e.next();

-				diffNumber++;

-				if (d == diff)

-					break;

-			}

-		}

-		return Integer.toString(diffNumber);

-	}

-	

-	private String getDiffRange(MergeSourceViewer v, Position pos) {

-		Point p= v.getLineRange(pos, new Point(0, 0));

-		int startLine= p.x+1;

-		int endLine= p.x+p.y;

-		if (endLine < startLine)

-			return "before line " + startLine;

-		return startLine + " : " + endLine;

-	}

-	

-	/**

-	 * Returns a description of the cursor position.

-	 * 

-	 * @return a description of the cursor position

-	 */

-	private String getCursorPosition(MergeSourceViewer v) {

-		if (v != null) {

-			StyledText styledText= v.getTextWidget();

-			

-			IDocument document= v.getDocument();

-			if (document != null) {

-				int offset= v.getVisibleRegion().getOffset();

-				int caret= offset + styledText.getCaretOffset();

-				

-				try {

-					

-					int line=document.getLineOfOffset(caret);

-					

-					int lineOffset= document.getLineOffset(line);

-					int occurrences= 0;

-					for (int i= lineOffset; i < caret; i++)

-						if ('\t' == document.getChar(i))

-							++ occurrences;

-							

-					int tabWidth= styledText.getTabs();

-					int column= caret - lineOffset + (tabWidth -1) * occurrences;

-					

-					return ((line + 1) + " : " + (column + 1));

-					

-				} catch (BadLocationException x) {

-				}

-			}

-		}

-		return "??";	

-	}

-

-	protected void updateHeader() {

-		

-		super.updateHeader();

-				

-		updateControls();

-	}

-

-	/**

-	 * Creates the two items for copying a difference range from one side to the other 

-	 * and adds them to the given toolbar manager.

-	 */

-	protected void createToolItems(ToolBarManager tbm) {

-		

-		final String ignoreAncestorActionKey= "action.IgnoreAncestor.";	//$NON-NLS-1$

-		Action ignoreAncestorAction= new Action() {

-			public void run() {

-				setIgnoreAncestor(! fIgnoreAncestor);

-				Utilities.initToggleAction(this, getResourceBundle(), ignoreAncestorActionKey, fIgnoreAncestor);

-			}

-		};

-		ignoreAncestorAction.setChecked(fIgnoreAncestor);

-		Utilities.initAction(ignoreAncestorAction, getResourceBundle(), ignoreAncestorActionKey);

-		Utilities.initToggleAction(ignoreAncestorAction, getResourceBundle(), ignoreAncestorActionKey, fIgnoreAncestor);

-		

-		fIgnoreAncestorItem= new ActionContributionItem(ignoreAncestorAction);

-		fIgnoreAncestorItem.setVisible(false);

-		tbm.appendToGroup("modes", fIgnoreAncestorItem); //$NON-NLS-1$

-

-		tbm.add(new Separator());

-					

-		Action a= new Action() {

-			public void run() {

-				navigate(true, true, true);

-			}

-		};

-		Utilities.initAction(a, getResourceBundle(), "action.NextDiff."); //$NON-NLS-1$

-		fNextItem= new ActionContributionItem(a);

-		tbm.appendToGroup("navigation", fNextItem); //$NON-NLS-1$

-		

-		a= new Action() {

-			public void run() {

-				navigate(false, true, true);

-			}

-		};

-		Utilities.initAction(a, getResourceBundle(), "action.PrevDiff."); //$NON-NLS-1$

-		fPreviousItem= new ActionContributionItem(a);

-		tbm.appendToGroup("navigation", fPreviousItem); //$NON-NLS-1$

-

-		

-		CompareConfiguration cc= getCompareConfiguration();

-		

-		if (cc.isRightEditable()) {

-			a= new Action() {

-				public void run() {

-					copyDiffLeftToRight();

-				}

-			};

-			Utilities.initAction(a, getResourceBundle(), "action.CopyDiffLeftToRight."); //$NON-NLS-1$

-			fCopyDiffLeftToRightItem= new ActionContributionItem(a);

-			tbm.appendToGroup("merge", fCopyDiffLeftToRightItem); //$NON-NLS-1$

-		}

-		

-		if (cc.isLeftEditable()) {

-			a= new Action() {

-				public void run() {

-					copyDiffRightToLeft();

-				}

-			};

-			Utilities.initAction(a, getResourceBundle(), "action.CopyDiffRightToLeft."); //$NON-NLS-1$

-			fCopyDiffRightToLeftItem= new ActionContributionItem(a);

-			tbm.appendToGroup("merge", fCopyDiffRightToLeftItem); //$NON-NLS-1$

-		}

-	}

-	

-	/* package */ void propertyChange(PropertyChangeEvent event) {

-		

-		String key= event.getProperty();

-		

-		if (key.equals(CompareConfiguration.IGNORE_WHITESPACE)) {

-			// clear stuff

-			fCurrentDiff= null;

-		 	fChangeDiffs= null;

-			fAllDiffs= null;

-					

-			doDiff();

-					

-			updateControls();

-			invalidateLines();

-			updateVScrollBar();

-			

-			selectFirstDiff();

-			

-		} else if (key.equals(TEXT_FONT)) {

-			IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-			if (ps != null) {

-				updateFont(ps, fComposite);

-				invalidateLines();

-			}

-				

-		} else if (key.equals(ComparePreferencePage.SYNCHRONIZE_SCROLLING)) {

-			

-			IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-			

-			boolean b= ps.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);

-			if (b != fSynchronizedScrolling)

-				toggleSynchMode();

-		

-		} else

-			super.propertyChange(event);

-	}

-	

-	private void setIgnoreAncestor(boolean ignore) {

-		if (ignore != fIgnoreAncestor) {

-			fIgnoreAncestor= ignore;

-			setAncestorVisibility(false, !fIgnoreAncestor);

-		

-			// clear stuff

-			fCurrentDiff= null;

-		 	fChangeDiffs= null;

-			fAllDiffs= null;

-					

-			doDiff();

-					

-			invalidateLines();

-			updateVScrollBar();

-			

-			selectFirstDiff();

-		}

-	}

-	

-	private void selectFirstDiff() {

-		

-		if (fLeft == null || fRight == null) {

-			return;

-		}

-		if (fLeft.getDocument() == null || fRight.getDocument() == null) {

-			return;

-		}

-		

-		Diff firstDiff= null;

-		if (CompareNavigator.getDirection(fComposite))

-			firstDiff= findNext(fRight, fChangeDiffs, -1, -1, false);

-		else

-			firstDiff= findPrev(fRight, fChangeDiffs, 9999999, 9999999, false);

-		setCurrentDiff(firstDiff, true);

-	}

-	

-	private void toggleSynchMode() {

-		fSynchronizedScrolling= ! fSynchronizedScrolling;

-		

-		scrollVertical(0, null);

-		

-		// throw away central control (Sash or Canvas)

-		Control center= getCenter();

-		if (center != null && !center.isDisposed())

-			center.dispose();

-		

-		fLeft.getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);

-		fRight.getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);

-

-		fComposite.layout(true);

-	}

-					

-	protected void updateToolItems() {

-					

-		if (fIgnoreAncestorItem != null)

-			fIgnoreAncestorItem.setVisible(isThreeWay());

-		

-		super.updateToolItems();

-	}

-	

-	//---- painting lines

-	

-	/**

-	 * 

-	 */

-	private void updateLines(IDocument d) {

-

-		boolean left= false;

-		boolean right= false;

-		

-		// FIXME: this optimization is incorrect because

-		// it doesn't take replace operations into account where

-		// the old and new line count does not differ

-		if (d == fLeft.getDocument()) {

-			int l= fLeft.getLineCount();

-			left= fLeftLineCount != l;

-			fLeftLineCount= l;

-		} else if (d == fRight.getDocument()) {

-			int l= fRight.getLineCount();

-			right= fRightLineCount != l;

-			fRightLineCount= l;

-		}

-		

-		if (left || right) {

-			

-			if (left) {

-				if (fLeftCanvas != null)

-					fLeftCanvas.redraw();

-			} else {

-				if (fRightCanvas != null)

-					fRightCanvas.redraw();

-			}

-			Control center= getCenter();

-			if (center != null)

-				center.redraw();

-

-			updateVScrollBar();

-		}

-	}

-	

-	private void invalidateLines() {

-		if (isThreeWay()) {

-			if (Utilities.okToUse(fAncestorCanvas))

-				fAncestorCanvas.redraw();

-			if (fAncestor.isControlOkToUse())

-				fAncestor.getTextWidget().redraw();

-		}

-		

-		if (Utilities.okToUse(fLeftCanvas))

-			fLeftCanvas.redraw();

-			

-		if (fLeft.isControlOkToUse())

-			fLeft.getTextWidget().redraw();

-			

-		if (Utilities.okToUse(getCenter()))

-			getCenter().redraw();

-			

-		if (fRight.isControlOkToUse())

-			fRight.getTextWidget().redraw();

-			

-		if (Utilities.okToUse(fRightCanvas))

-			fRightCanvas.redraw();

-	}

-	

-	private void paintCenter(Canvas canvas, GC g) {

-		

-		if (! fSynchronizedScrolling)

-			return;

-

-		int lineHeight= fLeft.getTextWidget().getLineHeight();			

-		int visibleHeight= fRight.getViewportHeight();

-

-		Point size= canvas.getSize();

-		int x= 0;

-		int w= size.x;

-				

-		g.setBackground(canvas.getBackground());

-		g.fillRectangle(x+1, 0, w-2, size.y);

-		

-		if (!fIsMotif) {

-			// draw thin line between center ruler and both texts

-			g.setBackground(canvas.getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));

-			g.fillRectangle(0, 0, 1, size.y);

-			g.fillRectangle(w-1, 0, 1, size.y);

-		}

-			

-		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;

-	

-				fPts[0]= x;	fPts[1]= ly;	fPts[2]= w;	fPts[3]= ry;

-				fPts[6]= x;	fPts[7]= ly+lh;	fPts[4]= w;	fPts[5]= ry+rh;

-							

-				g.setBackground(getColor(getFillColor(diff)));

-				g.fillPolygon(fPts);

-	

-				g.setLineWidth(LW);

-				g.setForeground(getColor(getStrokeColor(diff)));

-				g.drawLine(fPts[0], fPts[1], fPts[2], fPts[3]);

-				g.drawLine(fPts[6], fPts[7], fPts[4], fPts[5]);

-			}

-		}

-	}

-	

-	private void paintSides(GC g, MergeSourceViewer tp, Canvas canvas, boolean right) {

-

-		int lineHeight= tp.getTextWidget().getLineHeight();

-		int visibleHeight= tp.getViewportHeight();

-

-		Point size= canvas.getSize();

-		int x= 0;

-		int w= fMarginWidth;

-			

-		g.setBackground(canvas.getBackground());

-		g.fillRectangle(x, 0, w, size.y);

-

-		if (!fIsMotif) {

-			// draw thin line between ruler and text

-			g.setBackground(canvas.getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));

-			if (right)

-				g.fillRectangle(0, 0, 1, size.y);

-			else

-				g.fillRectangle(size.x-1, 0, 1, size.y);

-		}

-

-		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;

-					

-				g.setBackground(getColor(getFillColor(diff)));

-				if (right)

-					g.fillRectangle(x, y, w-5, h);

-				else

-					g.fillRectangle(x+5, y, w-3, h);

-	

-				g.setBackground(getColor(getStrokeColor(diff)));

-				if (right) {

-					g.fillRectangle(x, y-1, w-4, LW);

-					g.fillRectangle(x+5, y, LW, h);

-					g.fillRectangle(x, y+h-1, w-4, LW);

-				} else {

-					g.fillRectangle(x+3, y-1, w-3, LW);

-					g.fillRectangle(x+3, y, LW, h);

-					g.fillRectangle(x+3, y+h-1, w-3, LW);

-				}

-			}

-		}

-	}

-	

-	private void paint(PaintEvent event, MergeSourceViewer tp) {

-		

-		if (fChangeDiffs == null)

-			return;

-

-		Control canvas= (Control) event.widget;

-		GC g= event.gc;

-		

-		int lineHeight= tp.getTextWidget().getLineHeight();			

-		int w= canvas.getSize().x;

-		int shift= tp.getVerticalScrollOffset() + (2-LW);

-		int maxh= event.y+event.height; 	// visibleHeight

-		

-		//if (fIsMotif)

-			shift+= fTopInset;

-				

-		Point range= new Point(0, 0);

-				

-		Iterator e= fChangeDiffs.iterator();	

-		while (e.hasNext()) {

-			Diff diff= (Diff) e.next();

-			if (diff.isDeleted())

-				continue;

-			

-			if (fShowCurrentOnly && !isCurrentDiff(diff))

-				continue;

-

-			tp.getLineRange(diff.getPosition(tp), range);

-			int y= (range.x * lineHeight) + shift;

-			int h= range.y * lineHeight;

-			

-			if (y+h < event.y)

-				continue;

-			if (y > maxh)

-				break;

-			

-			g.setBackground(getColor(getStrokeColor(diff)));

-			g.fillRectangle(0, y-1, w, LW);

-			g.fillRectangle(0, y+h-1, w, LW);

-		}

-	}

-

-	private RGB getFillColor(Diff diff) {

-		boolean selected= fCurrentDiff != null && fCurrentDiff.fParent == diff;

-		

-		if (isThreeWay() && !fIgnoreAncestor) {

-			switch (diff.fDirection) {

-			case RangeDifference.RIGHT:

-				if (fLeftIsLocal)

-					return selected ? SELECTED_INCOMING_FILL : INCOMING_FILL;

-				return selected ? SELECTED_OUTGOING_FILL : OUTGOING_FILL;

-			case RangeDifference.ANCESTOR:

-				return selected ? SELECTED_CONFLICT_FILL : CONFLICT_FILL;

-			case RangeDifference.LEFT:

-				if (fLeftIsLocal)

-					return selected ? SELECTED_OUTGOING_FILL : OUTGOING_FILL;

-				return selected ? SELECTED_INCOMING_FILL : INCOMING_FILL;

-			case RangeDifference.CONFLICT:

-				return selected ? SELECTED_CONFLICT_FILL : CONFLICT_FILL;

-			}

-			return null;

-		}

-		return selected ? SELECTED_OUTGOING_FILL : OUTGOING_FILL;

-	}

-	

-	private RGB getStrokeColor(Diff diff) {

-		boolean selected= fCurrentDiff != null && fCurrentDiff.fParent == diff;

-		

-		if (isThreeWay() && !fIgnoreAncestor) {

-			switch (diff.fDirection) {

-			case RangeDifference.RIGHT:

-				if (fLeftIsLocal)

-					return selected ? SELECTED_INCOMING : INCOMING;

-				return selected ? SELECTED_OUTGOING : OUTGOING;

-			case RangeDifference.ANCESTOR:

-				return selected ? SELECTED_CONFLICT : CONFLICT;

-			case RangeDifference.LEFT:

-				if (fLeftIsLocal)

-					return selected ? SELECTED_OUTGOING : OUTGOING;

-				return selected ? SELECTED_INCOMING : INCOMING;

-			case RangeDifference.CONFLICT:

-				return selected ? SELECTED_CONFLICT : CONFLICT;

-			}

-			return null;

-		}

-		return selected ? SELECTED_OUTGOING : OUTGOING;

-	}

-	

-	private Color getColor(RGB rgb) {

-		if (rgb == null)

-			return null;

-		if (fColors == null)

-			fColors= new HashMap(20);

-		Color c= (Color) fColors.get(rgb);

-		if (c == null) {

-			c= new Color(fComposite.getDisplay(), rgb);

-			fColors.put(rgb, c);

-		}

-		return c;

-	}

-	

-	//---- Navigating and resolving Diffs

-	

-	private boolean navigate(boolean down, boolean wrap, boolean deep) {

-

-		Diff diff= null;

-		

-		for (;;) {

-			

-			if (fChangeDiffs != null) {

-				MergeSourceViewer part= fFocusPart;

-				if (part == null)

-					part= fRight;

-				

-				if (part != null) {

-					Point s= part.getSelectedRange();

-					if (down)

-						diff= findNext(part, fChangeDiffs, s.x, s.x+s.y, deep);

-					else

-						diff= findPrev(part, fChangeDiffs, s.x, s.x+s.y, deep);					

-				}		

-			}

-		

-			if (diff == null) {

-				if (wrap) {

-					Control c= getControl();

-					if (Utilities.okToUse(c))

-						c.getDisplay().beep();

-					if (DEAD_STEP)

-						return true;

-					if (fChangeDiffs.size() > 0) {

-						if (down)

-							diff= (Diff) fChangeDiffs.get(0);

-						else

-							diff= (Diff) fChangeDiffs.get(fChangeDiffs.size()-1);

-					}

-				} else

-					return true;

-			}

-			

-			setCurrentDiff(diff, true);

-			

-			if (diff != null && diff.fDirection == RangeDifference.ANCESTOR

-									&& !getAncestorEnabled())

-				continue;

-				

-			break;

-		}

-

-		return false;

-	}	

-		

-	/**

-	 * Find the Diff that overlaps with the given TextPart's text range.

-	 * If the range doesn't overlap with any range <code>null</code>

-	 * is returned.

-	 */

-	private Diff findDiff(MergeSourceViewer tp, int rangeStart, int rangeEnd) {

-		if (fChangeDiffs != null) {

-			Iterator e= fChangeDiffs.iterator();

-			while (e.hasNext()) {

-				Diff diff= (Diff) e.next();

-				if (diff.contains(tp, rangeStart, rangeEnd))

-					return diff;

-			}

-		}

-		return null;

-	}

-	

-	private static Diff findNext(MergeSourceViewer tp, List v, int start, int end, boolean deep) {

-		for (int i= 0; i < v.size(); i++) {

-			Diff diff= (Diff) v.get(i);

-			Position p= diff.getPosition(tp);

-			if (p != null) {

-				int startOffset= p.getOffset();

-				if (end < startOffset)  // <=

-					return diff;

-				if (deep && diff.fDiffs != null) {

-					Diff d= null;

-					int endOffset= startOffset + p.getLength();

-					if (start == startOffset && (end == endOffset || end == endOffset-1)) {

-						d= findNext(tp, diff.fDiffs, start-1, start-1, deep);

-					} else if (end < endOffset) {

-						d= findNext(tp, diff.fDiffs, start, end, deep);

-					}

-					if (d != null)

-						return d;

-				}

-			}

-		}

-		return null;

-	}

-	

-	private static Diff findPrev(MergeSourceViewer tp, List v, int start, int end, boolean deep) {

-		for (int i= v.size()-1; i >= 0; i--) {

-			Diff diff= (Diff) v.get(i);

-			Position p= diff.getPosition(tp);

-			if (p != null) {

-				int startOffset= p.getOffset();

-				int endOffset= startOffset + p.getLength();

-				if (start > endOffset)

-					return diff;

-				if (deep && diff.fDiffs != null) {

-					Diff d= null;

-					if (start == startOffset && end == endOffset) {

-						d= findPrev(tp, diff.fDiffs, end, end, deep);

-					} else if (start >= startOffset) {

-						d= findPrev(tp, diff.fDiffs, start, end, deep);

-					}

-					if (d != null)

-						return d;

-				}

-			}

-		}

-		return null;

-	}

-		

-	/*

-	 * Set the currently active Diff and update the toolbars controls and lines.

-	 * If <code>revealAndSelect</code> is <code>true</code> the Diff is revealed and

-	 * selected in both TextParts.

-	 */

-	private void setCurrentDiff(Diff d, boolean revealAndSelect) {

-

-		if (d == fCurrentDiff)

-			return;

-						

-		Diff oldDiff= fCurrentDiff;

-					

-		if (d != null && revealAndSelect) {

-			

-			// before we set fCurrentDiff we change the selection

-			// so that the paint code uses the old background colors

-			// otherwise selection isn't drawn correctly

-			if (isThreeWay() && !fIgnoreAncestor)

-				fAncestor.setSelection(d.fAncestorPos);

-			fLeft.setSelection(d.fLeftPos);

-			fRight.setSelection(d.fRightPos);

-			

-			// now switch diffs

-			fCurrentDiff= d;

-			revealDiff(d, d.fIsToken);

-		} else {

-			fCurrentDiff= d;

-		}

-		

-		Diff d1= oldDiff != null ? oldDiff.fParent : null;

-		Diff d2= fCurrentDiff != null ? fCurrentDiff.fParent : null;

-		if (d1 != d2) {

-			updateDiffBackground(d1);

-			updateDiffBackground(d2);

-		}

-		

-		updateControls();

-		invalidateLines();

-	}

-	

-	/**

-	 * Smart determines whether 

-	 */

-	private void revealDiff(Diff d, boolean smart) {

-		

-		boolean ancestorIsVisible= false;

-		boolean leftIsVisible= false;

-		boolean rightIsVisible= false;

-

-		if (smart) {

-			Point region= new Point(0, 0);

-			// find the starting line of the diff in all text widgets

-			int ls= fLeft.getLineRange(d.fLeftPos, region).x;

-			int rs= fRight.getLineRange(d.fRightPos, region).x;

-			

-			if (isThreeWay() && !fIgnoreAncestor) {

-				int as= fAncestor.getLineRange(d.fAncestorPos, region).x;

-				if (as >= fAncestor.getTopIndex() && as <= fAncestor.getBottomIndex())

-					ancestorIsVisible= true;

-			}

-

-			if (ls >= fLeft.getTopIndex() && ls <= fLeft.getBottomIndex())

-				leftIsVisible= true;

-

-			if (rs >= fRight.getTopIndex() && rs <= fRight.getBottomIndex())

-				rightIsVisible= true;

-		}

-

-		// vertical scrolling

-		if (!leftIsVisible || !rightIsVisible) {

-			int vpos= 0;

-			

-			MergeSourceViewer allButThis= null;

-			if (leftIsVisible) {

-				vpos= realToVirtualPosition(fLeft, fLeft.getTopIndex());

-				allButThis= fLeft;

-			} else if (rightIsVisible) {

-				vpos= realToVirtualPosition(fRight, fRight.getTopIndex());

-				allButThis= fRight;

-			} else if (ancestorIsVisible) {

-				vpos= realToVirtualPosition(fAncestor, fAncestor.getTopIndex());

-				allButThis= fAncestor;

-			} else {

-				if (fAllDiffs != null) {

-					Iterator e= fAllDiffs.iterator();

-					for (int i= 0; e.hasNext(); i++) {

-						Diff diff= (Diff) e.next();

-						if (diff == d)

-							break;

-						vpos+= diff.getMaxDiffHeight(fShowAncestor);

-					}

-				}

-				vpos-= fRight.getViewportLines()/4;

-				if (vpos < 0)

-					vpos= 0;

-			}

-							

-			scrollVertical(vpos, allButThis);

-			if (fVScrollBar != null)

-				fVScrollBar.setSelection(vpos);

-		}

-		

-		// horizontal scrolling

-		if (d.fIsToken) {

-			// we only scroll horizontally for token diffs

-			reveal(fAncestor, d.fAncestorPos);

-			reveal(fLeft, d.fLeftPos);

-			reveal(fRight, d.fRightPos);

-		} else {

-			// in all other cases we reset the horizontal offset

-			hscroll(fAncestor);

-			hscroll(fLeft);

-			hscroll(fRight);

-		}

-	}

-	

-	private static void reveal(MergeSourceViewer v, Position p) {

-		if (v != null && p != null) {

-			StyledText st= v.getTextWidget();

-			if (st != null) {

-				Rectangle r= st.getClientArea();

-				if (!r.isEmpty())	// workaround for #7320: Next diff scrolls when going into current diff 

-					v.revealRange(p.offset, p.length);

-			}

-		}

-	}

-	

-	private static void hscroll(MergeSourceViewer v) {

-		if (v != null) {

-			StyledText st= v.getTextWidget();

-			if (st != null)

-				st.setHorizontalIndex(0);

-		}

-	}

-	

-	//--------------------------------------------------------------------------------

-	

-	protected void copy(boolean leftToRight) {

-		if (leftToRight) {

-			if (fLeft.getEnabled()) {

-				// copy text

-				String text= fLeft.getTextWidget().getText();

-				fRight.getTextWidget().setText(text);

-				fRight.setEnabled(true);

-			} else {

-				// delete

-				fRight.getTextWidget().setText(""); //$NON-NLS-1$

-				fRight.setEnabled(false);

-			}

-			fRightLineCount= fRight.getLineCount();

-			setRightDirty(true);

-			fRightContentsChanged= false;

-		} else {

-			if (fRight.getEnabled()) {

-				// copy text

-				String text= fRight.getTextWidget().getText();

-				fLeft.getTextWidget().setText(text);

-				fLeft.setEnabled(true);

-			} else {

-				// delete

-				fLeft.getTextWidget().setText(""); //$NON-NLS-1$

-				fLeft.setEnabled(false);

-			}

-			fLeftLineCount= fLeft.getLineCount();

-			setLeftDirty(true);

-			fLeftContentsChanged= false;

-		}

-		doDiff();

-		invalidateLines();

-		updateVScrollBar();

-		selectFirstDiff();

-	}

-

-	private void copyDiffLeftToRight() {

-		copy(fCurrentDiff, true, false, false);

-	}

-

-	private void copyDiffRightToLeft() {

-		copy(fCurrentDiff, false, false, false);

-	}

-		

-	private void copy(Diff diff, boolean leftToRight, boolean both, boolean gotoNext) {

-		

-		if (diff != null && !diff.isResolved()) {

-

-			Position fromPos= null;

-			Position toPos= null;

-			IDocument fromDoc= null;

-			IDocument toDoc= null;

-

-			if (leftToRight) {

-				fRight.setEnabled(true);

-				fromPos= diff.fLeftPos;

-				toPos= diff.fRightPos;

-				fromDoc= fLeft.getDocument();

-				toDoc= fRight.getDocument();

-			} else {

-				fLeft.setEnabled(true);

-				fromPos= diff.fRightPos;

-				toPos= diff.fLeftPos;

-				fromDoc= fRight.getDocument();

-				toDoc= fLeft.getDocument();

-			}

-			

-			if (fromDoc != null) {

-				

-				int fromStart= fromPos.getOffset();

-				int fromLen= fromPos.getLength();

-				

-				int toStart= toPos.getOffset();

-				int toLen= toPos.getLength();

-

-				try {

-					String s= null;

-											

-					switch (diff.fDirection) {

-					case RangeDifference.RIGHT:

-					case RangeDifference.LEFT:

-						s= fromDoc.get(fromStart, fromLen);

-						break;

-					case RangeDifference.ANCESTOR:

-						break;

-					case RangeDifference.CONFLICT:

-						s= fromDoc.get(fromStart, fromLen);

-						if (both)

-							s+= toDoc.get(toStart, toLen);

-						break;

-					}

-					if (s != null) {

-						toDoc.replace(toStart, toLen, s);						

-						toPos.setOffset(toStart);

-						toPos.setLength(s.length());

-					}	

-				

-				} catch (BadLocationException e) {

-				}

-			}

-		

-			diff.setResolved(true);

-

-			if (gotoNext) {

-				navigate(true, true, true);

-			} else {

-				revealDiff(diff, true);

-				updateControls();

-			}

-		}

-	}

-

-	//---- scrolling

-

-	/**

-	 * Calculates virtual height (in lines) of views by adding the maximum of corresponding diffs.

-	 */

-	private int getVirtualHeight() {

-		int h= 1;

-		if (fAllDiffs != null) {

-			Iterator e= fAllDiffs.iterator();

-			for (int i= 0; e.hasNext(); i++) {

-				Diff diff= (Diff) e.next();

-				h+= diff.getMaxDiffHeight(fShowAncestor);

-			}

-		}

-		return h;

-	}

-	

-	/**

-	 * The height of the TextEditors in lines.

-	 */

-	private int getViewportHeight() {

-		StyledText te= fLeft.getTextWidget();

-		

-		int vh= te.getClientArea().height;

-		if (vh == 0) {

-			Rectangle trim= te.computeTrim(0, 0, 0, 0);

-			int scrollbarHeight= trim.height;

-			

-			int headerHeight= getHeaderHeight();

-	

-			Composite composite= (Composite) getControl();

-			Rectangle r= composite.getClientArea();

-							

-			vh= r.height-headerHeight-scrollbarHeight;

-		}															

-

-		return vh / te.getLineHeight();

-	}

-	

-	/**

-	 * Returns the virtual position for the given view position.

-	 */

-	private int realToVirtualPosition(MergeSourceViewer w, int vpos) {

-

-		if (! fSynchronizedScrolling || fAllDiffs == null)

-			return vpos;

-				

-		int viewPos= 0;		// real view position

-		int virtualPos= 0;	// virtual position

-		Point region= new Point(0, 0);

-		

-		Iterator e= fAllDiffs.iterator();

-		while (e.hasNext()) {

-			Diff diff= (Diff) e.next();

-			Position pos= diff.getPosition(w);

-			w.getLineRange(pos, region);

-			int realHeight= region.y;

-			int virtualHeight= diff.getMaxDiffHeight(fShowAncestor);

-			if (vpos <= viewPos + realHeight) {	// OK, found!

-				vpos-= viewPos;	// make relative to this slot

-				// now scale position within this slot to virtual slot

-				if (realHeight <= 0)

-					vpos= 0;

-				else

-					vpos= (vpos*virtualHeight)/realHeight;

-				return virtualPos+vpos;

-			}

-			viewPos+= realHeight;

-			virtualPos+= virtualHeight;

-		}

-		return virtualPos;

-	}

-		

-	private void scrollVertical(int virtualPos, MergeSourceViewer allBut) {

-				

-		if (virtualPos < 0)

-			virtualPos= virtualPos;

-		

-		if (fSynchronizedScrolling) {

-			int s= 0;

-			

-			if (true) {

-				s= getVirtualHeight() - virtualPos;

-				int height= fRight.getViewportLines()/4;

-				if (s < 0)

-					s= 0;

-				if (s > height)

-					s= height;

-			}

-	

-			fInScrolling= true;

-					

-			if (isThreeWay() && allBut != fAncestor) {

-				int y= virtualToRealPosition(fAncestor, virtualPos+s)-s;

-				fAncestor.vscroll(y);

-			}

-	

-			if (allBut != fLeft) {

-				int y= virtualToRealPosition(fLeft, virtualPos+s)-s;

-				fLeft.vscroll(y);

-			}

-	

-			if (allBut != fRight) {

-				int y= virtualToRealPosition(fRight, virtualPos+s)-s;

-				fRight.vscroll(y);

-			}

-			

-			fInScrolling= false;

-			

-			if (isThreeWay() && fAncestorCanvas != null)

-				fAncestorCanvas.repaint();

-			

-			if (fLeftCanvas != null)

-				fLeftCanvas.repaint();

-			

-			Control center= getCenter();

-			if (center instanceof BufferedCanvas)

-				((BufferedCanvas)center).repaint();

-			

-			if (fRightCanvas != null)

-				fRightCanvas.repaint();

-		} else {

-			if (allBut == fAncestor && fAncestorCanvas != null && isThreeWay())

-				fAncestorCanvas.repaint();

-		

-			if (allBut == fLeft && fLeftCanvas != null)

-				fLeftCanvas.repaint();

-			

-			if (allBut == fRight && fRightCanvas != null)

-				fRightCanvas.repaint();

-		}

-	}

-		

-	/**

-	 * Updates Scrollbars with viewports.

-	 */

-	private void syncViewport(MergeSourceViewer w) {

-		

-		if (fInScrolling)

-			return;

-

-		int ix= w.getTopIndex();

-		int ix2= w.getDocumentRegionOffset();

-		

-		int viewPosition= realToVirtualPosition(w, ix-ix2);

-				

-		scrollVertical(viewPosition, w);	// scroll all but the given views

-		

-		if (fVScrollBar != null) {

-			int value= Math.max(0, Math.min(viewPosition, getVirtualHeight() - getViewportHeight()));

-			fVScrollBar.setSelection(value);

-		}

-	}

-

-	/**

-	 */

-	private void updateVScrollBar() {

-		

-		if (Utilities.okToUse(fVScrollBar) && fSynchronizedScrolling) {

-			int virtualHeight= getVirtualHeight();

-			int viewPortHeight= getViewportHeight();

-			int pageIncrement= viewPortHeight-1;

-			int thumb= (viewPortHeight > virtualHeight) ? virtualHeight : viewPortHeight;

-						

-			fVScrollBar.setPageIncrement(pageIncrement);

-			fVScrollBar.setMaximum(virtualHeight);

-			fVScrollBar.setThumb(thumb);

-		}			

-	}

-	

-	/**

-	 * maps given virtual position into a real view position of this view.

-	 */

-	private int virtualToRealPosition(MergeSourceViewer part, int v) {

-			

-		if (! fSynchronizedScrolling || fAllDiffs == null)

-			return v;

-					

-		int virtualPos= 0;

-		int viewPos= 0;

-		Point region= new Point(0, 0);

-		

-		Iterator e= fAllDiffs.iterator();

-		while (e.hasNext()) {

-			Diff diff= (Diff) e.next();

-			Position pos= diff.getPosition(part);

-			int viewHeight= part.getLineRange(pos, region).y;

-			int virtualHeight= diff.getMaxDiffHeight(fShowAncestor);

-			if (v < (virtualPos + virtualHeight)) {

-				v-= virtualPos;		// make relative to this slot

-				if (viewHeight <= 0) {

-					v= 0;

-				} else {

-					v= (v*viewHeight)/virtualHeight;

-				}

-				return viewPos+v;

-			}

-			virtualPos+= virtualHeight;

-			viewPos+= viewHeight;

-		}

-		return viewPos;

-	}

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties
deleted file mode 100644
index 18da49f..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties
+++ /dev/null
@@ -1,91 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-# @(#)TextMergeViewerResources.properties

-#

-# Resource strings for TextMergeViewer.java

-

-title= Text Compare

-

-saveDialog.title= Save Resource

-saveDialog.message= Resource has been modified. Save changes?

-

-compareProgressTask.title= Computing Differences...

-

-tooComplexError.title= Error

-tooComplexError.format= Too many differences. Try to turn on the ''Ignore White Space'' option or do a structure compare first.

-

-#####################################################

-# Toolbar actions

-#####################################################

-

-action.CopyLeftToRight.label=Copy Left to Right

-action.CopyLeftToRight.tooltip=Copy Whole Document from Left to Right

-action.CopyLeftToRight.image=copy_r_co.gif

-

-action.CopyRightToLeft.label=Copy Right to Left

-action.CopyRightToLeft.tooltip=Copy Whole Document from Right to Left

-action.CopyRightToLeft.image=copy_l_co.gif

-

-action.CopyDiffLeftToRight.label=Copy Current Diff

-action.CopyDiffLeftToRight.tooltip=Copy Current Change from Left to Right

-action.CopyDiffLeftToRight.image=copycont_r_co.gif

-

-action.CopyDiffRightToLeft.label=Copy Current Diff

-action.CopyDiffRightToLeft.tooltip=Copy Current Change from Right to Left

-action.CopyDiffRightToLeft.image=copycont_l_co.gif

-

-action.NextDiff.label=Next

-action.NextDiff.tooltip=Select Next Change

-action.NextDiff.image=next_nav.gif

-

-action.PrevDiff.label=Previous

-action.PrevDiff.tooltip=Select Previous Change

-action.PrevDiff.image=prev_nav.gif

-

-action.EnableAncestor.label=Enable Ancestor Pane

-action.EnableAncestor.tooltip.unchecked=Show Ancestor Pane

-action.EnableAncestor.tooltip.checked=Hide Ancestor Pane

-action.EnableAncestor.description.unchecked=Show Ancestor Pane

-action.EnableAncestor.description.checked=Hide Ancestor Pane

-action.EnableAncestor.image=ancestorpane_co.gif

-

-action.IgnoreAncestor.label=Ignore Ancestor

-action.IgnoreAncestor.tooltip.unchecked=Two-Way Compare (Ignore Ancestor)

-action.IgnoreAncestor.tooltip.checked=Three-Way Compare

-action.IgnoreAncestor.description.unchecked=Two-Way Compare (Ignore Ancestor)

-action.IgnoreAncestor.description.checked=Three-Way Compare

-action.IgnoreAncestor.image=twowaycompare_co.gif

-

-

-#####################################################

-# Context menu actions

-#####################################################

-

-action.undo.label=Undo@Ctrl+Z

-action.undo.tooltip=Undo Last Operation

-

-action.redo.label=Redo@Ctrl+Y

-action.redo.tooltip=Redo Last Operation

-

-action.cut.label=Cut@Ctrl+X

-action.cut.tooltip=Cut Text Selection to Clipboard

-

-action.copy.label=Copy@Ctrl+C

-action.copy.tooltip=Copy Text Selection to Clipboard

-

-action.paste.label=Paste@Ctrl+V

-action.paste.tooltip=Replace Text Selection with Clipboard

-

-action.delete.label=Delete

-action.delete.tooltip=Delete Current Text Selection

-

-action.find.label=Find...@Ctrl+F

-action.find.tooltip=Find Occurrence

-

-action.selectAll.label=Select All@Ctrl+A

-action.selectAll.tooltip=Select All Changes

-

-action.save.label=Save@Ctrl+S

-action.save.tooltip=Save Changes

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html
deleted file mode 100644
index 28d91ee..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html
+++ /dev/null
@@ -1,35 +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="Author" content="IBM">

-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">

-   <title>Package-level Javadoc</title>

-</head>

-<body>

-Support for compare and merge viewers which show the

-content side-by-side.

-<h2>

-Package Specification</h2>

-The <tt>ContentMergeViewer</tt> is an abstract compare and merge viewer

-with two side-by-side content areas and an optional content area for a

-common ancestor (for three-way compare). Because the implementation makes

-no assumptions about the content type it is a subclass responsibility to

-deal with a specific type.

-<p>A <tt>ContentMergeViewer</tt> accesses its model by means of a content

-provider which must implement the

-<br><tt>IMergeViewerContentProvider</tt> interface.

-<p>The <tt>TextMergeViewer</tt> is the standard concrete subclass of <tt>ContentMergeViewer</tt>.

-A text merge viewer uses the <tt>RangeDifferencer</tt> to perform a textual,

-line-by-line comparison of two (or three) input documents. For text lines

-that differ the <tt>TextMergeViewer</tt> uses an <tt>ITokenComparator</tt>

-to find longest sequences of matching and non-matching tokens. The <tt>TextMergeViewer</tt>'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 <tt>ITokenComparator</tt> interface.

-<p>The <tt>TextMergeViewer</tt> not only works on whole documents but on

-subranges of documents too. In this case the viewer's input must be an

-<tt>IDocumentRange</tt> instead of an <tt>IDocument</tt>.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java
deleted file mode 100644
index 85ffba1..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.Viewer;

-

-

-public abstract class AbstractViewer extends Viewer {

-

-	public void setInput(Object input) {

-	}

-	

-	public Object getInput() {

-		return null;

-	}

-	

-	public ISelection getSelection() {

-		return null;

-	}

-	

-	public void setSelection(ISelection s, boolean reveal) {

-	}

-	

-	public void refresh() {

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java
deleted file mode 100644
index 390adc1..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.*;

-import java.lang.reflect.InvocationTargetException;

-import java.util.ResourceBundle;

-import java.text.MessageFormat;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.ICompareInput;

-

-/**

- * A simple compare viewer for binary files.

- * Shows the position of the first non-matching byte.

- */

-public class BinaryCompareViewer extends AbstractViewer {

-

-	private static final String BUNDLE_NAME= "org.eclipse.compare.internal.BinaryCompareViewerResources"; //$NON-NLS-1$

-

-	private static final int EOF= -1;

-	private Text fControl;

-	private ICompareInput fInput;

-	private ResourceBundle fBundle;

-	private boolean fLeftIsLocal;

-	

-	

-	public BinaryCompareViewer(Composite parent, CompareConfiguration cc) {

-		

-		fBundle= ResourceBundle.getBundle(BUNDLE_NAME);

-

-		fControl= new Text(parent, SWT.NONE);

-		fControl.setEditable(false);

-		fControl.setData(CompareUI.COMPARE_VIEWER_TITLE, Utilities.getString(fBundle, "title")); //$NON-NLS-1$

-		CompareNavigator.hookNavigation(fControl);

-		

-		fLeftIsLocal= Utilities.getBoolean(cc, "LEFT_IS_LOCAL", false); //$NON-NLS-1$

-	}

-

-	public Control getControl() {

-		return fControl;

-	}

-

-	public void setInput(Object input) {

-		if (fControl != null && input instanceof ICompareInput) {

-			fInput= (ICompareInput) input;

-			

-			InputStream left= null;

-			InputStream right= null;

-			

-			String message= null;

-			try {

-				left= getStream(fInput.getLeft());

-				right= getStream(fInput.getRight());

-				

-				if (left != null && right != null) {

-					int pos= 0;

-					while (true) {

-						int l= left.read();

-						int r= right.read();

-						if (l != r) {

-							String format= Utilities.getString(fBundle, "diffMessageFormat"); //$NON-NLS-1$

-							message= MessageFormat.format(format, new String[] { Integer.toString(pos) } );

-							break;

-						}

-						if (l == EOF)

-							break;

-						pos++;

-					}

-				} else if (left == null && right == null) {

-					message= Utilities.getString(fBundle, "deleteConflictMessage"); //$NON-NLS-1$

-				} else if (left == null) {

-					if (fLeftIsLocal)

-						message= Utilities.getString(fBundle, "deletedMessage"); //$NON-NLS-1$

-					else

-						message= Utilities.getString(fBundle, "addedMessage"); //$NON-NLS-1$

-				} else if (right == null) {

-					if (fLeftIsLocal)

-						message= Utilities.getString(fBundle, "addedMessage"); //$NON-NLS-1$

-					else

-						message= Utilities.getString(fBundle, "deletedMessage"); //$NON-NLS-1$

-				}

-			} catch (CoreException ex) {

-				message= Utilities.getString(fBundle, "errorMessage"); //$NON-NLS-1$

-			} catch (IOException ex) {

-				message= Utilities.getString(fBundle, "errorMessage"); //$NON-NLS-1$

-			} finally {

-				if (left != null) {

-					try {

-						left.close();

-					} catch (IOException ex) {

-					}

-				}

-				if (right != null) {

-					try {

-						right.close();

-					} catch (IOException ex) {

-					}

-				}			

-			}

-			if (message != null)

-				fControl.setText(message);				

-		}

-	}

-

-	public Object getInput() {

-		return fInput;

-	}

-

-	private InputStream getStream(ITypedElement input) throws CoreException {

-		if (input instanceof IStreamContentAccessor)

-			return ((IStreamContentAccessor)input).getContents();

-		return null;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java
deleted file mode 100644
index 364785d..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.*;

-

-/**

- * A factory object for the <code>BinaryCompareViewer</code>.

- * This indirection is necessary because only objects with a default

- * constructor can be created via an extension point

- * (this precludes Viewers).

- */

-public class BinaryCompareViewerCreator implements IViewerCreator {

-

-	public Viewer createViewer(Composite parent, CompareConfiguration mp) {

-		return new BinaryCompareViewer(parent, mp);

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties
deleted file mode 100644
index 2900356..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-

-# @(#)BinaryCompareViewerResources.properties

-#

-# Resource strings for BinaryCompareViewer.java

-

-title= Binary Compare

-

-diffMessageFormat= First bytes differ at position {0}

-deleteConflictMessage= Delete Conflict

-addedMessage= Added Resource

-deletedMessage= Removed Resource

-errorMessage= Internal Error

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java
deleted file mode 100644
index 1a1bdd3..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.*;

-import org.eclipse.swt.widgets.*;

-import org.eclipse.swt.graphics.*;

-import org.eclipse.swt.events.*;

-

-/**

- * A Canvas which reduces flicker by drawing in an off screen buffer.

- */

-public abstract class BufferedCanvas extends Canvas {

-

-	/** The drawable for double buffering */

-	private Image fBuffer;

-

-	public BufferedCanvas(Composite parent, int flags) {

-		super(parent, flags + SWT.NO_BACKGROUND);

-

-		addPaintListener(

-			new PaintListener() {

-				public void paintControl(PaintEvent event) {

-					doubleBufferPaint(event.gc);

-				}

-			}

-		);

-

-		addDisposeListener(

-			new DisposeListener() {

-				public void widgetDisposed(DisposeEvent e) {

-					if (fBuffer != null) {

-						fBuffer.dispose();

-						fBuffer= null;

-					}

-				}

-			}

-		);

-	}

-

-	public void repaint() {

-		if (!isDisposed()) {

-			GC gc= new GC(this);

-			doubleBufferPaint(gc);

-			gc.dispose();

-		}

-	}

-

-	/**

-	 * Double buffer drawing.

-	 * @private

-	 */

-	private void doubleBufferPaint(GC dest) {

-

-		Point size= getSize();

-

-		if (size.x <= 0 || size.y <= 0)

-			return;

-

-		if (fBuffer != null) {

-			Rectangle r= fBuffer.getBounds();

-			if (r.width != size.x || r.height != size.y) {

-				fBuffer.dispose();

-				fBuffer= null;

-			}

-		}

-		if (fBuffer == null)

-			fBuffer= new Image(getDisplay(), size.x, size.y);

-

-		GC gc= new GC(fBuffer);

-		try {

-			gc.setBackground(getBackground());

-			gc.fillRectangle(0, 0, size.x, size.y);

-			doPaint(gc);

-		} finally {

-			gc.dispose();

-		}

-

-		dest.drawImage(fBuffer, 0, 0);

-	}

-

-	abstract public void doPaint(GC gc);

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java
deleted file mode 100644
index 8527591..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java
deleted file mode 100644
index 1e76626..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-

-import org.eclipse.jface.action.Action;

-import org.eclipse.compare.CompareConfiguration;

-

-/**

- * Toggles a boolean property of an <code>ICompareConfiguration</code>.

- */

-public class ChangePropertyAction extends Action {

-

-	private CompareConfiguration fCompareConfiguration;

-	private String fPropertyKey;

-	private ResourceBundle fBundle;

-	private String fPrefix;

-

-

-	public ChangePropertyAction(ResourceBundle bundle, CompareConfiguration cc, String rkey, String pkey) {

-		fPropertyKey= pkey;

-		fBundle= bundle;

-		fPrefix= rkey;

-		Utilities.initAction(this, fBundle, fPrefix);

-		setCompareConfiguration(cc);

-	}

-

-	public void run() {

-		boolean b= !Utilities.getBoolean(fCompareConfiguration, fPropertyKey, false);

-		setChecked(b);

-		if (fCompareConfiguration != null)

-			fCompareConfiguration.setProperty(fPropertyKey, new Boolean(b));

-	}

-

-	public void setChecked(boolean state) {

-		super.setChecked(state);

-		Utilities.initToggleAction(this, fBundle, fPrefix, state);

-	}

-	

-	public void setCompareConfiguration(CompareConfiguration cc) {

-		fCompareConfiguration= cc;

-		setChecked(Utilities.getBoolean(fCompareConfiguration, fPropertyKey, false));

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
deleted file mode 100644
index 4daf9e5..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.jface.action.IAction;

-import org.eclipse.jface.viewers.ISelection;

-

-import org.eclipse.ui.IActionDelegate;

-import org.eclipse.compare.CompareConfiguration;

-import org.eclipse.compare.CompareUI;

-

-

-public class CompareAction implements IActionDelegate {

-

-	private ResourceCompareInput fInput;

-

-	public void run(IAction action) {

-		if (fInput != null) {

-			CompareUI.openCompareEditor(fInput);

-			fInput= null;	// don't reuse this input!

-		}

-	}

-

-	public void selectionChanged(IAction action, ISelection selection) {

-		if (fInput == null) {

-			CompareConfiguration cc= new CompareConfiguration();

-			// buffered merge mode: don't ask for confirmation

-			// when switching between modified resources

-			cc.setProperty(CompareEditor.CONFIRM_SAVE_PROPERTY, new Boolean(false));

-						

-			fInput= new ResourceCompareInput(cc);

-		}

-		action.setEnabled(fInput.setSelection(selection));

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
deleted file mode 100644
index 84e19c6..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.graphics.Point;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

-import org.eclipse.swt.widgets.Button;

-import org.eclipse.swt.layout.*;

-

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.util.Assert;

-import org.eclipse.jface.util.PropertyChangeEvent;

-

-import org.eclipse.ui.actions.WorkspaceModifyOperation;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.OperationCanceledException;

-

-import org.eclipse.compare.CompareEditorInput;

-import org.eclipse.jface.util.IPropertyChangeListener;

-

-

-public class CompareDialog extends Dialog implements IPropertyChangeListener {

-		

-	private CompareEditorInput fCompareEditorInput;

-	private Button fCommitButton;

-

-

-	CompareDialog(Shell shell, CompareEditorInput input) {

-		super(shell);

-		setShellStyle(SWT.CLOSE | SWT.APPLICATION_MODAL | SWT.RESIZE);

-		

-		Assert.isNotNull(input);

-		fCompareEditorInput= input;

-		fCompareEditorInput.addPropertyChangeListener(this);

-	}

-	

-	public boolean close() {

-		if (super.close()) {

-			if (fCompareEditorInput != null)

-				fCompareEditorInput.addPropertyChangeListener(this);

-			return true;

-		}

-		return false;

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Dialog.

-	 */

-	protected void createButtonsForButtonBar(Composite parent) {

-		fCommitButton= createButton(parent, IDialogConstants.OK_ID, Utilities.getString("CompareDialog.commitAction.label"), true); //$NON-NLS-1$

-		fCommitButton.setEnabled(false);

-		createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);

-	}

-

-	public void propertyChange(PropertyChangeEvent event) {

-		if (fCommitButton != null && fCompareEditorInput != null)

-			fCommitButton.setEnabled(fCompareEditorInput.isSaveNeeded());

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Dialog.

-	 */

-	protected Control createDialogArea(Composite parent) {

-						

-		Control c= fCompareEditorInput.createContents(parent);

-		c.setLayoutData(new GridData(GridData.FILL_BOTH));

-		

-		Shell shell= c.getShell();

-		shell.setText(fCompareEditorInput.getTitle());

-		shell.setImage(fCompareEditorInput.getTitleImage());

-

-		return c;

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Window.

-	 */

-	protected Point getInitialSize() {

-		Point size= new Point(0, 0);

-		Shell shell= getParentShell();

-		if (shell != null) {

-			Point parentSize= shell.getSize();

-			size.x= parentSize.x-100;

-			size.y= parentSize.y-100;

-		}

-		if (size.x < 800)

-			size.x= 800;

-		if (size.y < 600)

-			size.y= 600;

-		return size;

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Window.

-	 */

-	public int open() {

-		

-		int rc= super.open();

-		

-		if (rc == OK && fCompareEditorInput.isSaveNeeded()) {

-						

-			WorkspaceModifyOperation operation= new WorkspaceModifyOperation() {

-				public void execute(IProgressMonitor pm) throws CoreException {

-					fCompareEditorInput.saveChanges(pm);

-				}

-			};

-						

-			Shell shell= getParentShell();

-			ProgressMonitorDialog pmd= new ProgressMonitorDialog(shell);				

-			try {

-				operation.run(pmd.getProgressMonitor());				

-				

-			} catch (InterruptedException x) {

-			} catch (OperationCanceledException x) {

-			} catch (InvocationTargetException x) {

-				String title= Utilities.getString("CompareDialog.saveErrorTitle"); //$NON-NLS-1$

-				String msg= Utilities.getString("CompareDialog.saveErrorMessage"); //$NON-NLS-1$

-				MessageDialog.openError(shell, title, msg + x.getTargetException().getMessage());

-			}

-		}

-		

-		return rc;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java
deleted file mode 100644
index 215309b..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.dialogs.MessageDialog;

-import org.eclipse.jface.util.*;

-

-import org.eclipse.ui.*;

-import org.eclipse.ui.actions.WorkspaceModifyOperation;

-import org.eclipse.ui.part.EditorPart;

-

-import org.eclipse.core.resources.IMarker;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.*;

-

-

-/**

- * A CompareEditor takes a ICompareEditorInput as input.

- * Most functionality is delegated to the ICompareEditorInput.

- */

-public class CompareEditor extends EditorPart implements IPropertyChangeListener {

-	

-	public final static String CONFIRM_SAVE_PROPERTY= "org.eclipse.compare.internal.CONFIRM_SAVE_PROPERTY"; //$NON-NLS-1$

-	

-	private IActionBars fActionBars;

-	

-	

-	public CompareEditor() {

-	}

-		

-	/* package */ CompareConfiguration getCompareConfiguration() {

-		IEditorInput input= getEditorInput();

-		if (input instanceof CompareEditorInput)

-			return ((CompareEditorInput)input).getCompareConfiguration();

-		return null;

-	}

-				

-	public void init(IEditorSite site, IEditorInput input) throws PartInitException {

-		

-		if (!(input instanceof CompareEditorInput))

-			throw new PartInitException(Utilities.getString("CompareEditor.invalidInput")); //$NON-NLS-1$

-				

-		CompareEditorInput cei= (CompareEditorInput) input;

-			

-		setSite(site);

-		setInput(input);

-		

-		setTitleImage(cei.getTitleImage());

-		setTitle(cei.getTitle());

-				

-		if (input instanceof IPropertyChangeNotifier)

-			((IPropertyChangeNotifier)input).addPropertyChangeListener(this);

-	}

-

-	public IActionBars getActionBars() {

-		return fActionBars;

-	}

-	

-	public void setActionBars(IActionBars actionBars) {

-		fActionBars= actionBars;

-	}

-	

-	/*

-	 * @see IDesktopPart#createPartControl(Composite)

-	 */

-	public void createPartControl(Composite parent) {

-		parent.setData(this);

-		

-		IEditorInput input= getEditorInput();

-		if (input instanceof CompareEditorInput)

-			((CompareEditorInput) input).createContents(parent);

-	}

-	

-	/*

-	 * @see DesktopPart#dispose

-	 */

-	public void dispose() {

-	

-		IEditorInput input= getEditorInput();

-		if (input instanceof IPropertyChangeNotifier)

-			((IPropertyChangeNotifier)input).removePropertyChangeListener(this);

-								

-		super.dispose();

-	}

-			

-	/*

-	 * @see IDesktopPart#setFocus

-	 */

-	public void setFocus() {

-		IEditorInput input= getEditorInput();

-		if (input instanceof CompareEditorInput)

-			((CompareEditorInput)input).setFocus();

-	}

-	

-	/**

-	 * Returns false because the editor doesn't support "Save As...".

-	 */

-	public boolean isSaveAsAllowed() {

-		return false;

-	}

-	

-	public void gotoMarker(IMarker marker) {

-	}

-	

-	/**

-	 * Always throws an AssertionFailedException.

-	 */

-	/*

-	 * @see IEditorPart#doSaveAs()

-	 */

-	public void doSaveAs() {

-		Assert.isTrue(false); // Save As not supported for CompareEditor

-	}

-	

-	/*

-	 * @see IEditorPart#doSave()

-	 */

-	public void doSave(IProgressMonitor progressMonitor) {

-		

-		final IEditorInput input= getEditorInput();

-		

-		WorkspaceModifyOperation operation= new WorkspaceModifyOperation() {

-			public void execute(IProgressMonitor pm) throws CoreException {

-				if (input instanceof CompareEditorInput)

-					((CompareEditorInput)input).saveChanges(pm);

-			}

-		};

-

-		Shell shell= getSite().getShell();

-		

-		try {

-			

-			operation.run(progressMonitor);

-									

-			firePropertyChange(PROP_DIRTY);

-			

-		} catch (InterruptedException x) {

-		} catch (OperationCanceledException x) {

-		} catch (InvocationTargetException x) {

-			String title= Utilities.getString("CompareEditor.saveError.title"); //$NON-NLS-1$

-			String reason= x.getTargetException().getMessage();

-			MessageDialog.openError(shell, title, Utilities.getFormattedString("CompareEditor.cantSaveError", reason));	//$NON-NLS-1$

-		}

-	}	

-		

-	/*

-	 * @see IEditorPart#isDirty()

-	 */

-	public boolean isDirty() {

-		IEditorInput input= getEditorInput();

-		if (input instanceof CompareEditorInput)

-			return ((CompareEditorInput)input).isSaveNeeded();

-		return false;

-	}

-	

-	public void propertyChange(PropertyChangeEvent event) {

-		if (isDirty())

-			firePropertyChange(PROP_DIRTY);

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java
deleted file mode 100644
index 3fe72b1..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-

-import org.eclipse.jface.action.*;

-

-import org.eclipse.ui.*;

-import org.eclipse.ui.part.EditorActionBarContributor;

-

-import org.eclipse.compare.*;

-

-

-public class CompareEditorContributor extends EditorActionBarContributor {

-	

-	private IEditorPart fActiveEditorPart= null;

-

-	private IgnoreWhiteSpaceAction fIgnoreWhitespace;

-	private NavigationAction fNext;

-	private NavigationAction fPrevious;

-

-	public CompareEditorContributor() {

-		ResourceBundle bundle= CompareUIPlugin.getResourceBundle();

-		fIgnoreWhitespace= new IgnoreWhiteSpaceAction(bundle, null);

-		fNext= new NavigationAction(bundle, true);

-		fPrevious= new NavigationAction(bundle, false);

-	}

-

-	/*

-	 * @see EditorActionBarContributor#contributeToToolBar(IToolBarManager)

-	 */

-	public void contributeToToolBar(IToolBarManager tbm) {

-		tbm.add(new Separator());

-		tbm.add(fIgnoreWhitespace);

-		tbm.add(fNext);

-		tbm.add(fPrevious);

-	}

-	

-	public void setActiveEditor(IEditorPart targetEditor) {

-				

-		if (fActiveEditorPart == targetEditor)

-			return;

-			

-		fActiveEditorPart= targetEditor;

-		

-		if (fActiveEditorPart != null) {

-			IEditorInput input= fActiveEditorPart.getEditorInput();

-			if (input instanceof CompareEditorInput) {

-				CompareEditorInput compareInput= (CompareEditorInput) input;

-				fNext.setCompareEditorInput(compareInput);

-				fPrevious.setCompareEditorInput(compareInput);

-			}

-		}

-			

-		if (targetEditor instanceof CompareEditor) {

-			CompareEditor editor= (CompareEditor) targetEditor;

-			editor.setActionBars(getActionBars());

-		

-			CompareConfiguration cc= editor.getCompareConfiguration();

-			fIgnoreWhitespace.setCompareConfiguration(cc);

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java
deleted file mode 100644
index 96b7c04..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2002.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.MissingResourceException;

-import java.util.ResourceBundle;

-

-public class CompareMessages {

-

-	private static final String RESOURCE_BUNDLE= "org.eclipse.compare.internal.CompareMessages";//$NON-NLS-1$

-

-	private static ResourceBundle fgResourceBundle= ResourceBundle.getBundle(RESOURCE_BUNDLE);

-

-	private CompareMessages() {

-	}

-

-	public static String getString(String key) {

-		try {

-			return fgResourceBundle.getString(key);

-		} catch (MissingResourceException e) {

-			return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
deleted file mode 100644
index 44538ce..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2002.

-# All Rights Reserved.

-# =====================================

-

-ComparePlugin.internal_error= Internal Error

-ExceptionDialog.seeErrorLogMessage= See error log for more details.

-

-#

-# Title format for CompareViewerSwitchingPane

-#

-CompareViewerSwitchingPane.Titleformat= {0}  ({1})

-

-#

-# Title message for StructureDiffViewer if no structural differences could be found

-#

-StructureDiffViewer.NoStructuralDifferences= No Structural Differences

-StructureDiffViewer.StructureError= Couldn't Compare Structures
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java
deleted file mode 100644
index 16df01c..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.KeyAdapter;

-import org.eclipse.swt.events.KeyEvent;

-import org.eclipse.swt.widgets.Control;

-import org.eclipse.swt.widgets.Display;

-

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.CompareEditorInput;

-import org.eclipse.compare.*;

-

-/**

- * Supports cross-pane navigation through differences.

- * XXX: Design is as it is because the feature had to be added without touching API.

- */

-public class CompareNavigator {

-	

-	private boolean fLastDirection= true;

-	private CompareViewerSwitchingPane[] fPanes;

-	

-	public CompareNavigator(CompareViewerSwitchingPane[] panes) {

-		fPanes= panes;

-	}

-

-	public CompareViewerSwitchingPane[] getPanes() {

-		return fPanes;

-	}

-	

-	public void selectChange(boolean next) {

-		

-		fLastDirection= next;

-		

-		// find most down stream CompareViewerPane

-		int n= 0;

-		INavigatable[] navigators= new INavigatable[4];

-		for (int i= 0; i < fPanes.length; i++) {

-			navigators[n]= getNavigator(fPanes[i]);

-			if (navigators[n] != null)

-				n++;

-		}

-									

-		while (n > 0) {

-			n--;

-			if (navigators[n].gotoDifference(next)) {

-				// at end of this navigator

-				continue;

-			} else // not at end

-				return;

-		}

-		// beep

-		if (fPanes[0] != null) {

-			Control c= fPanes[0].getContent();

-			if (c != null) {

-				Display display= c.getDisplay();

-				if (display != null)

-					display.beep();

-			}

-		}

-	}

-

-	private static INavigatable getNavigator(CompareViewerSwitchingPane pane) {

-		if (pane == null)

-			return null;

-		if (pane.isEmpty())

-			return null;

-		Viewer viewer= pane.getViewer();

-		if (viewer == null)

-			return null;

-		Control control= viewer.getControl();

-		if (control == null)

-			return null;

-		Object data= control.getData(INavigatable.NAVIGATOR_PROPERTY);

-		if (data instanceof INavigatable)

-			return (INavigatable) data;

-		return null;

-	}

-	

-	public static void hookNavigation(final Control c) {

-		c.addKeyListener(

-			new KeyAdapter() {

-				public void keyPressed(KeyEvent e) {

-					handleNavigationKeys(e);

-				}

-			}

-		);

-	}

-	

-	public static void handleNavigationKeys(KeyEvent e) {

-		if (e.character == ('E'-0x40)) {

-			if (e.widget instanceof Control) {

-				CompareNavigator nav= findNavigator((Control)e.widget);

-				if (nav != null)

-					nav.selectChange((e.stateMask & SWT.SHIFT) == 0);

-			}

-		}

-	}

-	

-	private static CompareNavigator findNavigator(Control c) {

-		while (c != null && !c.isDisposed()) {	// PR 1GEUVV2

-			Object data= c.getData();

-			if (data instanceof CompareEditorInput) {

-				CompareEditorInput cei= (CompareEditorInput) data;

-				Object adapter= cei.getAdapter(CompareNavigator.class);

-				if (adapter instanceof CompareNavigator)

-					return (CompareNavigator)adapter;

-			}

-			c= c.getParent();

-		}

-		return null;

-	}

-	

-	private boolean resetDirection() {

-		boolean last= fLastDirection;

-		fLastDirection= true;

-		return last;

-	}

-	

-	public static boolean getDirection(Control c) {

-		CompareNavigator nav= findNavigator(c);

-		if (nav != null)

-			return nav.resetDirection();

-		return true;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
deleted file mode 100644
index f8a6484..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.jface.preference.*;

-

-import org.eclipse.ui.IWorkbench;

-import org.eclipse.ui.IWorkbenchPreferencePage;

-import org.eclipse.ui.texteditor.WorkbenchChainedTextFontFieldEditor;

-

-
-public class ComparePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

-		

-	private static final String PREFIX= CompareUIPlugin.PLUGIN_ID + "."; //$NON-NLS-1$

-	public static final String SYNCHRONIZE_SCROLLING= PREFIX + "SynchronizeScrolling"; //$NON-NLS-1$

-	public static final String SHOW_PSEUDO_CONFLICTS= PREFIX + "ShowPseudoConflicts"; //$NON-NLS-1$

-	public static final String INITIALLY_SHOW_ANCESTOR_PANE= PREFIX + "InitiallyShowAncestorPane"; //$NON-NLS-1$

-	public static final String PREF_SAVE_ALL_EDITORS= PREFIX + "SaveAllEditors"; //$NON-NLS-1$

-	public static final String TEXT_FONT= PREFIX + "TextFont"; //$NON-NLS-1$

-

-	public ComparePreferencePage() {

-		super(GRID);

-	}

-	

-	public static void initDefaults(IPreferenceStore store) {

-		store.setDefault(SYNCHRONIZE_SCROLLING, true);

-		store.setDefault(SHOW_PSEUDO_CONFLICTS, false);

-		store.setDefault(INITIALLY_SHOW_ANCESTOR_PANE, false);

-		

-		WorkbenchChainedTextFontFieldEditor.startPropagate(store, TEXT_FONT);

-	}

-

-	static public boolean getSaveAllEditors() {

-		IPreferenceStore store= CompareUIPlugin.getDefault().getPreferenceStore();

-		return store.getBoolean(PREF_SAVE_ALL_EDITORS);

-	}

-	

-	static public void setSaveAllEditors(boolean value) {

-		IPreferenceStore store= CompareUIPlugin.getDefault().getPreferenceStore();

-		store.setValue(PREF_SAVE_ALL_EDITORS, value);

-	}	

-

-	public void init(IWorkbench workbench) {

-	}	

-

-	protected IPreferenceStore doGetPreferenceStore() {

-		return CompareUIPlugin.getDefault().getPreferenceStore();

-	}

-

-	public void createFieldEditors() {

-				

-		Composite parent= getFieldEditorParent();

-			

-		{

-			BooleanFieldEditor editor= new BooleanFieldEditor(SYNCHRONIZE_SCROLLING,

-				Utilities.getString("ComparePreferences.synchronizeScrolling.label"), BooleanFieldEditor.DEFAULT, parent); //$NON-NLS-1$

-			addField(editor);	

-		}

-		

-		// three way merging

-		{

-			BooleanFieldEditor editor= new BooleanFieldEditor(SHOW_PSEUDO_CONFLICTS,

-				Utilities.getString("ComparePreferences.showPseudoConflicts.label"), BooleanFieldEditor.DEFAULT, parent); //$NON-NLS-1$

-			addField(editor);	

-		}

-		

-		{

-			BooleanFieldEditor editor= new BooleanFieldEditor(INITIALLY_SHOW_ANCESTOR_PANE,

-				Utilities.getString("ComparePreferences.initiallyShowAncestorPane.label"), BooleanFieldEditor.DEFAULT, parent); //$NON-NLS-1$

-			addField(editor);	

-		}

-		

-		{

-			WorkbenchChainedTextFontFieldEditor editor= new WorkbenchChainedTextFontFieldEditor(TEXT_FONT,

-				Utilities.getString("ComparePreferences.textFont.label"), parent); //$NON-NLS-1$

-			addField(editor);

-		}

-	}

-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
deleted file mode 100644
index 1edccfb..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
+++ /dev/null
@@ -1,858 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.IOException;

-import java.io.InputStream;

-import java.net.URL;

-import java.net.MalformedURLException;

-import java.lang.reflect.InvocationTargetException;

-import java.util.*;

-

-import org.eclipse.swt.widgets.Display;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Shell;

-

-import org.eclipse.jface.dialogs.MessageDialog;

-import org.eclipse.jface.dialogs.ProgressMonitorDialog;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.resource.ImageDescriptor;

-import org.eclipse.jface.viewers.Viewer;

-import org.eclipse.jface.util.Assert;

-import org.eclipse.jface.preference.IPreferenceStore;

-

-import org.eclipse.ui.internal.SharedImages;

-import org.eclipse.core.runtime.*;

-import org.eclipse.ui.model.IWorkbenchAdapter;

-import org.eclipse.ui.*;

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.ui.plugin.AbstractUIPlugin;

-

-

-/**

- * The Compare UI plug-in 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.

- * <p>

- * This class is the plug-in runtime class for the 

- * <code>"org.eclipse.compare"</code> plug-in.

- * </p>

- */

-public final class CompareUIPlugin extends AbstractUIPlugin {

-	

-	public static final String DTOOL_NEXT= "dlcl16/next_nav.gif";	//$NON-NLS-1$

-	public static final String CTOOL_NEXT= "clcl16/next_nav.gif";	//$NON-NLS-1$

-	public static final String ETOOL_NEXT= "elcl16/next_nav.gif";	//$NON-NLS-1$

-	

-	public static final String DTOOL_PREV= "dlcl16/prev_nav.gif";	//$NON-NLS-1$

-	public static final String CTOOL_PREV= "clcl16/prev_nav.gif";	//$NON-NLS-1$

-	public static final String ETOOL_PREV= "elcl16/prev_nav.gif";	//$NON-NLS-1$

-				

-	/** Status code describing an internal error */

-	public static final int INTERNAL_ERROR= 1;

-

-	private static boolean NORMALIZE_CASE= true;

-

-	private final static String CLASS_ATTRIBUTE= "class"; //$NON-NLS-1$

-	private final static String EXTENSIONS_ATTRIBUTE= "extensions"; //$NON-NLS-1$

-

-	public static final String PLUGIN_ID= "org.eclipse.compare"; //$NON-NLS-1$

-

-	private static final String STRUCTURE_CREATOR_EXTENSION_POINT= "structureCreators"; //$NON-NLS-1$

-	private static final String STRUCTURE_MERGEVIEWER_EXTENSION_POINT= "structureMergeViewers"; //$NON-NLS-1$

-	private static final String CONTENT_MERGEVIEWER_EXTENSION_POINT= "contentMergeViewers"; //$NON-NLS-1$

-	private static final String CONTENT_VIEWER_EXTENSION_POINT= "contentViewers"; //$NON-NLS-1$

-	

-	private static final String COMPARE_EDITOR= PLUGIN_ID + ".CompareEditor"; //$NON-NLS-1$

-	

-	private static final String STRUCTUREVIEWER_ALIASES_PREFERENCE_NAME= "StructureViewerAliases";	//$NON-NLS-1$

-	

-	/** Maps type to icons */

-	private static Map fgImages= new Hashtable(10);

-	/** Maps type to ImageDescriptors */

-	private static Map fgImageDescriptors= new Hashtable(10);

-	/** Maps ImageDescriptors to Images */

-	private static Map fgImages2= new Hashtable(10);

-	

-	private static Map fgStructureCreators= new Hashtable(10);

-	private static Map fgStructureViewerDescriptors= new Hashtable(10);

-	private static Map fgStructureViewerAliases= new Hashtable(10);

-	private static Map fgContentViewerDescriptors= new Hashtable(10);

-	private static Map fgContentMergeViewerDescriptors= new Hashtable(10);

-	

-	private static List fgDisposeOnShutdownImages= new ArrayList();

-	

-	private static ResourceBundle fgResourceBundle;

-

-	private static CompareUIPlugin fgComparePlugin;

-

-	/**

-	 * Creates the <code>CompareUIPlugin</code> object and registers all

-	 * structure creators, content merge viewers, and structure merge viewers

-	 * contributed to this plug-in's extension points.

-	 * <p>

-	 * Note that instances of plug-in runtime classes are automatically created 

-	 * by the platform in the course of plug-in activation.

-	 * </p>

-	 *

-	 * @param descriptor the plug-in descriptor

-	 */

-	public CompareUIPlugin(IPluginDescriptor descriptor) {

-		super(descriptor);

-				

-		fgComparePlugin= this;

-		

-		fgResourceBundle= descriptor.getResourceBundle();

-		

-		registerExtensions();

-		

-		initPreferenceStore();

-	}

-	

-	/**

-	 * @see AbstractUIPlugin#initializeDefaultPreferences

-	 */

-	protected void initializeDefaultPreferences(IPreferenceStore store) {

-		super.initializeDefaultPreferences(store);

-		

-		ComparePreferencePage.initDefaults(store);		

-	}

-	

-	/**

-	 * Registers all structure creators, content merge viewers, and structure merge viewers

-	 * that are found in the XML plugin files.

-	 */

-	private void registerExtensions() {

-		IPluginRegistry registry= Platform.getPluginRegistry();

-		

-		// collect all IStructureCreators

-		IConfigurationElement[] elements= registry.getConfigurationElementsFor(PLUGIN_ID, STRUCTURE_CREATOR_EXTENSION_POINT);

-		for (int i= 0; i < elements.length; i++) {

-			final IConfigurationElement conf= elements[i];

-			String extensions= conf.getAttribute(EXTENSIONS_ATTRIBUTE);

-			registerStructureCreator(extensions,

-				new IStructureCreatorDescriptor() {

-					public IStructureCreator createStructureCreator() {

-						try {

-							return (IStructureCreator) conf.createExecutableExtension(CLASS_ATTRIBUTE);

-						} catch (CoreException ex) {

-						}

-						return null;

-					}

-				}

-			);

-		}

-				

-		// collect all viewers which define the structure mergeviewer extension point

-		elements= registry.getConfigurationElementsFor(PLUGIN_ID, STRUCTURE_MERGEVIEWER_EXTENSION_POINT);

-		for (int i= 0; i < elements.length; i++) {

-			ViewerDescriptor desc= new ViewerDescriptor(elements[i]);

-			String ext= desc.getExtension();

-			if (ext != null)

-				registerStructureViewerDescriptor(desc.getExtension(), desc);

-		}

-		

-		// collect all viewers which define the content mergeviewer extension point

-		elements= registry.getConfigurationElementsFor(PLUGIN_ID, CONTENT_MERGEVIEWER_EXTENSION_POINT);

-		for (int i= 0; i < elements.length; i++) {

-			ViewerDescriptor desc= new ViewerDescriptor(elements[i]);

-			String ext= desc.getExtension();

-			if (ext != null)

-				registerContentMergeViewerDescriptor(desc.getExtension(), desc);

-		}

-		

-		// collect all viewers which define the content viewer extension point

-		elements= registry.getConfigurationElementsFor(PLUGIN_ID, CONTENT_VIEWER_EXTENSION_POINT);

-		for (int i= 0; i < elements.length; i++) {

-			ViewerDescriptor desc= new ViewerDescriptor(elements[i]);

-			String ext= desc.getExtension();

-			if (ext != null)

-				registerContentViewerDescriptor(desc.getExtension(), desc);

-		}

-	}

-	

-	/**

-	 * Returns the singleton instance of this plug-in runtime class.

-	 *

-	 * @return the compare plug-in instance

-	 */

-	public static CompareUIPlugin getDefault() {

-		return fgComparePlugin;

-	}

-	

-	/**

-	 * Returns this plug-in's resource bundle.

-	 *

-	 * @return the plugin's resource bundle

-	 */

-	public static ResourceBundle getResourceBundle() {

-		return fgResourceBundle;

-	}

-	

-	public static IWorkbench getActiveWorkbench() {

-		CompareUIPlugin plugin= getDefault();

-		if (plugin == null)

-			return null;

-		return plugin.getWorkbench();

-	}

-	

-	public static IWorkbenchWindow getActiveWorkbenchWindow() {

-		IWorkbench workbench= getActiveWorkbench();

-		if (workbench == null)

-			return null;	

-		return workbench.getActiveWorkbenchWindow();

-	}

-	

-	/**

-	 * Returns the active workkbench page or <code>null</code> if

-	 * no active workkbench page can be determined.

-	 *

-	 * @return the active workkbench page or <code>null</code> if

-	 * 	no active workkbench page can be determined

-	 */

-	private static IWorkbenchPage getActivePage() {

-		IWorkbenchWindow window= getActiveWorkbenchWindow();

-		if (window == null)

-			return null;

-		return window.getActivePage();

-	}

-	

-	/**

-	 * Returns the SWT Shell of the active workbench window or <code>null</code> if

-	 * no workbench window is active.

-	 *

-	 * @return the SWT Shell of the active workbench window, or <code>null</code> if

-	 * 	no workbench window is active

-	 */

-	public static Shell getShell() {

-		IWorkbenchWindow window= getActiveWorkbenchWindow();

-		if (window == null)

-			return null;

-		return window.getShell();

-	}

-

-	/**

-	 * 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) {

-		if (image != null)

-			fgDisposeOnShutdownImages.add(image);

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Plugin.

-	 * Frees all resources of the compare plug-in.

-	 */

-	public void shutdown() throws CoreException {

-		super.shutdown();

-		

-		if (fgDisposeOnShutdownImages != null) {

-			Iterator i= fgDisposeOnShutdownImages.iterator();

-			while (i.hasNext()) {

-				Image img= (Image) i.next();

-				if (!img.isDisposed())

-					img.dispose();

-			}

-			fgImages= null;

-		}

-	}

-	

-	/**

-	 * Performs the comparison described by the given input and opens a

-	 * compare editor on the result.

-	 *

-	 * @param input the input on which to open the compare editor

-	 * @see CompareEditorInput

-	 */

-	public void openCompareEditor(CompareEditorInput input) {

-		

-		if (compareResultOK(input)) {				

-			IWorkbenchPage activePage= getActivePage();

-			if (activePage != null) {

-				try {

-					activePage.openEditor(input, COMPARE_EDITOR);

-				} catch (PartInitException e) {

-					MessageDialog.openError(getShell(), Utilities.getString("CompareUIPlugin.openEditorError"), e.getMessage()); //$NON-NLS-1$

-				}

-			} else {

-				MessageDialog.openError(getShell(),

-						Utilities.getString("CompareUIPlugin.openEditorError"), //$NON-NLS-1$

-						Utilities.getString("CompareUIPlugin.noActiveWorkbenchPage")); //$NON-NLS-1$

-			}

-		}

-	}

-

-	/**

-	 * Performs the comparison described by the given input and opens a

-	 * compare dialog on the result.

-	 *

-	 * @param input the input on which to open the compare editor

-	 * @see CompareEditorInput

-	 */

-	public void openCompareDialog(final CompareEditorInput input) {

-				

-		if (compareResultOK(input)) {

-			CompareDialog dialog= new CompareDialog(getShell(), input);

-			dialog.open();

-		}

-	}

-	

-	/**

-	 * @return <code>true</code> if compare result is OK to show, <code>false</code> otherwise

-	 */

-	private boolean compareResultOK(CompareEditorInput input) {

-		final Shell shell= getShell();

-		try {

-			

-			// run operation in separate thread and make it canceable

-			new ProgressMonitorDialog(shell).run(true, true, input);

-			

-			String message= input.getMessage();

-			if (message != null) {

-				MessageDialog.openError(shell, Utilities.getString("CompareUIPlugin.compareFailed"), message); //$NON-NLS-1$

-				return false;

-			}

-			

-			if (input.getCompareResult() == null) {

-				MessageDialog.openInformation(shell, Utilities.getString("CompareUIPlugin.dialogTitle"), Utilities.getString("CompareUIPlugin.noDifferences")); //$NON-NLS-2$ //$NON-NLS-1$

-				return false;

-			}

-			

-			return true;

-

-		} catch (InterruptedException x) {

-			// cancelled by user		

-		} catch (InvocationTargetException x) {

-			MessageDialog.openError(shell, Utilities.getString("CompareUIPlugin.compareFailed"), x.getTargetException().getMessage()); //$NON-NLS-1$

-		}

-		return false;

-	}

-		

-	/**

-	 * Registers an image for the given type.

-	 */

-	private static void registerImage(String type, Image image, boolean dispose) {

-		fgImages.put(normalizeCase(type), image);

-		if (image != null && dispose) {

-			fgDisposeOnShutdownImages.add(image);

-		}

-	}

-	

-	/**

-	 * 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) {

-		fgImageDescriptors.put(normalizeCase(type), descriptor);

-	}

-	

-	public static ImageDescriptor getImageDescriptor(String relativePath) {

-		

-		URL installURL= null;

-		if (fgComparePlugin != null)

-			installURL= fgComparePlugin.getDescriptor().getInstallURL();

-					

-		if (installURL != null) {

-			try {

-				URL url= new URL(installURL, Utilities.getIconPath(null) + relativePath);

-				return ImageDescriptor.createFromURL(url);

-			} catch (MalformedURLException e) {

-				Assert.isTrue(false);

-			}

-		}

-		return null;

-	}

-	

-	/**

-	 * 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 automitically 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) {

-		

-		type= normalizeCase(type);

-		

-		boolean dispose= false;

-		Image image= null;

-		if (type != null)

-			image= (Image) fgImages.get(type);

-		if (image == null) {

-			ImageDescriptor id= (ImageDescriptor) fgImageDescriptors.get(type);

-			if (id != null) {

-				image= id.createImage();

-				dispose= true;

-			}

-				

-			if (image == null) {

-				if (fgComparePlugin != null) {

-					if (ITypedElement.FOLDER_TYPE.equals(type)) {

-						image= getDefault().getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);

-						//image= SharedImages.getImage(ISharedImages.IMG_OBJ_FOLDER);

-					} else {

-						image= createWorkbenchImage(type);

-						dispose= true;

-					}

-				} else {

-					id= (ImageDescriptor) fgImageDescriptors.get(normalizeCase("file")); //$NON-NLS-1$

-					image= id.createImage();

-					dispose= true;

-				}

-			}

-			if (image != null)

-				registerImage(type, image, dispose);

-		}

-		return 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 automitically 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) {

-		if (adaptable != null) {

-			Object o= adaptable.getAdapter(IWorkbenchAdapter.class);

-			if (o instanceof IWorkbenchAdapter) {

-				ImageDescriptor id= ((IWorkbenchAdapter) o).getImageDescriptor(adaptable);

-				if (id != null) {

-					Image image= (Image)fgImages2.get(id);

-					if (image == null) {

-						image= id.createImage();

-						try {

-							fgImages2.put(id, image);

-						} catch (NullPointerException ex) {

-						}

-						fgDisposeOnShutdownImages.add(image);

-

-					}

-					return image;

-				}

-			}

-		}

-		return null;

-	}

-	

-	private static Image createWorkbenchImage(String type) {

-		IEditorRegistry er= getDefault().getWorkbench().getEditorRegistry();

-		ImageDescriptor id= er.getImageDescriptor("foo." + type); //$NON-NLS-1$

-		return id.createImage();

-	}

-	

-	/**

-	 * Registers the given structure creator descriptor for one or more types.

-	 *

-	 * @param types one or more types separated by commas and whitespace

-	 * @param descriptor the descriptor to register

-	 */

-	public static void registerStructureCreator(String types, IStructureCreatorDescriptor descriptor) {

-		if (types != null) {

-			StringTokenizer tokenizer= new StringTokenizer(types, ","); //$NON-NLS-1$

-			while (tokenizer.hasMoreElements()) {

-				String extension= tokenizer.nextToken().trim();

-				fgStructureCreators.put(normalizeCase(extension), descriptor);

-			}

-		}

-	}

-	

-	/**

-	 * Returns an structure creator descriptor for the given type.

-	 *

-	 * @param type the type for which to find a descriptor

-	 * @return a descriptor for the given type, or <code>null</code> if no

-	 *   descriptor has been registered

-	 */

-	public static IStructureCreatorDescriptor getStructureCreator(String type) {

-		return (IStructureCreatorDescriptor) fgStructureCreators.get(normalizeCase(type));

-	}

-	

-	/**

-	 * Registers the given structure viewer descriptor for one or more types.

-	 *

-	 * @param types one or more types separated by commas and whitespace

-	 * @param the descriptor to register

-	 */

-	public static void registerStructureViewerDescriptor(String types, IViewerDescriptor descriptor) {

-		StringTokenizer tokenizer= new StringTokenizer(types, ","); //$NON-NLS-1$

-		while (tokenizer.hasMoreElements()) {

-			String extension= tokenizer.nextToken().trim();

-			fgStructureViewerDescriptors.put(normalizeCase(extension), descriptor);

-		}

-	}

-	

-	/**

-	 * Registers the given content merge viewer descriptor for one or more types.

-	 *

-	 * @param types one or more types separated by commas and whitespace

-	 * @param descriptor the descriptor to register

-	 */

-	public static void registerContentMergeViewerDescriptor(String types, IViewerDescriptor descriptor) {

-		StringTokenizer tokenizer= new StringTokenizer(types, ","); //$NON-NLS-1$

-		while (tokenizer.hasMoreElements()) {

-			String extension= tokenizer.nextToken().trim();

-			fgContentMergeViewerDescriptors.put(normalizeCase(extension), descriptor);

-		}

-	}

-	

-	/**

-	 * Registers the given content viewer descriptor for one or more types.

-	 *

-	 * @param types one or more types separated by commas and whitespace

-	 * @param descriptor the descriptor to register

-	 */

-	public static void registerContentViewerDescriptor(String types, IViewerDescriptor descriptor) {

-		StringTokenizer tokenizer= new StringTokenizer(types, ","); //$NON-NLS-1$

-		while (tokenizer.hasMoreElements()) {

-			String extension= tokenizer.nextToken().trim();

-			fgContentViewerDescriptors.put(normalizeCase(extension), descriptor);

-		}

-	}

-		

-	/**

-	 * 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) {

-

-		if (input.getLeft() == null || input.getRight() == null)	// we don't show the structure of additions or deletions

-			return null;

-			

-		String type= getType(input);

-		if (type == null)

-			return null;

-			

-		type= normalizeCase(type);

-			

-		IViewerDescriptor vd= (IViewerDescriptor) fgStructureViewerDescriptors.get(type);

-		if (vd == null) {

-			String alias= (String) fgStructureViewerAliases.get(type);

-			if (alias != null)

-				vd= (IViewerDescriptor) fgStructureViewerDescriptors.get(alias);

-		}

-		if (vd != null)

-			return vd.createViewer(oldViewer, parent, configuration);

-			

-		IStructureCreatorDescriptor scc= getStructureCreator(type);

-		if (scc != null) {

-			IStructureCreator sc= scc.createStructureCreator();

-			if (sc != null) {

-				StructureDiffViewer sdv= new StructureDiffViewer(parent, configuration);

-				sdv.setStructureCreator(sc);

-				return sdv;

-			}

-		}

-		return null;

-	}

-	

-	/**

-	 * 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, Object in, Composite parent, CompareConfiguration cc) {

-		

-		if (in instanceof IStreamContentAccessor) {

-			String type= ITypedElement.TEXT_TYPE;

-			if (in instanceof ITypedElement) {

-				ITypedElement tin= (ITypedElement) in;

-				type= tin.getType();

-			} 

-			type= normalizeCase(type);

-			

-			IViewerDescriptor vd= (IViewerDescriptor) fgContentViewerDescriptors.get(type);

-			Viewer viewer= null;

-			if (vd != null) {

-				viewer= vd.createViewer(oldViewer, parent, cc);

-				if (viewer != null)

-					return viewer;

-			}

-			// fallback

-			return new TextViewer(parent);

-		}

-

-		ICompareInput input= (ICompareInput) in;

-		String type= getType(input);

-		type= normalizeCase(type);

-		

-		if (ITypedElement.FOLDER_TYPE.equals(type))

-			return null;

-			

-		if (type != null) {

-			IViewerDescriptor vd= (IViewerDescriptor) fgContentMergeViewerDescriptors.get(type);

-			Viewer viewer= null;

-			if (vd != null) {

-				viewer= vd.createViewer(oldViewer, parent, cc);

-				if (viewer != null)

-					return viewer;

-			}

-		}

-		

-		// fallback

-		String leftType= guessType(input.getLeft());

-		String rightType= guessType(input.getRight());

-			

-		if (leftType != null || rightType != null) {

-			boolean right_text= rightType != null && ITypedElement.TEXT_TYPE.equals(rightType);

-			boolean left_text= leftType != null && ITypedElement.TEXT_TYPE.equals(leftType);

-			if ((leftType == null && right_text) || (left_text && rightType == null) || (left_text && right_text))

-				type= ITypedElement.TEXT_TYPE;

-			else

-				type= "binary"; //$NON-NLS-1$

-			

-			IViewerDescriptor vd= (IViewerDescriptor) fgContentMergeViewerDescriptors.get(normalizeCase(type));

-			if (vd != null)

-				return vd.createViewer(oldViewer, parent, cc);

-		}

-		return null;

-	}

-		

-	/**

-	 * Determines the type of the given threeway input by analyzing

-	 * the types (file extension) of the individual parts.

-	 * Returns null if no type can be determined.

-	 */

-	private static String getType(ICompareInput input) {

-		ITypedElement ancestor= input.getAncestor();

-		ITypedElement left= input.getLeft();

-		ITypedElement right= input.getRight();

-		

-		String[] types= new String[3];

-		int cnt= 0;

-		

-		if (ancestor != null) {

-			String type= ancestor.getType();

-			if (type != null)

-				types[cnt++]= type;

-		}

-		if (left != null) {

-			String type= left.getType();

-			if (type != null)

-				types[cnt++]= type;

-		}

-		if (right != null) {

-			String type= right.getType();

-			if (type != null)

-				types[cnt++]= type;

-		}

-		boolean homogenous= false;

-		switch (cnt) {

-		case 1:

-			homogenous= true;

-			break;

-		case 2:

-			homogenous= types[0].equals(types[1]);

-			break;

-		case 3:

-			homogenous= types[0].equals(types[1]) && types[1].equals(types[2]);

-			break;

-		}

-		if (homogenous)

-			return types[0];

-		return null;

-	}

-	

-	/**

-	 * Guesses the file type of the given input.

-	 * Returns ITypedElement.TEXT_TYPE if no line is longer than 1000 bytes.

-	 * Returns ITypedElement.UNKNOWN_TYPE if a line is longer that 1000 bytes.

-	 * Returns <code>null</code> if the input isn't an <code>IStreamContentAccessor</code>.

-	 */

-	private static String guessType(ITypedElement input) {

-		if (input instanceof IStreamContentAccessor) {

-			IStreamContentAccessor sca= (IStreamContentAccessor) input;

-			InputStream is= null;

-			try {

-				is= sca.getContents();

-				if (is == null)

-					return null;

-				int lineLength= 0;

-				while (true) {

-					int c= is.read();

-					if (c == -1)	// EOF

-						break;

-					if (c == '\n' || c == '\r')	// reset line length

-						lineLength= 0;

-					else

-						lineLength++;

-					if (lineLength > 1000)

-						return ITypedElement.UNKNOWN_TYPE;

-				}

-				return ITypedElement.TEXT_TYPE;

-			} catch (CoreException ex) {

-				// be silent and return UNKNOWN_TYPE

-			} catch (IOException ex) {

-				// be silent and return UNKNOWN_TYPE

-			} finally {

-				if (is != null) {

-					try {

-						is.close();

-					} catch (IOException ex) {

-					}

-				}

-			}

-			return ITypedElement.UNKNOWN_TYPE;

-		}

-		return null;

-	}

-	

-	private static IViewerDescriptor getContentViewerDescriptor2(String type) {

-		return (IViewerDescriptor) fgContentMergeViewerDescriptors.get(normalizeCase(type));

-	}

-	

-	private static String normalizeCase(String s) {

-		if (NORMALIZE_CASE && s != null)

-			return s.toUpperCase();

-		return s;

-	}

-	

-	//---- alias mgmt

-	

-	private void initPreferenceStore() {

-		//System.out.println("initPreferenceStore");

-		IPreferenceStore ps= getPreferenceStore();

-		if (ps != null) {

-			String aliases= ps.getString(STRUCTUREVIEWER_ALIASES_PREFERENCE_NAME);

-			//System.out.println("  <" + aliases + ">");

-			if (aliases != null && aliases.length() > 0) {

-				StringTokenizer st= new StringTokenizer(aliases, " ");	//$NON-NLS-1$

-				while (st.hasMoreTokens()) {

-					String pair= st.nextToken();

-					int pos= pair.indexOf('.');

-					if (pos > 0) {

-						String key= pair.substring(0, pos);

-						String alias= pair.substring(pos+1);

-						fgStructureViewerAliases.put(key, alias);

-						//System.out.println("<" + key + "><" + alias + ">");

-					}

-				}

-			}

-		}		

-	}

-	

-	/**

-	 * Converts the aliases into a single string before they are stored

-	 * in the preference store.

-	 * The format is:

-	 * <key> '.' <alias> ' ' <key> '.' <alias> ...

-	 */

-	protected void savePreferenceStore() {

-		//System.out.println("savePreferenceStore");

-		IPreferenceStore ps= getPreferenceStore();

-		if (ps != null) {

-			StringBuffer sb= new StringBuffer();

-			Iterator iter= fgStructureViewerAliases.keySet().iterator();

-			while (iter.hasNext()) {

-				String key= (String) iter.next();

-				String alias= (String) fgStructureViewerAliases.get(key);

-				sb.append(key);

-				sb.append('.');

-				sb.append(alias);

-				sb.append(' ');

-			}

-			//System.out.println("  <" + sb.toString() + ">");

-			ps.setValue(STRUCTUREVIEWER_ALIASES_PREFERENCE_NAME, sb.toString());

-		}

-		super.savePreferenceStore();

-	}

-

-	public static void addStructureViewerAlias(String type, String alias) {

-		//System.out.println("addStructureViewerAlias: " + type + " " + alias);

-		fgStructureViewerAliases.put(normalizeCase(alias), normalizeCase(type));

-	}

-	

-	public static void removeAllStructureViewerAliases(String type) {

-		String t= normalizeCase(type);

-		Set entrySet= fgStructureViewerAliases.entrySet();

-		for (Iterator iter= entrySet.iterator(); iter.hasNext(); ) {

-			Map.Entry entry= (Map.Entry)iter.next();

-			if (entry.getValue().equals(t))

-				iter.remove();

-		}

-	}

-	

-	/**

-	 * Returns an array of all editors that have an unsaved content. If the identical content is 

-	 * presented in more than one editor, only one of those editor parts is part of the result.

-	 * 

-	 * @return an array of all dirty editor parts.

-	 */

-	public static IEditorPart[] getDirtyEditors() {

-		Set inputs= new HashSet(7);

-		ArrayList result= new ArrayList(0);

-		IWorkbench workbench= CompareUIPlugin.getDefault().getWorkbench();

-		IWorkbenchWindow[] windows= workbench.getWorkbenchWindows();

-		for (int i= 0; i < windows.length; i++) {

-			IWorkbenchPage[] pages= windows[i].getPages();

-			for (int x= 0; x < pages.length; x++) {

-				IEditorPart[] editors= pages[x].getEditors();

-				for (int z= 0; z < editors.length; z++) {

-					IEditorPart editor= editors[z];

-					IEditorInput input= editor.getEditorInput();

-					if (editor.isDirty() && !inputs.contains(input)) {

-						inputs.add(input);

-						result.add(editor);

-					}

-				}

-			}

-		}

-		return (IEditorPart[])result.toArray(new IEditorPart[result.size()]);

-	}

-	

-	public static void log(Throwable e) {

-		log(new Status(IStatus.ERROR, getPluginId(), INTERNAL_ERROR, CompareMessages.getString("JavaPlugin.internal_error"), e)); //$NON-NLS-1$

-	}

-	

-	public static void log(IStatus status) {

-		getDefault().getLog().log(status);

-	}

-	

-	public static String getPluginId() {

-		return getDefault().getDescriptor().getUniqueIdentifier();

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java
deleted file mode 100644
index dc5191d..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-public class CompareWithEditionAction extends EditionAction {

-	

-	public CompareWithEditionAction() {

-		super(false, "org.eclipse.compare.internal.CompareWithEditionAction"); //$NON-NLS-1$

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties
deleted file mode 100644
index 83b21aa..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# ====================================

-

-# @(#)CompareWithEditionAction.properties

-#

-# Resources for CompareWithEditionAction.java

-

-title= Compare with Local History

-

-treeTitleFormat= Local History of ''{0}''

-dateIcon= obj16/day_obj.gif

-timeIcon= obj16/resource_obj.gif

-

-treeFormat= {0}

-workspaceTreeFormat {0} (Workspace File)

-parseErrorFormat= {0} (Parse Error)

-

-editionLabel= Local History ({0})

-workspaceEditionLabel= Workspace File

-

-targetLabel= Editor Buffer

-workspaceTargetLabel= Workspace File

-

-todayFormat= Today ({0})

-yesterdayFormat= Yesterday ({0})

-dayFormat= {0}

-

-closeButton.label=Done

-noLocalHistoryError= No local history available for selected resource.

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java
deleted file mode 100644
index 2e166ef..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.graphics.*;

-

-import org.eclipse.jface.resource.CompositeImageDescriptor;

-import org.eclipse.jface.resource.ImageDescriptor;

-

-/**

- * Combines an image with an overlay.

- */

-public class DiffImage extends CompositeImageDescriptor {

-

-	static final int HEIGHT= 16;

-

-	private Image fBaseImage;

-	private ImageDescriptor fOverlayImage;

-	private int fWidth;

-	private boolean fLeft= true;

-

-	public DiffImage(Image base, ImageDescriptor overlay, int w) {

-		fBaseImage= base;

-		fOverlayImage= overlay;

-		fWidth= w;

-	}

-

-	public DiffImage(Image base, ImageDescriptor overlay, int w, boolean onLeft) {

-		fBaseImage= base;

-		fOverlayImage= overlay;

-		fWidth= w;

-		fLeft= onLeft;

-	}

-

-	protected Point getSize() {

-		return new Point(fWidth, HEIGHT);

-	}

-

-	protected void drawCompositeImage(int width, int height) {

-		if (fLeft) {

-			if (fBaseImage != null) {

-				ImageData base= fBaseImage.getImageData();

-				if (base == null)

-					base= DEFAULT_IMAGE_DATA;

-				drawImage(base, fWidth - base.width, 0);

-			}

-	

-			if (fOverlayImage != null) {

-				ImageData overlay= fOverlayImage.getImageData();

-				if (overlay == null)

-					overlay= DEFAULT_IMAGE_DATA;

-				drawImage(overlay, 0, (HEIGHT - overlay.height) / 2);

-			}

-		} else {

-			if (fBaseImage != null) {

-				ImageData base= fBaseImage.getImageData();

-				if (base == null)

-					base= DEFAULT_IMAGE_DATA;

-				drawImage(base, 0, 0);

-			}

-	

-			if (fOverlayImage != null) {

-				ImageData overlay= fOverlayImage.getImageData();

-				if (overlay == null)

-					overlay= DEFAULT_IMAGE_DATA;

-				drawImage(overlay, fWidth - overlay.width, (HEIGHT - overlay.height) / 2);

-			}

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
deleted file mode 100644
index 97239ac..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWTError;

-import org.eclipse.jface.text.*;

-import org.eclipse.compare.rangedifferencer.IRangeComparator;

-import org.eclipse.compare.contentmergeviewer.ITokenComparator;

-

-/**

- * Implements the <code>IRangeComparator</code> interface for lines in a document.

- * A <code>DocLineComparator</code> is used as the input for the <code>RangeDifferencer</code>

- * engine to perform a line oriented compare on documents.

- * <p>

- * A <code>DocLineComparator</code> doesn't know anything about line separators because

- * its notion of lines is solely defined in the underlying <code>IDocument</code>.

- */

-public class DocLineComparator implements ITokenComparator {

-

-	private IDocument fDocument;

-	private int fLineOffset;

-	private int fLineCount;

-	private int fLength;

-	private boolean fIgnoreWhiteSpace;

-

-	/**

-	 * Creates a <code>DocLineComparator</code> for the given document range.

-	 * ignoreWhiteSpace controls whether comparing lines (in method

-	 * <code>rangesEqual<code>) should ignore whitespace.

-	 *

-	 * @param document the document from which the lines are taken

-	 * @param region if non-<code>null</code> only lines within this range are taken

-	 * @param ignoreWhiteSpace if <code>true</code> white space is ignored when comparing lines

-	 */

-	public DocLineComparator(IDocument document, IRegion region, boolean ignoreWhiteSpace) {

-

-		fDocument= document;

-		fIgnoreWhiteSpace= ignoreWhiteSpace;

-

-		fLineOffset= 0;

-		if (region != null) {

-			fLength= region.getLength();

-			int start= region.getOffset();

-			try {

-				fLineOffset= fDocument.getLineOfOffset(start);

-			} catch (BadLocationException ex) {

-			}

-

-			if (fLength == 0)

-				fLineCount= 0;

-			else {

-				int endLine= fDocument.getNumberOfLines();

-				try {

-					endLine= fDocument.getLineOfOffset(start + fLength);

-				} catch (BadLocationException ex) {

-				}

-				fLineCount= endLine - fLineOffset + 1;

-			}

-

-		} else {

-			fLength= document.getLength();

-			fLineCount= fDocument.getNumberOfLines();

-		}

-	}

-

-	/**

-	 * Returns the number of lines in the document.

-	 *

-	 * @return number of lines

-	 */

-	public int getRangeCount() {

-		return fLineCount;

-	}

-

-	/* (non Javadoc)

-	 * see ITokenComparator.getTokenStart

-	 */

-	public int getTokenStart(int line) {

-		try {

-			IRegion r= fDocument.getLineInformation(fLineOffset + line);

-			return r.getOffset();

-		} catch (BadLocationException ex) {

-			return fDocument.getLength();

-		}

-	}

-

-	/* (non Javadoc)

-	 * Returns the length of the given line.

-	 * see ITokenComparator.getTokenLength

-	 */

-	public int getTokenLength(int line) {

-		return getTokenStart(line+1) - getTokenStart(line);

-//		try {

-//			IRegion r= fDocument.getLineInformation(fLineOffset + line);

-//			return r.getLength();

-//		} catch (BadLocationException ex) {

-//		}

-//		return 0;

-	}

-

-	/**

-	 * Returns <code>true</code> if a line given by the first index

-	 * matches a line specified by the other <code>IRangeComparator</code> and index.

-	 *

-	 * @param thisIndex	the number of the line within this range comparator

-	 * @param other the range comparator to compare this with

-	 * @param otherIndex the number of the line within the other comparator

-	 * @return <code>true</code> if the lines are equal

-	 */

-	public boolean rangesEqual(int thisIndex, IRangeComparator other0, int otherIndex) {

-

-		if (other0 != null && other0.getClass() == getClass()) {

-			DocLineComparator other= (DocLineComparator) other0;

-

-			if (fIgnoreWhiteSpace) {

-				String s1= extract(thisIndex);

-				String s2= other.extract(otherIndex);

-				return compare(s1, s2);

-			}

-

-			int tlen= getTokenLength(thisIndex);

-			int olen= other.getTokenLength(otherIndex);

-			if (tlen == olen) {

-				String s1= extract(thisIndex);

-				String s2= other.extract(otherIndex);

-				return s1.equals(s2);

-			}

-		}

-		return false;

-	}

-

-	/**

-	 * Aborts the comparison if the number of tokens is too large.

-	 *

-	 * @return <code>true</code> to abort a token comparison

-	 */

-	public boolean skipRangeComparison(int length, int max, IRangeComparator other) {

-		

-//		if (max > 10000)

-//			return true;

-		return false;

-	}

-		

-	//---- private methods

-	

-	/**

-	 * Extract a single line from the underlying document without the line separator.

-	 *

-	 * @param line the number of the line to extract

-	 * @return the contents of the line as a String

-	 */

-	private String extract(int line) {

-		if (line < fLineCount) {

-			try {

-				IRegion r= fDocument.getLineInformation(fLineOffset + line);

-				return fDocument.get(r.getOffset(), r.getLength());

-			} catch(BadLocationException e) {

-			}

-		}

-		return ""; //$NON-NLS-1$

-	}

-

-	private boolean compare(String s1, String s2) {

-		int i1= 0;

-		int i2= 0;

-		int l1= s1.length();

-		int l2= s2.length();

-		char c1= ' ';

-		char c2= ' ';

-		while (i1 < l1 || i2 < l2) {

-			if (i1 < l1) {

-				c1= s1.charAt(i1);

-				if (Character.isWhitespace(c1)) {

-					i1++;

-					continue;

-				}

-			}

-			if (i2 < l2) {

-				c2= s2.charAt(i2);

-				if (Character.isWhitespace(c2)) {

-					i2++;

-					continue;

-				}

-			}

-			if (c1 != c2)

-				return false;

-			i1++;

-			i2++;

-		}

-		return true;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java
deleted file mode 100644
index f7f87fa..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.InputStream;

-import java.io.ByteArrayInputStream;

-import java.lang.reflect.InvocationTargetException;

-import java.util.ResourceBundle;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.action.IAction;

-import org.eclipse.jface.dialogs.MessageDialog;

-import org.eclipse.jface.dialogs.ProgressMonitorDialog;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.jface.text.BadLocationException;

-

-import org.eclipse.ui.*;

-import org.eclipse.ui.part.FileEditorInput;

-import org.eclipse.ui.texteditor.ITextEditor;

-import org.eclipse.ui.texteditor.IDocumentProvider;

-import org.eclipse.ui.actions.WorkspaceModifyOperation;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.compare.IStreamContentAccessor;

-

-

-public class EditionAction implements IActionDelegate {

-

-	/**

-	 * Implements the IStreamContentAccessor and ITypedElement protocols

-	 * for a Document.

-	 */

-	class DocumentBufferNode implements ITypedElement, IStreamContentAccessor {

-		

-		private IDocument fDocument;

-		private String type;

-		private IFile fFile;

-		

-		DocumentBufferNode(IDocument document, IFile file) {

-			fDocument= document;

-			fFile= file;

-		}

-		

-		public String getName() {

-			return fFile.getName();

-		}

-		

-		public String getType() {

-			return fFile.getFileExtension();

-		}

-		

-		public Image getImage() {

-			return null;

-		}

-		

-		public InputStream getContents() {

-			return new ByteArrayInputStream(fDocument.get().getBytes());

-		}

-	}

-

-	private ISelection fSelection;

-	private String fBundleName;

-	private boolean fReplaceMode;

-	protected boolean fPrevious= false;

-	

-	EditionAction(boolean replaceMode, String bundleName) {

-		fReplaceMode= replaceMode;

-		fBundleName= bundleName;

-	}

-

-	public void selectionChanged(IAction a, ISelection s) {

-		fSelection= s;

-	}

-

-	public void run(IAction action) {

-			

-		Object[] s= Utilities.toArray(fSelection);

-		

-		for (int i= 0; i < s.length; i++) {

-			Object o= s[i];

-			if (o instanceof IFile) {

-				doFromHistory((IFile)o);

-				continue;

-			}

-			if (o instanceof IAdaptable) {

-				IAdaptable a= (IAdaptable) o;

-				Object adapter= a.getAdapter(IResource.class);

-				if (adapter instanceof IFile) {

-					doFromHistory((IFile)adapter);

-				}

-				continue;

-			}

-		}

-	}

-

-	private void doFromHistory(final IFile file) {

-						

-		ResourceBundle bundle= ResourceBundle.getBundle(fBundleName);

-		String title= Utilities.getString(bundle, "title"); //$NON-NLS-1$

-			

-		Shell parentShell= CompareUIPlugin.getShell();

-		

-		IFileState states[]= null;

-		try {

-			states= file.getHistory(null);

-		} catch (CoreException ex) {		

-			MessageDialog.openError(parentShell, title, ex.getMessage());

-			return;

-		}

-		

-		if (states == null || states.length <= 0) {

-			String msg= Utilities.getString(bundle, "noLocalHistoryError"); //$NON-NLS-1$

-			MessageDialog.openInformation(parentShell, title, msg);

-			return;

-		}

-		

-		ITypedElement base= new ResourceNode(file);

-		

-		IDocument document= getDocument(file);

-		ITypedElement target= base;

-		if (document != null)

-			target= new DocumentBufferNode(document, file);

-	

-		ITypedElement[] editions= new ITypedElement[states.length+1];

-		editions[0]= base;

-		for (int i= 0; i < states.length; i++)

-			editions[i+1]= new HistoryItem(base, states[i]);

-

-		EditionSelectionDialog d= new EditionSelectionDialog(parentShell, bundle);

-		d.setEditionTitleArgument(file.getName());

-		d.setEditionTitleImage(CompareUIPlugin.getImage(file));

-		//d.setHideIdenticalEntries(false);

-		

-		if (fReplaceMode) {

-			

-			ITypedElement ti= null;

-			if (fPrevious)

-				ti= d.selectPreviousEdition(target, editions, null);

-			else

-				ti= d.selectEdition(target, editions, null);

-			

-			if (ti instanceof IStreamContentAccessor) {

-				IStreamContentAccessor sa= (IStreamContentAccessor)ti;

-				try {

-

-					if (document != null)

-						updateDocument(document, sa);	

-					else

-						updateWorkspace(bundle, parentShell, sa, file);

-						

-				} catch (InterruptedException x) {

-					// Do nothing. Operation has been canceled by user.

-					

-				} catch (InvocationTargetException x) {

-					String reason= x.getTargetException().getMessage();

-					MessageDialog.openError(parentShell, title, Utilities.getFormattedString(bundle, "replaceError", reason));	//$NON-NLS-1$

-				}

-			}

-		} else {

-			d.setCompareMode(true);

-

-			d.selectEdition(target, editions, null);			

-		}

-	}

-	

-	private void updateWorkspace(final ResourceBundle bundle, Shell shell,

-						final IStreamContentAccessor sa, final IFile file)

-									throws InvocationTargetException, InterruptedException {

-		

-		WorkspaceModifyOperation operation= new WorkspaceModifyOperation() {

-			public void execute(IProgressMonitor pm) throws InvocationTargetException {

-				try {

-					String taskName= Utilities.getString(bundle, "taskName"); //$NON-NLS-1$

-					pm.beginTask(taskName, IProgressMonitor.UNKNOWN);

-					file.setContents(sa.getContents(), false, true, pm);

-				} catch (CoreException e) {

-					throw new InvocationTargetException(e);

-				} finally {

-					pm.done();

-				}

-			}

-		};

-		

-		ProgressMonitorDialog pmdialog= new ProgressMonitorDialog(shell);				

-		pmdialog.run(false, true, operation);									

-	}

-	

-	private void updateDocument(IDocument document, IStreamContentAccessor sa) throws InvocationTargetException {

-		try {

-			InputStream is= sa.getContents();

-			String text= Utilities.readString(is);

-			document.replace(0, document.getLength(), text);

-		} catch (CoreException e) {

-			throw new InvocationTargetException(e);

-		} catch (BadLocationException e) {

-			throw new InvocationTargetException(e);

-		}

-	}

-	

-	private IDocument getDocument(IFile file) {

-		IWorkbench wb= PlatformUI.getWorkbench();

-		if (wb == null)

-			return null;

-		IWorkbenchWindow[] ws= wb.getWorkbenchWindows();

-		if (ws == null)

-			return null;

-			

-		FileEditorInput test= new FileEditorInput(file);

-		

-		for (int i= 0; i < ws.length; i++) {

-			IWorkbenchWindow w= ws[i];

-			IWorkbenchPage[] wps= w.getPages();

-			if (wps != null) {

-				for (int j= 0; j < wps.length; j++) {

-					IWorkbenchPage wp= wps[j];

-					IEditorPart[] eps= wp.getEditors();

-					if (eps != null) {

-						for (int k= 0; k < eps.length; k++) {

-							IEditorPart ep= eps[k];

-							IEditorInput ei= ep.getEditorInput();

-							if (test.equals(ei)) {

-								if (ep instanceof ITextEditor) {

-									ITextEditor te= (ITextEditor) ep;

-									IDocumentProvider dp= te.getDocumentProvider();

-									if (dp != null) {

-										IDocument doc= dp.getDocument(ei);

-										if (doc != null)

-											return doc;

-									}

-									

-								}

-							}

-						}

-					}

-				}

-			}

-		}

-		return null;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java
deleted file mode 100644
index 773b049..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.StringWriter;

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.widgets.Shell;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.Status;

-

-import org.eclipse.jface.dialogs.ErrorDialog;

-import org.eclipse.jface.dialogs.MessageDialog;

-

-/**

- * The default exception handler shows an error dialog when one of its handle methods

- * is called. If the passed exception is a <code>CoreException</code> an error dialog

- * pops up showing the exception's status information. For a <code>InvocationTargetException</code>

- * a normal message dialog pops up showing the exception's message. Additionally the exception

- * is written to the platform log.

- */

-public class ExceptionHandler {

-

-	private static ExceptionHandler fgInstance= new ExceptionHandler();

-	

-	/**

-	 * Logs the given exception using the platform's logging mechanism. The exception is

-	 * logged as an error with the error code <code>JavaStatusConstants.INTERNAL_ERROR</code>.

-	 */

-	public static void log(Throwable t, String message) {

-		CompareUIPlugin.log(new Status(IStatus.ERROR, CompareUIPlugin.getPluginId(), 

-			CompareUIPlugin.INTERNAL_ERROR, message, t));

-	}

-	

-	/**

-	 * Handles the given <code>CoreException</code>. The workbench shell is used as a parent

-	 * for the dialog window.

-	 * 

-	 * @param e the <code>CoreException</code> to be handled

-	 * @param title the dialog window's window title

-	 * @param message message to be displayed by the dialog window

-	 */

-	public static void handle(CoreException e, String title, String message) {

-		handle(e, CompareUIPlugin.getShell(), title, message);

-	}

-	

-	/**

-	 * Handles the given <code>CoreException</code>. 

-	 * 

-	 * @param e the <code>CoreException</code> to be handled

-	 * @param parent the dialog window's parent shell

-	 * @param title the dialog window's window title

-	 * @param message message to be displayed by the dialog window

-	 */

-	public static void handle(CoreException e, Shell parent, String title, String message) {

-		fgInstance.perform(e, parent, title, message);

-	}

-	

-	/**

-	 * Handles the given <code>InvocationTargetException</code>. The workbench shell is used 

-	 * as a parent for the dialog window.

-	 * 

-	 * @param e the <code>InvocationTargetException</code> to be handled

-	 * @param title the dialog window's window title

-	 * @param message message to be displayed by the dialog window

-	 */

-	public static void handle(InvocationTargetException e, String title, String message) {

-		handle(e, CompareUIPlugin.getShell(), title, message);

-	}

-	

-	/**

-	 * Handles the given <code>InvocationTargetException</code>. 

-	 * 

-	 * @param e the <code>InvocationTargetException</code> to be handled

-	 * @param parent the dialog window's parent shell

-	 * @param title the dialog window's window title

-	 * @param message message to be displayed by the dialog window

-	 */

-	public static void handle(InvocationTargetException e, Shell parent, String title, String message) {

-		fgInstance.perform(e, parent, title, message);

-	}

-

-	//---- Hooks for subclasses to control exception handling ------------------------------------

-	

-	protected void perform(CoreException e, Shell shell, String title, String message) {

-		CompareUIPlugin.log(e);

-		IStatus status= e.getStatus();

-		if (status != null) {

-			ErrorDialog.openError(shell, title, message, status);

-		} else {

-			displayMessageDialog(e, e.getMessage(), shell, title, message);

-		}

-	}

-

-	protected void perform(InvocationTargetException e, Shell shell, String title, String message) {

-		Throwable target= e.getTargetException();

-		if (target instanceof CoreException) {

-			perform((CoreException)target, shell, title, message);

-		} else {

-			CompareUIPlugin.log(e);

-			if (e.getMessage() != null && e.getMessage().length() > 0) {

-				displayMessageDialog(e, e.getMessage(), shell, title, message);

-			} else {

-				displayMessageDialog(e, target.getMessage(), shell, title, message);

-			}

-		}

-	}

-

-	//---- Helper methods -----------------------------------------------------------------------

-	

-	private void displayMessageDialog(Throwable t, String exceptionMessage, Shell shell, String title, String message) {

-		StringWriter msg= new StringWriter();

-		if (message != null) {

-			msg.write(message);

-			msg.write("\n\n"); //$NON-NLS-1$

-		}

-		if (exceptionMessage == null || exceptionMessage.length() == 0)

-			msg.write(CompareMessages.getString("ExceptionDialog.seeErrorLogMessage")); //$NON-NLS-1$

-		else

-			msg.write(exceptionMessage);

-		MessageDialog.openError(shell, title, msg.toString());			

-	}	

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java
deleted file mode 100644
index 88ac71d..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-public interface INavigatable {

-	

-	static final String NAVIGATOR_PROPERTY= "org.eclipse.compare.internal.Navigator"; //$NON-NLS-1$

-	

-	/**

-	 * Returns true if at end or beginning.

-	 */

-	boolean gotoDifference(boolean next);

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java
deleted file mode 100644
index e637e53..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.compare.structuremergeviewer.IStructureCreator;

-

-/**

- * A factory object for creating <code>IStructureCreator</code>s from a descriptor.

- * <p>

- * It is used when registering <code>IStructureCreator</code> for types

- * in <code>CompareUIPlugin.registerStructureCreator</code>.

- * </p>

- *

- * @see IStructureCreator

- * @see CompareUIPlugin

- */

-public interface IStructureCreatorDescriptor {

-

-	/**

-	 * Creates a new structure creator.

-	 *

-	 * @return a newly created structure creator

-	 */

-	IStructureCreator createStructureCreator(); 

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java
deleted file mode 100644
index 8d69626..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.jface.viewers.Viewer;

-import org.eclipse.compare.CompareConfiguration;

-

-/**

- * A factory object for creating a <code>Viewer</code>s from a descriptor.

- * <p>

- * It is used when registering a viewer for a specific type

- * in <code>CompareUIPlugin.registerContentViewerDescriptor</code> and

- * in <code>CompareUIPlugin.registerStructureViewerDescriptor</code>.

- *

- * @see org.eclipse.compare.structuremergeviewer.IStructureCreator

- * @see CompareUIPlugin

- */

-public interface IViewerDescriptor {

-

-	/**

-	 * Creates a new viewer from this descriptor under the given STW parent control.

-	 * If the current viewer has the same type as a new viewer

-	 * the implementation of this method is free to return the current viewer instead.

-	 *

-	 * @param currentViewer the current viewer which is going to be replaced with a new viewer.

-	 * @param parent the SWT parent control under which the new viewer has to be created.

-	 * @param config a compare configuration the new viewer might be interested in.

-	 * @return a new viewer or the current viewer.

-	 */

-	Viewer createViewer(Viewer currentViewer, Composite parent, CompareConfiguration config);

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java
deleted file mode 100644
index bcfc62b..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-

-import org.eclipse.compare.*;

-

-/**

- * Toggles the <code>ICompareConfiguration.IGNORE_WS</code> property of an

- * <code>ICompareConfiguration</code>.

- */

-public class IgnoreWhiteSpaceAction extends ChangePropertyAction {

-

-	public IgnoreWhiteSpaceAction(ResourceBundle bundle, CompareConfiguration cc) {

-		super(bundle, cc, "action.IgnoreWhiteSpace.", CompareConfiguration.IGNORE_WHITESPACE); //$NON-NLS-1$

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java
deleted file mode 100644
index 3a3ec33..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.*;

-import org.eclipse.swt.graphics.*;

-import org.eclipse.swt.widgets.*;

-

-/**

- * A <code>Canvas</code> showing a single centered SWT <code>Image</code>.

- * If the <code>Image</code> is larger than the <code>Canvas<code>,

- * <code>Scrollbars</code> will appear.

- */

-class ImageCanvas extends Canvas {

-

-	private Image fImage;

-

-	/**

-	 * Create a new ImageCanvas with the given SWT stylebits.

-	 * (SWT.H_SCROLL and SWT.V_SCROLL are automtically added).

-	 */

-	public ImageCanvas(Composite parent, int style) {

-		super(parent, style | SWT.H_SCROLL | SWT.V_SCROLL);

-

-		ScrollBar sb= getHorizontalBar();

-		sb.setIncrement(20);

-		sb.addListener(SWT.Selection, new Listener() {

-			public void handleEvent(Event e) {

-				repaint();

-			}

-		});

-

-		sb= getVerticalBar();

-		sb.setIncrement(20);

-		sb.addListener(SWT.Selection, new Listener() {

-			public void handleEvent(Event e) {

-				repaint();

-			}

-		});

-

-		addListener(SWT.Resize, new Listener() {

-			public void handleEvent(Event e) {

-				updateScrollbars();

-			}

-		});

-

-		addListener(SWT.Paint, new Listener() {

-			public void handleEvent(Event event) {

-				paint(event.gc);

-			}

-		});

-	}

-

-	/**

-	 * Set the SWT Image to use as the ImageCanvas contents.

-	 */

-	public void setImage(Image img) {

-		fImage= img;

-

-		if (!isDisposed()) {

-			getHorizontalBar().setSelection(0);

-			getVerticalBar().setSelection(0);

-			updateScrollbars();

-			getParent().layout();

-			redraw();

-		}

-	}

-

-	public void repaint() {

-		if (!isDisposed()) {

-			GC gc= new GC(this);

-			paint(gc);

-			gc.dispose();

-		}

-	}

-

-	/**

-	 * @private

-	 */

-	private void paint(GC gc) {

-		if (fImage != null) {

-			Rectangle bounds= fImage.getBounds();

-			Rectangle clientArea= getClientArea();

-

-			int x;

-			if (bounds.width < clientArea.width)

-				x= (clientArea.width - bounds.width) / 2;

-			else

-				x= -getHorizontalBar().getSelection();

-

-			int y;

-			if (bounds.height < clientArea.height)

-				y= (clientArea.height - bounds.height) / 2;

-			else

-				y= -getVerticalBar().getSelection();

-

-			gc.drawImage(fImage, x, y);

-		}

-	}

-

-	/**

-	 * @private

-	 */

-	private void updateScrollbars() {

-		Rectangle bounds= fImage != null ? fImage.getBounds() : new Rectangle(0, 0, 0, 0);

-		Point size= getSize();

-		Rectangle clientArea= getClientArea();

-

-		ScrollBar horizontal= getHorizontalBar();

-		if (bounds.width <= clientArea.width) {

-			horizontal.setVisible(false);

-			horizontal.setSelection(0);

-		} else {

-			horizontal.setPageIncrement(clientArea.width - horizontal.getIncrement());

-			int max= bounds.width + (size.x - clientArea.width);

-			horizontal.setMaximum(max);

-			horizontal.setThumb(size.x > max ? max : size.x);

-			horizontal.setVisible(true);

-		}

-

-		ScrollBar vertical= getVerticalBar();

-		if (bounds.height <= clientArea.height) {

-			vertical.setVisible(false);

-			vertical.setSelection(0);

-		} else {

-			vertical.setPageIncrement(clientArea.height - vertical.getIncrement());

-			int max= bounds.height + (size.y - clientArea.height);

-			vertical.setMaximum(max);

-			vertical.setThumb(size.y > max ? max : size.y);

-			vertical.setVisible(true);

-		}

-	}

-

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java
deleted file mode 100644
index 8373bed..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.ByteArrayInputStream;

-import java.io.InputStream;

-import java.io.IOException;

-import java.util.ResourceBundle;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.SWTException;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Display;

-

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.contentmergeviewer.ContentMergeViewer;

-

-/**

- */

-public class ImageMergeViewer extends ContentMergeViewer {

-	

-	private static final String BUNDLE_NAME= "org.eclipse.compare.internal.ImageMergeViewerResources"; //$NON-NLS-1$

-		

-	private Object fAncestorImage;

-	private Object fLeftImage;

-	private Object fRightImage;

-

-	private ImageCanvas fAncestor;

-	private ImageCanvas fLeft;

-	private ImageCanvas fRight;

-	

-			

-	public ImageMergeViewer(Composite parent, int styles, CompareConfiguration mp) {

-		super(styles, ResourceBundle.getBundle(BUNDLE_NAME), mp);

-		buildControl(parent);

-		String title= Utilities.getString(getResourceBundle(), "title"); //$NON-NLS-1$

-		getControl().setData(CompareUI.COMPARE_VIEWER_TITLE, title);

-	}

-

-	protected void updateContent(Object ancestor, Object left, Object right) {

-		

-		fAncestorImage= ancestor;

-		setInput(fAncestor, ancestor);

-		

-		fLeftImage= left;

-		setInput(fLeft, left);

-		

-		fRightImage= right;

-		setInput(fRight, right);

-	}

-	

-	/**

-	 * We can't modify the contents of either side we just return null.

-	 */

-	protected byte[] getContents(boolean left) {

-		return null;

-	}

-	

-	public void createControls(Composite composite) {

-		fAncestor= new ImageCanvas(composite, SWT.NO_FOCUS);

-		fLeft= new ImageCanvas(composite, SWT.NO_FOCUS);

-		fRight= new ImageCanvas(composite, SWT.NO_FOCUS);

-	}

-

-	private static void setInput(ImageCanvas canvas, Object input) {

-		if (canvas != null) {

-

-			InputStream stream= null;

-			if (input instanceof IStreamContentAccessor) {

-				IStreamContentAccessor sca= (IStreamContentAccessor) input;

-				if (sca != null) {

-					try {

-						stream= sca.getContents();

-					} catch (CoreException ex) {

-					}

-				}

-			}

-			

-			Image image= null;			

-			Display display= canvas.getDisplay();

-			if (stream != null) {

-				try {

-					image= new Image(display, stream);

-				} catch (SWTException ex) {

-				}

-			}

-

-			canvas.setImage(image);

-			if (image != null) {

-				canvas.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND));

-			} else {

-				canvas.setBackground(null);

-			}

-			

-			if (stream != null) {

-				try {

-					stream.close();

-				} catch (IOException ex) {

-				}

-			}

-		}

-	}

-	

-	protected void handleResizeAncestor(int x, int y, int width, int height) {

-		if (width > 0) {

-			fAncestor.setVisible(true);

-			fAncestor.setBounds(x, y, width, height);

-		} else {

-			fAncestor.setVisible(false);

-		}

-	}

-

-	protected void handleResizeLeftRight(int x, int y, int width1, int centerWidth, int width2, int height) {

-		fLeft.setBounds(x, y, width1, height);

-		fRight.setBounds(x+width1+centerWidth, y, width2, height);

-	}

-	

-	protected void copy(boolean leftToRight) {

-		if (leftToRight) {

-			fRightImage= fLeftImage;

-			setInput(fRight, fRightImage);

-			setRightDirty(true);

-		} else {

-			fLeftImage= fRightImage;

-			setInput(fLeft, fLeftImage);

-			setLeftDirty(true);

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java
deleted file mode 100644
index 2d40636..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.compare.*;

-import org.eclipse.jface.viewers.Viewer;

-

-/**

- * A factory object for the <code>ImageMergeViewer</code>.

- * This indirection is necessary because only objects with a default

- * constructor can be created via an extension point

- * (this precludes Viewers).

- */

-public class ImageMergeViewerCreator implements IViewerCreator {

-

-	public Viewer createViewer(Composite parent, CompareConfiguration mp) {

-		return new ImageMergeViewer(parent, SWT.NULL, mp);

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties
deleted file mode 100644
index b150dda..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-

-# @(#)ImageMergeViewerResources.properties

-#

-# Resource strings for ImageMergeViewer.java

-

-title= Image Compare

-

-#####################################################

-# Actions

-#####################################################

-

-action.CopyLeftToRight.label= Copy Left to Right

-action.CopyLeftToRight.tooltip= Copy Image from Left to Right

-action.CopyLeftToRight.image= elcl16/copy_r_co.gif

-

-action.CopyRightToLeft.label= Copy Right to Left

-action.CopyRightToLeft.tooltip= Copy Image from Right to Left

-action.CopyRightToLeft.image= elcl16/copy_l_co.gif

-

-action.EnableAncestor.label= Enable Ancestor Pane

-action.EnableAncestor.tooltip= Control Visibility of Ancestor Pane

-action.EnableAncestor.image= elcl16/ancestorpane_co.gif

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java
deleted file mode 100644
index 9170ede..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.List;

-

-import org.eclipse.jface.viewers.IStructuredContentProvider;

-import org.eclipse.jface.viewers.Viewer;

-

-/** 

- * A specialized content provider to show a list of editor parts.

- */ 

-public class ListContentProvider implements IStructuredContentProvider {

-	List fContents;	

-

-	public ListContentProvider() {

-	}

-	

-	public Object[] getElements(Object input) {

-		if (fContents != null && fContents == input)

-			return fContents.toArray();

-		return new Object[0];

-	}

-

-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

-		if (newInput instanceof List) 

-			fContents= (List)newInput;

-		else

-			fContents= null;

-		// we use a fixed set.

-	}

-

-	public void dispose() {

-	}

-	

-	public boolean isDeleted(Object o) {

-		return fContents != null && !fContents.contains(o);

-	}

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java
deleted file mode 100644
index 7cd2624..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.layout.GridData;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.dialogs.IDialogConstants;

-import org.eclipse.jface.viewers.*;

-

-import org.eclipse.ui.dialogs.SelectionDialog;

-

-public class ListDialog extends SelectionDialog {

-

-	private IStructuredContentProvider fContentProvider;

-	private ILabelProvider fLabelProvider;

-	private Object fInput;

-	private TableViewer fTableViewer;

-	private boolean fAddCancelButton;

-	

-	public ListDialog(Shell parent) {

-		super(parent);

-		fAddCancelButton= false;

-	}

-

-	public void setInput(Object input) {

-		fInput= input;

-	}

-	

-	public void setContentProvider(IStructuredContentProvider sp){

-		fContentProvider= sp;

-	}

-	

-	public void setLabelProvider(ILabelProvider lp){

-		fLabelProvider= lp;

-	}

-

-	public void setAddCancelButton(boolean addCancelButton) {

-		fAddCancelButton= addCancelButton;

-	}

-	

-	public TableViewer getTableViewer(){

-		return fTableViewer;

-	}

-			

-	public boolean hasFilters(){

-		return fTableViewer.getFilters() != null && fTableViewer.getFilters().length != 0;

-	}

-	

-	public void create() {

-		setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE);

-		super.create();

-	}

-	

-	protected void createButtonsForButtonBar(Composite parent) {

-		if (! fAddCancelButton)

-			createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);

-		else

-			super.createButtonsForButtonBar(parent);	

-	}	

-	

-	protected Control createDialogArea(Composite container) {

-		Composite parent= (Composite) super.createDialogArea(container);

-		createMessageArea(parent);

-		fTableViewer= new TableViewer(parent, getTableStyle());

-		fTableViewer.setContentProvider(fContentProvider);

-		Table table= fTableViewer.getTable();

-		fTableViewer.setLabelProvider(fLabelProvider);

-		fTableViewer.setInput(fInput);

-		GridData gd= new GridData(GridData.FILL_BOTH);

-		gd.heightHint= convertHeightInCharsToPixels(15);

-		gd.widthHint= convertWidthInCharsToPixels(55);

-		table.setLayoutData(gd);

-		return parent;

-	}

-	

-	protected int getTableStyle() {

-		return SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
deleted file mode 100644
index 116d878..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java
deleted file mode 100644
index 52269f8..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-package org.eclipse.compare.internal;
-
-import org.eclipse.ui.texteditor.IUpdate;
-import org.eclipse.jface.action.Action;
-
-
-public abstract class MergeViewerAction extends Action implements IUpdate {
-	
-	private boolean fMutable;
-	private boolean fSelection;
-	private boolean fContent;
-	
-	public MergeViewerAction(boolean mutable, boolean selection, boolean content) {
-		fMutable= mutable;
-		fSelection= selection;
-		fContent= content;
-	}
-
-	public boolean isSelectionDependent() {
-		return fSelection;
-	}
-	
-	public boolean isContentDependent() {
-		return fContent;
-	}
-	
-	public boolean isEditableDependent() {
-		return fMutable;
-	}
-	
-	public void update() {
-	}
-}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java
deleted file mode 100644
index 07a8c74..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.compare.contentmergeviewer.IMergeViewerContentProvider;

-

-/**

- * Adapts any <code>ContentMergeViewer</code> to work on an <code>ICompareInput</code>

- * e.g. a <code>DiffNode</code>.

- */

-public class MergeViewerContentProvider implements IMergeViewerContentProvider {

-	

-	private CompareConfiguration fCompareConfiguration;

-		

-	public MergeViewerContentProvider(CompareConfiguration cc) {

-		fCompareConfiguration= cc;

-	}

-	

-	public void dispose() {

-	}

-	

-	public void inputChanged(Viewer v, Object o1, Object o2) {

-	}

-	

-	//---- ancestor

-			

-	public String getAncestorLabel(Object element) {

-		return fCompareConfiguration.getAncestorLabel(element);

-	}

-	

-	public Image getAncestorImage(Object element) {

-		return fCompareConfiguration.getAncestorImage(element);

-	}

-	

-	public Object getAncestorContent(Object element) {

-		if (element instanceof ICompareInput)

-			return ((ICompareInput) element).getAncestor();

-		return null;

-	}

-	

-	public boolean showAncestor(Object element) {

-		if (element instanceof ICompareInput)

-			return (((ICompareInput)element).getKind() & Differencer.DIRECTION_MASK) == Differencer.CONFLICTING;

-		return false;

-	}

-

-	//---- left

-					

-	public String getLeftLabel(Object element) {

-		return fCompareConfiguration.getLeftLabel(element);

-	}

-	

-	public Image getLeftImage(Object element) {

-		return fCompareConfiguration.getLeftImage(element);

-	}

-	

-	public Object getLeftContent(Object element) {	

-		if (element instanceof ICompareInput)

-			return ((ICompareInput) element).getLeft();

-		return null;

-	}

-		

-	public boolean isLeftEditable(Object element) {

-		if (element instanceof ICompareInput) {

-			Object left= ((ICompareInput) element).getLeft();

-			if (left == null) {

-				IDiffElement parent= ((IDiffElement)element).getParent();

-				if (parent instanceof ICompareInput)

-					left= ((ICompareInput) parent).getLeft();

-			}

-			if (left instanceof IEditableContent)

-				return ((IEditableContent)left).isEditable();

-		}

-		return false;

-	}

-

-	public void saveLeftContent(Object element, byte[] bytes) {

-		if (element instanceof ICompareInput) {

-			ICompareInput node= (ICompareInput) element;

-			if (bytes != null) {

-				ITypedElement left= node.getLeft();

-				if (left instanceof IEditableContent)

-					((IEditableContent)left).setContent(bytes);

-			} else {

-				node.copy(false);

-			}			

-		}

-	}

-	

-	//---- right

-	

-	public String getRightLabel(Object element) {

-		return fCompareConfiguration.getRightLabel(element);

-	}

-	

-	public Image getRightImage(Object element) {

-		return fCompareConfiguration.getRightImage(element);

-	}

-	

-	public Object getRightContent(Object element) {

-		if (element instanceof ICompareInput)

-			return ((ICompareInput) element).getRight();

-		return null;

-	}

-	

-	public boolean isRightEditable(Object element) {

-		if (element instanceof ICompareInput) {

-			Object right= ((ICompareInput) element).getRight();

-			if (right == null) {

-				IDiffContainer parent= ((IDiffElement)element).getParent();

-				if (parent instanceof ICompareInput)

-					right= ((ICompareInput) parent).getRight();

-			}

-			if (right instanceof IEditableContent)

-				return ((IEditableContent)right).isEditable();

-		}

-		return false;

-	}

-	

-	public void saveRightContent(Object element, byte[] bytes) {

-		if (element instanceof ICompareInput) {

-			ICompareInput node= (ICompareInput) element;

-			if (bytes != null) {

-				ITypedElement right= node.getRight();

-				if (right instanceof IEditableContent)

-					((IEditableContent)right).setContent(bytes);

-			} else {

-				node.copy(true);

-			}		

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NavigationAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NavigationAction.java
deleted file mode 100644
index 1a1ea26..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NavigationAction.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-import org.eclipse.jface.action.Action;

-import org.eclipse.compare.CompareEditorInput;

-

-

-public class NavigationAction extends Action {

-	

-	private boolean fNext;

-	private CompareEditorInput fCompareEditorInput;

-

-	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(CompareNavigator.class);

-			if (adapter instanceof CompareNavigator)

-				((CompareNavigator)adapter).selectChange(fNext);

-		}

-	}

-	

-	public void setCompareEditorInput(CompareEditorInput input) {

-		fCompareEditorInput= input;

-	}

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java
deleted file mode 100644
index 32887e3..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.compare.CompareViewerSwitchingPane;

-

-/**

- * Used whenever the input is null or no viewer can be found.

- */

-public class NullViewer extends AbstractViewer {

-

-	private Control fDummy;

-

-	public NullViewer(Composite parent) {

-

-		fDummy= new Tree(parent, SWT.NULL);

-

-		CompareViewerSwitchingPane.clearToolBar(parent);

-	}

-

-	public Control getControl() {

-		return fDummy;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java
deleted file mode 100644
index b4b965a..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-

-public class ReplaceWithEditionAction extends EditionAction {

-		

-	public ReplaceWithEditionAction() {

-		super(true, "org.eclipse.compare.internal.ReplaceWithEditionAction"); //$NON-NLS-1$

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties
deleted file mode 100644
index 2d29303..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-

-# @(#)ReplaceWithEditionAction.properties

-#

-# Resources for ReplaceWithEditionAction.java

-

-title= Replace from Local History

-

-treeTitleFormat= Local History of ''{0}''

-dateIcon= obj16/day_obj.gif

-timeIcon= obj16/resource_obj.gif

-

-treeFormat= {0}

-workspaceTreeFormat {0} (Workspace File)

-parseErrorFormat= {0} (Parse Error)

-

-editionLabel= Local History ({0})

-workspaceEditionLabel= Workspace File

-

-targetLabel= {0}

-

-todayFormat= Today ({0})

-yesterdayFormat= Yesterday ({0})

-dayFormat= {0}

-

-buttonLabel= Replace

-

-noLocalHistoryError= No local history available for selected resource.

-replaceError=Can''t replace resource (reason: {0}).

-

-taskName=Replacing
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java
deleted file mode 100644
index 2f590db..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-

-public class ReplaceWithPreviousEditionAction extends EditionAction {

-		

-	public ReplaceWithPreviousEditionAction() {

-		super(true, "org.eclipse.compare.internal.ReplaceWithEditionAction"); //$NON-NLS-1$

-		fPrevious= true;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
deleted file mode 100644
index 3f22f16..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.text.MessageFormat;

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.jface.viewers.ISelection;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-

-

-/**

- * A two-way or three-way compare for arbitrary IResources.

- */

-class ResourceCompareInput extends CompareEditorInput {

-	

-	private static final boolean NORMALIZE_CASE= true;

-	

-	private boolean fThreeWay= false;

-	private Object fRoot;

-	private IStructureComparator fAncestor;

-	private IStructureComparator fLeft;

-	private IStructureComparator fRight;

-	private IResource fAncestorResource;

-	private IResource fLeftResource;

-	private IResource fRightResource;

-	

-	

-	private class MyDiffNode extends DiffNode {

-		public MyDiffNode(IDiffContainer parent, int description, ITypedElement ancestor, ITypedElement left, ITypedElement right) {

-			super(parent, description, ancestor, left, right);

-		}

-		protected void fireChange() {

-			super.fireChange();

-			setDirty(true);

-		}

-	}

-	

-	/**

-	 * Creates an compare editor input for the given selection.

-	 */

-	ResourceCompareInput(CompareConfiguration config) {

-		super(config);

-	}

-		

-	/**

-	 * Returns true if compare can be executed for the given selection.

-	 */

-	boolean setSelection(ISelection s) {

-

-		IResource[] selection= Utilities.getResources(s);

-		if (selection.length < 2 || selection.length > 3)

-			return false;

-

-		fThreeWay= selection.length == 3;

-		

-		fLeftResource= selection[0];

-		fRightResource= selection[1];

-		if (fThreeWay) {

-			fLeftResource= selection[1];		

-			fRightResource= selection[2];

-		}

-		

-		fAncestor= null;

-		fLeft= getStructure(fLeftResource);

-		fRight= getStructure(fRightResource);

-					

-		if (incomparable(fLeft, fRight))

-			return false;

-

-		if (fThreeWay) {

-			fAncestorResource= selection[0];

-			fAncestor= getStructure(fAncestorResource);

-			

-			if (incomparable(fAncestor, fRight))

-				return false;

-		}

-

-		return true;

-	}

-	

-	/**

-	 * Returns true if the given arguments cannot be compared.

-	 */

-	private boolean incomparable(IStructureComparator c1, IStructureComparator c2) {

-		if (c1 == null || c2 == null)

-			return true;

-		return isLeaf(c1) != isLeaf(c2);

-	}

-	

-	/**

-	 * Returns true if the given arguments is a leaf.

-	 */

-	private boolean isLeaf(IStructureComparator c) {

-		if (c instanceof ITypedElement) {

-			ITypedElement te= (ITypedElement) c;

-			return !ITypedElement.FOLDER_TYPE.equals(te.getType());

-		}

-		return false;

-	}

-	

-	/**

-	 * Creates a <code>IStructureComparator</code> for the given input.

-	 * Returns <code>null</code> if no <code>IStructureComparator</code>

-	 * can be found for the <code>IResource</code>.

-	 */

-	private IStructureComparator getStructure(IResource input) {

-		

-		if (input instanceof IContainer)

-			return new BufferedResourceNode(input);

-			

-		if (input instanceof IFile) {

-			IStructureComparator rn= new BufferedResourceNode(input);

-			IFile file= (IFile) input;

-			String type= normalizeCase(file.getFileExtension());

-			if ("JAR".equals(type) || "ZIP".equals(type)) //$NON-NLS-2$ //$NON-NLS-1$

-				return new ZipFileStructureCreator().getStructure(rn);

-			return rn;

-		}

-		return null;

-	}

-	

-	/**

-	 * Performs a two-way or three-way diff on the current selection.

-	 */

-	public Object prepareInput(IProgressMonitor pm) throws InvocationTargetException {

-				

-		CompareConfiguration cc= (CompareConfiguration) getCompareConfiguration();

-	

-		try {

-			// fix for PR 1GFMLFB: ITPUI:WIN2000 - files that are out of sync with the file system appear as empty							

-			fLeftResource.refreshLocal(IResource.DEPTH_INFINITE, pm);

-			fRightResource.refreshLocal(IResource.DEPTH_INFINITE, pm);

-			if (fThreeWay && fAncestorResource != null)

-				fAncestorResource.refreshLocal(IResource.DEPTH_INFINITE, pm);

-			// end fix						

-				

-			pm.beginTask(Utilities.getString("ResourceCompare.taskName"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$

-

-			cc.setLeftLabel(buildLabel(fLeftResource));

-			cc.setLeftImage(CompareUIPlugin.getImage(fLeftResource));

-			

-			cc.setRightLabel(buildLabel(fRightResource));

-			cc.setRightImage(CompareUIPlugin.getImage(fRightResource));

-

-			String leftLabel= fLeftResource.getName();

-			String rightLabel= fRightResource.getName();

-			

-			String title;

-			if (fThreeWay) {			

-				cc.setAncestorLabel(buildLabel(fAncestorResource));

-				cc.setAncestorImage(CompareUIPlugin.getImage(fAncestorResource));

-				String format= Utilities.getString("ResourceCompare.threeWay.title"); //$NON-NLS-1$

-				String ancestorLabel= fAncestorResource.getName();

-				title= MessageFormat.format(format, new String[] {ancestorLabel, leftLabel, rightLabel} );

-			} else {

-				String format= Utilities.getString("ResourceCompare.twoWay.title"); //$NON-NLS-1$

-				title= MessageFormat.format(format, new String[] {leftLabel, rightLabel} );

-			}

-			setTitle(title);

-			

-			Differencer d= new Differencer() {

-				protected Object visit(Object parent, int description, Object ancestor, Object left, Object right) {

-					return new MyDiffNode((IDiffContainer) parent, description, (ITypedElement)ancestor, (ITypedElement)left, (ITypedElement)right);

-				}

-			};

-			

-			fRoot= d.findDifferences(fThreeWay, pm, null, fAncestor, fLeft, fRight);

-			return fRoot;

-			

-		} catch (CoreException ex) {

-			throw new InvocationTargetException(ex);

-		} finally {

-			pm.done();

-		}

-	}

-	

-	private String buildLabel(IResource r) {

-		//return r.getName();

-		String n= r.getFullPath().toString();

-		if (n.charAt(0) == IPath.SEPARATOR)

-			return n.substring(1);

-		return n;

-	}

-	

-	public void saveChanges(IProgressMonitor pm) throws CoreException {

-		super.saveChanges(pm);

-		if (fRoot instanceof DiffNode) {

-			try {

-				commit(pm, (DiffNode) fRoot);

-			} finally {	

-				setDirty(false);

-			}

-		}

-	}

-	

-	/*

-	 * Recursively walks the diff tree and commits all changes.

-	 */

-	private static void commit(IProgressMonitor pm, DiffNode node) throws CoreException {

-		

-		ITypedElement left= node.getLeft();

-		if (left instanceof BufferedResourceNode)

-			((BufferedResourceNode) left).commit(pm);

-			

-		ITypedElement right= node.getRight();

-		if (right instanceof BufferedResourceNode)

-			((BufferedResourceNode) right).commit(pm);

-

-		IDiffElement[] children= node.getChildren();

-		if (children != null) {

-			for (int i= 0; i < children.length; i++) {

-				IDiffElement element= children[i];

-				if (element instanceof DiffNode)

-					commit(pm, (DiffNode) element);

-			}

-		}

-	}

-	

-	private static String normalizeCase(String s) {

-		if (NORMALIZE_CASE && s != null)

-			return s.toUpperCase();

-		return s;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java
deleted file mode 100644
index e109359..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-

-import org.eclipse.compare.*;

-

-/**

- * Toggles the <code>ICompareConfiguration.SHOW_PSEUDO_CONFLICTS</code> property of an

- * <code>ICompareConfiguration</code>.

- */

-public class ShowPseudoConflicts extends ChangePropertyAction {

-

-	public ShowPseudoConflicts(ResourceBundle bundle, CompareConfiguration cc) {

-		super(bundle, cc, "action.ShowPseudoConflicts.", CompareConfiguration.SHOW_PSEUDO_CONFLICTS); //$NON-NLS-1$

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java
deleted file mode 100644
index 846a378..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.*;

-import org.eclipse.swt.custom.SashForm;

-

-public class Splitter extends SashForm {

-	

-	private static final String VISIBILITY= "org.eclipse.compare.internal.visibility"; //$NON-NLS-1$

-	

-

-	public Splitter(Composite parent, int style) {

-		super(parent, style);

-	}

-		

-	public void setVisible(Control child, boolean visible) {

-		

-		boolean wasEmpty= isEmpty();

-				

-		child.setVisible(visible);

-		child.setData(VISIBILITY, new Boolean(visible));

-		

-		if (wasEmpty != isEmpty()) {

-			Composite parent= getParent();

-			if (parent instanceof Splitter) {

-				Splitter sp= (Splitter) parent;

-				sp.setVisible(this, visible);

-				sp.layout();

-			}	

-		} else {

-			layout();

-		}

-	}

-	

-	private boolean isEmpty() {

-		Control[] controls= getChildren();

-		for (int i= 0; i < controls.length; i++)

-			if (isVisible(controls[i]))

-				return false;

-		return true;

-	}

-	

-	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;

-	}

-			

-	public void setMaximizedControl(Control control) {

-		if (control == null || control == getMaximizedControl())

-			super.setMaximizedControl(null);

-		else

-			super.setMaximizedControl(control);		

-			

-		// walk up

-		Composite parent= getParent();

-		if (parent instanceof Splitter)

-			((Splitter) parent).setMaximizedControl(this);

-		else

-			layout(true);

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java
deleted file mode 100644
index 9fb4b93..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.contentmergeviewer.TextMergeViewer;

-

-/**

- * A factory object for the <code>TextMergeViewer</code>.

- * This indirection is necessary because only objects with a default

- * constructor can be created via an extension point

- * (this precludes Viewers).

- */

-public class TextMergeViewerCreator implements IViewerCreator {

-

-	public Viewer createViewer(Composite parent, CompareConfiguration mp) {

-		return new TextMergeViewer(parent, mp);

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewer.java
deleted file mode 100644
index a556a6f..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewer.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.IOException;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

-

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.text.source.SourceViewer;

-import org.eclipse.jface.text.Document;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.ICompareInput;

-

-

-public class TextViewer extends AbstractViewer {

-		

-	private SourceViewer fSourceViewer;

-	private ICompareInput fInput;

-	

-	

-	TextViewer(Composite parent) {

-		fSourceViewer= new SourceViewer(parent, null, SWT.H_SCROLL + SWT.V_SCROLL);

-		fSourceViewer.setEditable(false);

-	}

-		

-	public Control getControl() {

-		return fSourceViewer.getTextWidget();

-	}

-	

-	public void setInput(Object input) {

-		if (input instanceof IStreamContentAccessor) {

-			fSourceViewer.setDocument(new Document(getString(input)));

-		} else if (input instanceof ICompareInput) {

-			fInput= (ICompareInput) input;

-			ITypedElement left= ((ICompareInput) fInput).getLeft();

-			fSourceViewer.setDocument(new Document(getString(left)));

-		}

-	}

-	

-	public Object getInput() {

-		return fInput;

-	}

-	

-	private String getString(Object input) {

-		

-		if (input instanceof IStreamContentAccessor) {

-			IStreamContentAccessor sca= (IStreamContentAccessor) input;

-			try {

-				return Utilities.readString(sca.getContents());

-			} catch (CoreException ex) {

-			}

-		}

-		return ""; //$NON-NLS-1$

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java
deleted file mode 100644
index 96bc4df..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.CompareConfiguration;

-import org.eclipse.compare.IViewerCreator;

-

-

-/**

- * A factory object for the <code>TextMergeViewer</code>.

- * This indirection is necessary because only objects with a default

- * constructor can be created via an extension point

- * (this precludes Viewers).

- */

-public class TextViewerCreator implements IViewerCreator {

-

-	public Viewer createViewer(Composite parent, CompareConfiguration mp) {

-		return new TextViewer(parent);

-	}

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java
deleted file mode 100644
index a849684..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.graphics.*;

-import org.eclipse.swt.layout.*;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.operation.*;

-import org.eclipse.jface.resource.JFaceResources;

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.*;

-import org.eclipse.compare.contentmergeviewer.*;

-

-/**

- * A modal dialog that displays progress during a long running operation.

- */

-public class TimeoutContext {

-

-	private static class ModalContextThread extends Thread {

-		

-		private boolean fWorking;

-		private IRunnableWithProgress fRunnable;

-		private Throwable fThrowable;

-		private IProgressMonitor fProgressMonitor;

-		private boolean fContinueEventDispatching= true;

-		private Display fDisplay;

-

-		private ModalContextThread(IRunnableWithProgress operation, IProgressMonitor monitor) {

-			super("TimeoutContext"); //$NON-NLS-1$

-			fRunnable= operation;

-			fProgressMonitor= monitor;

-		}

-		

-		synchronized boolean timeout(Display display) {

-			fDisplay= display;

-			return fWorking;

-		}

-		

-		public void run() {

-			try {

-				fWorking= true;

-				if (fRunnable != null)

-					fRunnable.run(fProgressMonitor);

-			} catch (InvocationTargetException e) {

-				fThrowable= e;

-			} catch (InterruptedException e) {

-				fThrowable= e;

-			} catch (RuntimeException e) {

-				fThrowable= e;

-			} catch (ThreadDeath e) {

-				// Make sure to propagate ThreadDeath, or threads will never fully terminate

-				throw e;

-			} catch (Error e) {

-				fThrowable= e;

-			} finally {

-				fWorking= false;

-	

-				if (fDisplay != null) {

-					// Make sure that all events in the asynchronous event queue

-					// are dispatched.

-					fDisplay.syncExec(

-						new Runnable() {

-							public void run() {

-								// do nothing

-							}

-						}

-					);

-					

-					// Stop event dispatching

-					fContinueEventDispatching= false;

-					

-					// Force the event loop to return from sleep () so that

-					// it stops event dispatching.

-					fDisplay.asyncExec(null);

-				}

-			}	

-		}

-		

-		public void block() {

-			while (fContinueEventDispatching)

-				if (!fDisplay.readAndDispatch())

-					fDisplay.sleep();

-		}		

-	}

-	

-	static class ProgressMonitorDialog extends org.eclipse.jface.dialogs.Dialog {

-

-		protected ProgressIndicator fProgressIndicator;

-		protected Label fTaskLabel;

-		protected Label fSubTaskLabel;

-		protected Button fCancel;

-		protected boolean fEnableCancelButton;

-		private ProgressMonitor fProgressMonitor;

-		private Cursor fArrowCursor;

-		private Cursor fWaitCursor;

-		private Shell fParentShell;

-		

-		private ProgressMonitorDialog(Shell parent, boolean cancelable, ProgressMonitor pm) {

-			super(parent);

-			fProgressMonitor= pm;

-			fParentShell= parent;

-			fEnableCancelButton= cancelable;

-			this.setBlockOnOpen(false);

-			setShellStyle(SWT.BORDER | SWT.TITLE | SWT.APPLICATION_MODAL); // no close button

-		}

-		

-		public boolean close() {

-			if (fCancel != null && !fCancel.isDisposed())

-				fCancel.setCursor(null);

-			Shell shell= getShell();

-			if (shell != null && !shell.isDisposed())

-				shell.setCursor(null);

-			if (fArrowCursor != null)

-				fArrowCursor.dispose();

-			if (fWaitCursor != null)

-				fWaitCursor.dispose();

-			fArrowCursor= null;

-			fWaitCursor= null;

-			return super.close();

-		}

-		

-		protected void configureShell(Shell shell) {

-			super.configureShell(shell);

-			shell.setText(JFaceResources.getString("ProgressMonitorDialog.title")); //$NON-NLS-1$

-			if (fWaitCursor == null)

-				fWaitCursor= new Cursor(shell.getDisplay(),SWT.CURSOR_WAIT);

-			shell.setCursor(fWaitCursor);

-		}

-		

-		protected void createButtonsForButtonBar(Composite parent) {

-			// cancel button		

-			fCancel= createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, true);

-			if(fArrowCursor == null)

-				fArrowCursor= new Cursor(fCancel.getDisplay(),SWT.CURSOR_ARROW);		

-			fCancel.setCursor(fArrowCursor);

-			fCancel.addListener(SWT.Selection,

-				new Listener() {

-					public void handleEvent(Event e) {

-						if (fCancel != null && !fCancel.isDisposed())

-							fCancel.setEnabled(false);

-						fProgressMonitor.setCanceled(true);

-					}

-				}

-			);

-			fCancel.setEnabled(fEnableCancelButton);

-		}

-		

-		protected Control createDialogArea(Composite parent) {

-		

-			Composite c= (Composite)super.createDialogArea(parent);

-			((GridLayout)c.getLayout()).numColumns= 2;

-	

-			// icon

-			Label iconLabel= new Label(c, SWT.LEFT);

-			GridData gd= new GridData();

-			iconLabel.setLayoutData(gd);

-			iconLabel.setFont(parent.getFont());

-			Image i= JFaceResources.getImageRegistry().get(org.eclipse.jface.dialogs.Dialog.DLG_IMG_INFO);

-			if (i != null)

-				iconLabel.setImage(i);

-			else

-				iconLabel.setText(JFaceResources.getString("Image_not_found")); //$NON-NLS-1$

-	

-			// label on right hand side of icon

-			fTaskLabel= new Label(c, SWT.LEFT | SWT.WRAP);

-			fTaskLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

-			fTaskLabel.setFont(parent.getFont());

-	

-			// progress indicator

-			fProgressIndicator= new ProgressIndicator(c);

-			gd= new GridData();

-			gd.heightHint= 15;

-			gd.horizontalAlignment= gd.FILL;

-			gd.grabExcessHorizontalSpace= true;

-			gd.horizontalSpan= 2;

-			fProgressIndicator.setLayoutData(gd);

-	

-			// label showing current task

-			fSubTaskLabel= new Label(c, SWT.LEFT | SWT.WRAP);

-			gd= new GridData(GridData.FILL_HORIZONTAL);

-			gd.heightHint= 35;	

-			gd.horizontalSpan= 2;

-			fSubTaskLabel.setLayoutData(gd);

-			fSubTaskLabel.setFont(parent.getFont());

-						

-			// update with values fProgressMonitor

-			fTaskLabel.setText(fProgressMonitor.fTask);

-			

-			if (fProgressMonitor.fMaxWork == IProgressMonitor.UNKNOWN)

-				fProgressIndicator.beginAnimatedTask();

-			else

-				fProgressIndicator.beginTask(fProgressMonitor.fMaxWork);

-

-			if (fProgressMonitor.fSubTask != null)

-				fSubTaskLabel.setText(fProgressMonitor.fSubTask);

-			fProgressIndicator.worked(fProgressMonitor.fWorked);

-	

-			fProgressMonitor.activate(this);

-

-			return c;

-		}

-		

-		void beginTask(final String name, final int totalWork) {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						fTaskLabel.setText(name);

-						

-						if (fProgressIndicator != null && fProgressIndicator.isDisposed()) {

-							if (totalWork == IProgressMonitor.UNKNOWN)

-								fProgressIndicator.beginAnimatedTask();

-							else

-								fProgressIndicator.beginTask(totalWork);

-						}

-					}

-				}

-			);

-		}

-		

-		void setTaskName(final String name) {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						if (fTaskLabel != null && fTaskLabel.isDisposed())

-							fTaskLabel.setText(name);

-					}

-				}

-			);

-		}

-

-		void setSubTaskName(final String name) {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						String n= (name == null) ? "" : name;	//$NON-NLS-1$

-						if (fSubTaskLabel != null && !fSubTaskLabel.isDisposed())

-							fSubTaskLabel.setText(n);

-					}

-				}

-			);	

-		}

-		

-		void done() {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						if (fProgressIndicator != null && !fProgressIndicator.isDisposed()) {

-							fProgressIndicator.sendRemainingWork();

-							fProgressIndicator.done();

-						}

-					}

-				}

-			);

-		}

-		

-		void worked(final double work) {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						if (fProgressIndicator != null && !fProgressIndicator.isDisposed())

-							fProgressIndicator.worked(work);

-					}

-				}

-			);

-		}

-

-		protected Point getInitialSize() {

-			return getShell().computeSize(450, SWT.DEFAULT);

-		}

-	}

-

-	private static class ProgressMonitor implements IProgressMonitor {

-		

-		private int fMaxWork;

-		private String fTask;

-		private String fSubTask;

-		private int fWorked;

-		private ProgressMonitorDialog fProgressMonitorDialog;

-		private boolean fIsCanceled;

-		

-		public void beginTask(String name, int totalWork) {

-			

-			fTask= name;

-			fMaxWork= totalWork;

-			fWorked= 0;

-			

-			if (fProgressMonitorDialog != null)	

-				fProgressMonitorDialog.beginTask(name, totalWork);			

-		}

-		

-		void activate(ProgressMonitorDialog dialog) {

-			fProgressMonitorDialog= dialog;

-		}

-		

-		public void done() {

-			if (fProgressMonitorDialog != null)				

-				fProgressMonitorDialog.done();

-		}

-		

-		public void setTaskName(String name) {

-			fTask= name;

-			if (fProgressMonitorDialog != null)				

-				fProgressMonitorDialog.setTaskName(name);

-		}

-				

-		public boolean isCanceled() {

-			return fIsCanceled;

-		}

-		

-		public void setCanceled(boolean b) {

-			fIsCanceled= b;

-		}

-		

-		public void subTask(String name) {

-			fSubTask= name;

-			if (fProgressMonitorDialog != null)				

-				fProgressMonitorDialog.setSubTaskName(name);

-		}

-		

-		public void worked(int work) {

-			if (fProgressMonitorDialog != null)

-				internalWorked(work);

-			else

-				fWorked+= work;

-		}

-		

-		public void internalWorked(double work) {

-			if (fProgressMonitorDialog != null)				

-				fProgressMonitorDialog.worked(work);

-		}

-	}

-	

-	public static void run(boolean cancelable, int timeout, Shell parent, IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {

-		

-		Display display= parent.getDisplay();

-		

-		ProgressMonitor pm= new ProgressMonitor();

-				

-		ModalContextThread t= new ModalContextThread(runnable, pm);

-		t.start();	// start the long running operation

-		

-		// wait until long operations terminates or timeout

-		try {

-			t.join(timeout);

-		} catch (InterruptedException e) {

-		}

-		

-		if (t.timeout(display)) {	// timeout

-			ProgressMonitorDialog dialog= new ProgressMonitorDialog(parent, cancelable, pm);

-			dialog.open();

-			t.block();

-			dialog.close();

-		}

-		

-		Throwable throwable= t.fThrowable;

-		if (throwable != null) {

-			if (throwable instanceof InvocationTargetException) {

-				throw (InvocationTargetException) throwable;

-			} else if (throwable instanceof InterruptedException) {

-				throw (InterruptedException) throwable;

-			} else if (throwable instanceof OperationCanceledException) {

-				throw new InterruptedException(throwable.getMessage());

-			} else {

-				throw new InvocationTargetException(throwable);

-			}	

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java
deleted file mode 100644
index d4253cd..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.compare.rangedifferencer.IRangeComparator;

-import org.eclipse.compare.contentmergeviewer.ITokenComparator;

-

-/**

- * Implements the <code>ITokenComparator</code> interface for words (or tokens)

- * in a string.

- * A <code>TokenComparator</code> is used as the input for the <code>RangeDifferencer</code>

- * engine to perform a token oriented compare on strings.

- */

-public class TokenComparator implements ITokenComparator {

-

-	private boolean fShouldEscape= true;

-	private String fText;

-	private int fCount;

-	private int[] fStarts;

-	private int[] fLengths;

-

-	/**

-	 * Creates a <code>TokenComparator</code> for the given string.

-	 *

-	 * @param string the string that is split into token

-	 */

-	public TokenComparator(String text) {

-		

-		Assert.isNotNull(text);

-

-		fText= text;

-		

-		int length= fText.length();

-		fStarts= new int[length];	// pessimistic assumption!

-		fLengths= new int[length];

-		fCount= 0;

-		

-		char lastCategory= 0;	// 0: no category

-		for (int i= 0; i < length; i++) {

-			char c= fText.charAt(i);

-			

-			char category= '?';	// unspecified category

-			if (Character.isWhitespace(c))

-				category= ' ';	// white space category

-			else if (Character.isDigit(c))

-				category= '0';	// digits

-			else if (Character.isLetter(c))

-				category= 'a';	// letters

-			

-			if (category != lastCategory) {

-				// start a new token

-				fStarts[fCount++]= i;

-				lastCategory= category;

-			}

-			fLengths[fCount-1]++;

-		}

-	}

-	

-	/**

-	 * Creates a <code>TokenComparator</code> for the given string.

-	 *

-	 * @param string the string that is split into token

-	 * @param shouldEscape

-	 */

-	public TokenComparator(String s, boolean shouldEscape) {

-		this(s);

-		fShouldEscape= shouldEscape;

-	}

-

-	/**

-	 * Returns the number of token in the string.

-	 *

-	 * @return number of token in the string

-	 */

-	public int getRangeCount() {

-		return fCount;

-	}

-

-	/* (non Javadoc)

-	 * see ITokenComparator.getTokenStart

-	 */

-	public int getTokenStart(int index) {

-		if (index < fCount)

-			return fStarts[index];

-		return fText.length();

-	}

-

-	/* (non Javadoc)

-	 * see ITokenComparator.getTokenLength

-	 */

-	public int getTokenLength(int index) {

-		if (index < fCount)

-			return fLengths[index];

-		return 0;

-	}

-		

-	/**

-	 * Returns <code>true</code> if a token given by the first index

-	 * matches a token specified by the other <code>IRangeComparator</code> and index.

-	 *

-	 * @param thisIndex	the number of the token within this range comparator

-	 * @param other the range comparator to compare this with

-	 * @param otherIndex the number of the token within the other comparator

-	 * @return <code>true</code> if the token are equal

-	 */

-	public boolean rangesEqual(int thisIndex, IRangeComparator other, int otherIndex) {

-		if (other != null && getClass() == other.getClass()) {

-			TokenComparator tc= (TokenComparator) other;

-			int thisLen= getTokenLength(thisIndex);

-			int otherLen= tc.getTokenLength(otherIndex);

-			if (thisLen == otherLen)

-				return fText.regionMatches(false, getTokenStart(thisIndex), tc.fText, tc.getTokenStart(otherIndex), thisLen);

-		}

-		return false;

-	}

-

-	/**

-	 * Aborts the comparison if the number of tokens is too large.

-	 *

-	 * @return <code>true</code> to abort a token comparison

-	 */

-	public boolean skipRangeComparison(int length, int max, IRangeComparator other) {

-

-		if (!fShouldEscape)

-			return false;

-

-		if (getRangeCount() < 50 || other.getRangeCount() < 50)

-			return false;

-

-		if (max < 100)

-			return false;

-

-		if (length < 100)

-			return false;

-

-		if (max > 800)

-			return true;

-

-		if (length < max / 4)

-			return false;

-

-		return true;

-	}

-		

-//	public static void main(String args[]) {

-//		//String in= "private static boolean isWhitespace(char c) {";

-//		//String in= "for (int j= 0; j < l-1; j++) {";

-//		String in= "for do    i= 123; i++";

-//		TokenComparator tc= new TokenComparator(in, false);

-//		

-//		System.out.println("n: " + tc.getRangeCount());

-//		System.out.println(in);

-//		

-//		int p= 0;

-//		for (int i= 0; i < tc.getRangeCount(); i++) {

-//			int l= tc.getTokenLength(i);

-//			System.out.print("<");

-//			

-//			for (int j= 0; j < l-1; j++)

-//				System.out.print(" ");

-//		}

-//		System.out.println();

-//		

-//		//System.out.println("extract: <" + tc.extract(16, 1) + ">");

-//	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
deleted file mode 100644
index 0a81cc1..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.*;

-import java.util.List;

-import java.util.ArrayList;

-import java.util.ResourceBundle;

-import java.util.MissingResourceException;

-import java.text.MessageFormat;

-

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.util.*;

-import org.eclipse.jface.text.Document;

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.IStructuredSelection;

-import org.eclipse.jface.action.IAction;

-import org.eclipse.jface.resource.ImageDescriptor;

-

-import org.eclipse.core.runtime.IAdaptable;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.resources.IFile;

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.ui.IActionBars;

-import org.eclipse.ui.IViewPart;

-

-import org.eclipse.compare.CompareConfiguration;

-

-/**

- * Convenience and utility methods.

- */

-public class Utilities {

-

-	public static IActionBars findActionBars(Control c) {

-		while (c != null && !c.isDisposed()) {

-			Object data= c.getData();

-			if (data instanceof CompareEditor)

-				return ((CompareEditor)data).getActionBars();

-				

-			// PR 1GDVZV7: ITPVCM:WIN98 - CTRL + C does not work in Java source compare

-			if (data instanceof IViewPart)

-				return ((IViewPart)data).getViewSite().getActionBars();

-			// end PR 1GDVZV7

-			

-			c= c.getParent();

-		}

-		return null;

-	}

-

-	public static void setEnableComposite(Composite composite, boolean enable) {

-		Control[] children= composite.getChildren();

-		for (int i= 0; i < children.length; i++)

-			children[i].setEnabled(enable);

-	}

-

-	public static boolean getBoolean(CompareConfiguration cc, String key, boolean dflt) {

-		if (cc != null) {

-			Object value= cc.getProperty(key);

-			if (value instanceof Boolean)

-				return ((Boolean) value).booleanValue();

-		}

-		return dflt;

-	}

-	

-	/**

-	 * Retrieves the value from a property change event as a boolean.

-	 */

-	public static boolean getValue(PropertyChangeEvent event, boolean dflt) {

-		Object newValue= event.getNewValue();

-		if (newValue instanceof Boolean)

-			return ((Boolean)newValue).booleanValue();

-		return dflt;

-	}

-	

-	public static void firePropertyChange(ListenerList ll, Object source, String property, Object old, Object newValue) {

-		if (ll != null) {

-			PropertyChangeEvent event= null;

-			Object[] listeners= ll.getListeners();

-			for (int i= 0; i < listeners.length; i++) {

-				IPropertyChangeListener l= (IPropertyChangeListener) listeners[i];

-				if (event == null)

-					event= new PropertyChangeEvent(source, property, old, newValue);

-				l.propertyChange(event);

-			}

-		}

-	}

-

-	public static boolean okToUse(Widget widget) {

-		return widget != null && !widget.isDisposed();

-	}

-	

-	public static boolean isMotif() {

-		return false;

-	}

-		

-	/**

-	 * Returns the elements of the given selection. 

-	 * Returns an empty array if the selection is empty or if 

-	 * the given selection is not of type <code>IStructuredSelection</code>.

-	 *

-	 * @param selection the selection

-	 * @return the selected elements

-	 */

-	public static Object[] toArray(ISelection selection) {

-		if (!(selection instanceof IStructuredSelection)) {

-			return new Object[0];

-		}

-		IStructuredSelection ss= (IStructuredSelection) selection;

-		return ss.toArray();

-	}

-

-	/**

-	 * Convenience method: extract all <code>IResources</code> from given selection.

-	 * Never returns null.

-	 */

-	public static IResource[] getResources(ISelection selection) {

-		

-		List tmp= new ArrayList();

-

-		if (selection instanceof IStructuredSelection) {

-		

-			Object[] s= ((IStructuredSelection)selection).toArray();

-				

-			for (int i= 0; i < s.length; i++) {

-				Object o= s[i];

-				if (o instanceof IResource) {

-					tmp.add(o);

-					continue;

-				}

-				if (o instanceof IAdaptable) {

-					IAdaptable a= (IAdaptable) o;

-					Object adapter= a.getAdapter(IResource.class);

-					if (adapter instanceof IResource)

-						tmp.add(adapter);

-					continue;

-				}

-			}

-		}

-		return (IResource[]) tmp.toArray(new IResource[tmp.size()]);

-	}

-

-	public static byte[] readBytes(InputStream in) {

-		ByteArrayOutputStream bos= new ByteArrayOutputStream();

-		try {		

-			while (true) {

-				int c= in.read();

-				if (c == -1)

-					break;

-				bos.write(c);

-			}

-					

-		} catch (IOException ex) {

-			return null;

-		

-		} finally {

-			if (in != null) {

-				try {

-					in.close();

-				} catch (IOException x) {

-				}

-			}

-			try {

-				bos.close();

-			} catch (IOException x) {

-			}

-		}

-		

-		return bos.toByteArray();

-	}

-

-	/**

-	 * Returns null if an error occurred.

-	 */

-	public static String readString(InputStream is) {

-		if (is == null)

-			return null;

-		BufferedReader reader= null;

-		try {

-			StringBuffer buffer= new StringBuffer();

-			char[] part= new char[2048];

-			int read= 0;

-			reader= new BufferedReader(new InputStreamReader(is));

-

-			while ((read= reader.read(part)) != -1)

-				buffer.append(part, 0, read);

-			

-			return buffer.toString();

-			

-		} catch (IOException ex) {

-		} finally {

-			if (reader != null) {

-				try {

-					reader.close();

-				} catch (IOException ex) {

-				}

-			}

-		}

-		return null;

-	}

-	

-	public static String getIconPath(Display display) {

-		return "icons/full/";	//$NON-NLS-1$

-	}

-	

-	/**

-	 * Initialize the given Action from a ResourceBundle.

-	 */

-	public static void initAction(IAction a, ResourceBundle bundle, String prefix) {

-		

-		String labelKey= "label"; //$NON-NLS-1$

-		String tooltipKey= "tooltip"; //$NON-NLS-1$

-		String imageKey= "image"; //$NON-NLS-1$

-		String descriptionKey= "description"; //$NON-NLS-1$

-		

-		if (prefix != null && prefix.length() > 0) {

-			labelKey= prefix + labelKey;

-			tooltipKey= prefix + tooltipKey;

-			imageKey= prefix + imageKey;

-			descriptionKey= prefix + descriptionKey;

-		}

-		

-		a.setText(getString(bundle, labelKey, labelKey));

-		a.setToolTipText(getString(bundle, tooltipKey, null));

-		a.setDescription(getString(bundle, descriptionKey, null));

-		

-		String relPath= getString(bundle, imageKey, null);

-		if (relPath != null && relPath.trim().length() > 0) {

-			

-			String cPath;

-			String dPath;

-			String ePath;

-			

-			if (relPath.indexOf("/") >= 0) { //$NON-NLS-1$

-				String path= relPath.substring(1);

-				cPath= 'c' + path;

-				dPath= 'd' + path;

-				ePath= 'e' + path;

-			} else {

-				cPath= "clcl16/" + relPath; //$NON-NLS-1$

-				dPath= "dlcl16/" + relPath; //$NON-NLS-1$

-				ePath= "elcl16/" + relPath; //$NON-NLS-1$

-			}

-			

-			ImageDescriptor id= CompareUIPlugin.getImageDescriptor(dPath);	// we set the disabled image first (see PR 1GDDE87)

-			if (id != null)

-				a.setDisabledImageDescriptor(id);

-			id= CompareUIPlugin.getImageDescriptor(cPath);

-			if (id != null)

-				a.setHoverImageDescriptor(id);

-			id= CompareUIPlugin.getImageDescriptor(ePath);

-			if (id != null)

-				a.setImageDescriptor(id);

-		}

-	}

-	

-	public static void initToggleAction(IAction a, ResourceBundle bundle, String prefix, boolean checked) {

-

-		String tooltip= null;

-		if (checked)

-			tooltip= getString(bundle, prefix + "tooltip.checked", null);	//$NON-NLS-1$

-		else

-			tooltip= getString(bundle, prefix + "tooltip.unchecked", null);	//$NON-NLS-1$

-		if (tooltip == null)

-			tooltip= getString(bundle, prefix + "tooltip", null);	//$NON-NLS-1$

-		

-		if (tooltip != null)

-			a.setToolTipText(tooltip);

-			

-		String description= null;

-		if (checked)

-			description= getString(bundle, prefix + "description.checked", null);	//$NON-NLS-1$

-		else

-			description= getString(bundle, prefix + "description.unchecked", null);	//$NON-NLS-1$

-		if (description == null)

-			description= getString(bundle, prefix + "description", null);	//$NON-NLS-1$

-		

-		if (description != null)

-			a.setDescription(description);

-			

-	}

-

-	public static String getString(ResourceBundle bundle, String key, String dfltValue) {

-		

-		if (bundle != null) {

-			try {

-				return bundle.getString(key);

-			} catch (MissingResourceException x) {

-			}

-		}

-		return dfltValue;

-	}

-	

-	public static String getFormattedString(ResourceBundle bundle, String key, String arg) {

-		

-		if (bundle != null) {

-			try {

-				return MessageFormat.format(bundle.getString(key), new String[] { arg });

-			} catch (MissingResourceException x) {

-			}

-		}

-		return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-	}

-	

-	public static String getString(String key) {

-		try {

-			return CompareUIPlugin.getResourceBundle().getString(key);

-		} catch (MissingResourceException e) {

-			return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-		}

-	}

-	

-	public static String getFormattedString(String key, String arg) {

-		try{

-			return MessageFormat.format(CompareUIPlugin.getResourceBundle().getString(key), new String[] { arg });

-		} catch (MissingResourceException e) {

-			return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-		}	

-	}

-

-	public static String getString(ResourceBundle bundle, String key) {

-		return getString(bundle, key, key);

-	}

-	

-	public static int getInteger(ResourceBundle bundle, String key, int dfltValue) {

-		

-		if (bundle != null) {

-			try {

-				String s= bundle.getString(key);

-				if (s != null)

-					return Integer.parseInt(s);

-			} catch (NumberFormatException x) {

-			} catch (MissingResourceException x) {

-			}

-		}

-		return dfltValue;

-	}

-

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java
deleted file mode 100644
index e2fe7d0..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IConfigurationElement;

-import org.eclipse.compare.*;

-

-import org.eclipse.jface.viewers.Viewer;

-

-/**

- * Creates <code>Viewer</code>s from an <code>IConfigurationElement</code>.

- */

-public class ViewerDescriptor implements IViewerDescriptor {

-

-	private final static String CLASS_ATTRIBUTE= "class"; //$NON-NLS-1$

-	private final static String EXTENSIONS_ATTRIBUTE= "extensions"; //$NON-NLS-1$

-

-	private IConfigurationElement fConfiguration;

-	private IViewerCreator fViewerCreator;

-

-	public ViewerDescriptor(IConfigurationElement config) {

-		fConfiguration= config;

-	}

-

-	public Viewer createViewer(Viewer currentViewer, Composite parent, CompareConfiguration mp) {

-		String className= fConfiguration.getAttribute(CLASS_ATTRIBUTE);

-		if (currentViewer != null && currentViewer.getClass().getName().equals(className)) {

-			return currentViewer;

-		}

-		if (fViewerCreator == null) {

-			try {

-				fViewerCreator= (IViewerCreator) fConfiguration.createExecutableExtension(CLASS_ATTRIBUTE);

-			} catch (CoreException e) {

-			}

-		}

-

-		if (fViewerCreator != null) {

-			Viewer viewer= fViewerCreator.createViewer(parent, mp);

-			//if (viewer != null && currentViewer != null && viewer.getClass() == currentViewer.getClass())

-			//	return currentViewer;

-			return viewer;

-		}

-

-		return null;

-	}

-

-	public String getExtension() {

-		return fConfiguration.getAttribute(EXTENSIONS_ATTRIBUTE);

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java
deleted file mode 100644
index a3874dd..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.eclipse.compare.internal;

-

-

-public class ViewerSwitchingCancelled extends Error {

-

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java
deleted file mode 100644
index cc4a735..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.lang.reflect.InvocationTargetException;

-import java.text.MessageFormat;

-import java.util.Arrays;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

-import org.eclipse.swt.widgets.Button;

-

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.util.Assert;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.window.Window;

-import org.eclipse.jface.wizard.*;

-import org.eclipse.jface.action.IAction;

-

-import org.eclipse.ui.IEditorPart;

-import org.eclipse.ui.internal.*;

-import org.eclipse.ui.IActionDelegate;

-import org.eclipse.ui.actions.GlobalBuildAction;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.internal.*;

-

-

-public class CompareWithPatchAction implements IActionDelegate {

-

-	static class PatchWizardDialog extends WizardDialog {

-	

-		PatchWizardDialog(Shell parent, IWizard wizard) {

-			super(parent, wizard);

-			

-			setShellStyle(getShellStyle() | SWT.RESIZE);

-			setMinimumPageSize(700, 500);

-		}

-	}

-	

-	private ISelection fSelection;

-	private boolean fSavedFiles;

-	private boolean fAutobuildState;

-	

-

-	public void selectionChanged(IAction action, ISelection selection) {

-		fSelection= selection;

-		action.setEnabled(fSelection != null && !fSelection.isEmpty());

-	}

-	

-	public void run(IAction action) {

-		PatchWizard wizard= new PatchWizard(fSelection);

-		

-		if (areAllEditorsSaved()) {

-			//RefactoringStatus activationStatus= refactoring.checkActivation(new NullProgressMonitor());

-			//if (! activationStatus.hasFatalError()){

-			//	wizard.setActivationStatus(activationStatus);

-				PatchWizardDialog dialog= new PatchWizardDialog(CompareUIPlugin.getShell(), wizard);

-				if (dialog.open() == Dialog.CANCEL)

-					triggerBuild();

-					

-			//} else{

-				//RefactoringErrorDialog.open(dialogTitle, activationStatus);

-			//}

-		}

-	}

-

-	private boolean areAllEditorsSaved(){

-		if (CompareUIPlugin.getDirtyEditors().length == 0)

-			return true;

-		if (! saveAllDirtyEditors())

-			return false;

-		Shell shell= CompareUIPlugin.getShell();

-		try {

-			// Save isn't cancelable.

-			IWorkspace workspace= ResourcesPlugin.getWorkspace();

-			IWorkspaceDescription description= workspace.getDescription();

-			boolean autoBuild= description.isAutoBuilding();

-			description.setAutoBuilding(false);

-			workspace.setDescription(description);

-			try {

-				new ProgressMonitorDialog(shell).run(false, false, createRunnable());

-				fSavedFiles= true;

-			} finally {

-				description.setAutoBuilding(autoBuild);

-				workspace.setDescription(description);

-			}

-			return true;

-		} catch (InvocationTargetException e) {

-			ExceptionHandler.handle(e, shell, PatchMessages.getString("PatchAction.ExceptionTitle"), PatchMessages.getString("Exception"));  //$NON-NLS-1$ //$NON-NLS-2$

-			return false;

-		} catch (CoreException e) {

-			ExceptionHandler.handle(e, shell, PatchMessages.getString("PatchAction.ExceptionTitle"), PatchMessages.getString("Exception"));  //$NON-NLS-1$ //$NON-NLS-2$

-			return false;			

-		} catch (InterruptedException e) {

-			Assert.isTrue(false); // Can't happen. Operation isn't cancelable.

-			return false;

-		}

-	}

-

-	private IRunnableWithProgress createRunnable() {

-		return new IRunnableWithProgress() {

-			public void run(IProgressMonitor pm) {

-				IEditorPart[] editorsToSave= CompareUIPlugin.getDirtyEditors();

-				pm.beginTask(PatchMessages.getString("PatchAction.SavingDirtyEditorsTask"), editorsToSave.length); //$NON-NLS-1$

-				for (int i= 0; i < editorsToSave.length; i++) {

-					editorsToSave[i].doSave(new SubProgressMonitor(pm, 1));

-					pm.worked(1);

-				}

-				pm.done();

-			}

-		};

-	}

-

-	private boolean saveAllDirtyEditors() {

-		if (ComparePreferencePage.getSaveAllEditors()) //must save everything

-			return true;

-		ListDialog dialog= new ListDialog(CompareUIPlugin.getShell()) {

-			protected Control createDialogArea(Composite parent) {

-				Composite result= (Composite) super.createDialogArea(parent);

-				final Button check= new Button(result, SWT.CHECK);

-				check.setText(PatchMessages.getString("PatchAction.AlwaysSaveQuestion")); //$NON-NLS-1$

-				check.setSelection(ComparePreferencePage.getSaveAllEditors());

-				check.addSelectionListener(

-					new SelectionAdapter() {

-						public void widgetSelected(SelectionEvent e) {

-							ComparePreferencePage.setSaveAllEditors(check.getSelection());

-						}

-					}

-				);

-				return result;

-			}

-		};

-		dialog.setTitle(PatchMessages.getString("PatchAction.SaveAllQuestion")); //$NON-NLS-1$

-		dialog.setAddCancelButton(true);

-		dialog.setLabelProvider(createDialogLabelProvider());

-		dialog.setMessage(PatchMessages.getString("PatchAction.SaveAllDescription")); //$NON-NLS-1$

-		dialog.setContentProvider(new ListContentProvider());

-		dialog.setInput(Arrays.asList(CompareUIPlugin.getDirtyEditors()));

-		return dialog.open() == Dialog.OK;

-	}

-

-	private ILabelProvider createDialogLabelProvider() {

-		return new LabelProvider() {

-			public Image getImage(Object element) {

-				return ((IEditorPart) element).getTitleImage();

-			}

-			public String getText(Object element) {

-				return ((IEditorPart) element).getTitle();

-			}

-		};

-	}

-	

-	private void triggerBuild() {

-		if (fSavedFiles && ResourcesPlugin.getWorkspace().getDescription().isAutoBuilding()) {

-			new GlobalBuildAction(CompareUIPlugin.getActiveWorkbench(), CompareUIPlugin.getShell(), IncrementalProjectBuilder.INCREMENTAL_BUILD).run();

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java
deleted file mode 100644
index 5239340..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.util.*;

-

-import org.eclipse.core.runtime.IPath;

-

-import org.eclipse.compare.structuremergeviewer.Differencer;

-

-

-/* package */ class Diff {

-		

-	IPath fOldPath, fNewPath;

-	long fOldDate, fNewDate;	// if 0: no file

-	List fHunks= new ArrayList();

-	boolean fMatches= false;

-	private boolean fIsEnabled2= true;

-	String fRejected;

-

-	

- 	/* package */ Diff(IPath oldPath, long oldDate, IPath newPath, long newDate) {

-		fOldPath= oldPath;

-		fOldDate= oldPath == null ? 0 : oldDate;

-		fNewPath= newPath;

-		fNewDate= newPath == null ? 0 : newDate;	

-	}

-	

-	boolean isEnabled() {

-		return fIsEnabled2;

-	}

-	

-	void setEnabled(boolean b) {

-		fIsEnabled2= b;

-	}

-	

-	void reverse() {

-		IPath tp= fOldPath;

-		fOldPath= fNewPath;

-		fNewPath= tp;

-		

-		long t= fOldDate;

-		fOldDate= fNewDate;

-		fNewDate= t;

-		

-		Iterator iter= fHunks.iterator();

-		while (iter.hasNext()) {

-			Hunk hunk= (Hunk) iter.next();

-			hunk.reverse();

-		}

-	}

-	

-	Hunk[] getHunks() {

-		return (Hunk[]) fHunks.toArray((Hunk[]) new Hunk[fHunks.size()]);

-	}

-

-	IPath getPath() {

-		if (fOldPath != null)

-			return fOldPath;

-		return fNewPath;

-	}

-	

-	void finish() {

-		if (fHunks.size() == 1) {

-			Hunk h= (Hunk) fHunks.get(0);

-			if (h.fNewLength == 0) {

-				fNewDate= 0;

-				fNewPath= fOldPath;

-			}

-		}

-	}

-	

-	/* package */ void add(Hunk hunk) {

-		fHunks.add(hunk);

-	}

-	

-	/* package */ int getType() {

-		if (fOldDate == 0)

-			return Differencer.ADDITION;

-		if (fNewDate == 0)

-			return Differencer.DELETION;

-		return Differencer.CHANGE;

-	}

-	

-	/* package */ String getDescription(int strip) {

-		IPath path= fOldPath;

-		if (fOldDate == 0)

-			path= fNewPath;

-		if (strip > 0 && strip < path.segmentCount())

-			path= path.removeFirstSegments(strip);

-		return path.toOSString();

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java
deleted file mode 100644
index e49d5ad..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.util.List;

-

-import org.eclipse.jface.util.Assert;

-

-

-/**

- * A Hunk describes a range of changed lines and some context lines.

- */

-/* package */ class Hunk {

-	

-	Diff fParent;

-	int fOldStart, fOldLength;

-	int fNewStart, fNewLength;

-	String[] fLines;

-	boolean fMatches= false;

-	private boolean fIsEnabled2= true;

-	

-	

-	/* package */ Hunk(Diff parent, int[] oldRange, int[] newRange, List lines) {

-		

-		fParent= parent;

-		if (fParent != null)

-			fParent.add(this);

-		

-		if (oldRange[0] > 0)

-			fOldStart= oldRange[0]-1;	// line number start at 0!

-		else

-			fOldStart= 0;

-		fOldLength= oldRange[1];

-		if (newRange[0] > 0)

-			fNewStart= newRange[0]-1;	// line number start at 0!

-		else

-			fNewStart= 0;

-		fNewLength= newRange[1];

-		

-		fLines= (String[]) lines.toArray(new String[lines.size()]);

-	}

-	

-	boolean isEnabled() {

-		return fIsEnabled2;

-	}

-	

-	void setEnabled(boolean b) {

-		fIsEnabled2= b;

-	}

-	

-	void reverse() {

-		int t= fOldStart;

-		fOldStart= fNewStart;

-		fNewStart= t;

-		

-		t= fOldLength;

-		fOldLength= fNewLength;

-		fNewLength= t;

-		

-		for (int i= 0; i < fLines.length; i++) {

-			String line= fLines[i];

-			char c= line.charAt(0);

-			switch (c) {

-			case '+':

-				fLines[i]= '-' + line.substring(1);

-				break;

-			case '-':

-				fLines[i]= '+' + line.substring(1);

-				break;

-			default:

-				break;

-			}

-		}

-	}

-

-	/**

-	 * Returns the contents of this hunk.

-	 * Each line starts with a control character. Their meaning is as follows:

-	 * <ul>

-	 * <li>

-	 * '+': add the line

-	 * <li>

-	 * '-': delete the line

-	 * <li>

-	 * ' ': no change, context line

-	 * </ul>

-	 */

-	String getContent() {

-		StringBuffer sb= new StringBuffer();

-		for (int i= 0; i < fLines.length; i++) {

-			String line= fLines[i];

-			sb.append(line.substring(0, Patcher.length(line)));

-			sb.append('\n');

-		}

-		return sb.toString();

-	}

-	

-	/**

-	 * Returns a descriptive String for this hunk.

-	 * It is in the form old_start,old_length -> new_start,new_length.

-	 */

-	String getDescription() {

-		StringBuffer sb= new StringBuffer();

-		sb.append(Integer.toString(fOldStart));

-		sb.append(',');

-		sb.append(Integer.toString(fOldLength));

-		sb.append(" -> "); //$NON-NLS-1$

-		sb.append(Integer.toString(fNewStart));

-		sb.append(',');

-		sb.append(Integer.toString(fNewLength));

-		return sb.toString();

-	}

-	

-	String getRejectedDescription() {

-		StringBuffer sb= new StringBuffer();

-		sb.append("@@ -"); //$NON-NLS-1$

-		sb.append(Integer.toString(fOldStart));

-		sb.append(',');

-		sb.append(Integer.toString(fOldLength));

-		sb.append(" +"); //$NON-NLS-1$

-		sb.append(Integer.toString(fNewStart));

-		sb.append(',');

-		sb.append(Integer.toString(fNewLength));

-		sb.append(" @@"); //$NON-NLS-1$

-		return sb.toString();

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
deleted file mode 100644
index d454055..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
+++ /dev/null
@@ -1,618 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.util.*;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.dnd.*;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.layout.*;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.wizard.*;

-

-import org.eclipse.ui.help.*;

-import org.eclipse.ui.model.*;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.internal.Utilities;

-

-

-/* package */ class InputPatchPage extends WizardPage {

-

-	// constants

-	protected static final int SIZING_TEXT_FIELD_WIDTH= 250;

-	protected static final int COMBO_HISTORY_LENGTH= 5;

-	

-	private final static int SIZING_SELECTION_WIDGET_WIDTH= 400;

-	private final static int SIZING_SELECTION_WIDGET_HEIGHT= 150;

-

-	// dialog store id constants

-	private final static String PAGE_NAME= "PatchWizardPage1"; //$NON-NLS-1$

-	private final static String STORE_PATCH_FILE_ID= PAGE_NAME + ".PATCH_FILE";	//$NON-NLS-1$

-	private final static String STORE_PATCH_FILES_ID= PAGE_NAME + ".PATCH_FILES";	//$NON-NLS-1$

-	private final static String STORE_USE_CLIPBOARD_ID= PAGE_NAME + ".USE_CLIPBOARD";	//$NON-NLS-1$

-

-	// help IDs

-	private final static String PATCH_HELP_CONTEXT_ID= "PatchWizardHelpId";	//$NON-NLS-1$

-	

-	private boolean fShowError= false;

-	

-	// SWT widgets

-	private Button fUseClipboardButton;

-	private Combo fPatchFileNameField;

-	private Button fPatchFileBrowseButton;

-	private Button fUsePatchFileButton;

-	private Group fPatchFileGroup;

-	private CheckboxTreeViewer fPatchTargets;

-	private PatchWizard fPatchWizard;

-

-

-	InputPatchPage(PatchWizard pw) {

-		super("InputPatchPage", PatchMessages.getString("InputPatchPage.title"), null); //$NON-NLS-1$ //$NON-NLS-2$

-		fPatchWizard= pw;

-		setMessage(PatchMessages.getString("InputPatchPage.message")); //$NON-NLS-1$

-	}

-	

-	/**

-	 * Get a path from the supplied text widget.

-	 * @return org.eclipse.core.runtime.IPath

-	 */

-	protected IPath getPathFromText(Text textField) {

-		return (new Path(textField.getText())).makeAbsolute();

-	}

-

-	/* package */ String getPatchName() {

-		if (getUseClipboard())

-			return PatchMessages.getString("InputPatchPage.Clipboard"); //$NON-NLS-1$

-		return getPatchFilePath();

-	}

-	

-	public void createControl(Composite parent) {

-				

-		Composite composite= new Composite(parent, SWT.NULL);

-		composite.setLayout(new GridLayout());

-		composite.setLayoutData(new GridData(/* GridData.VERTICAL_ALIGN_FILL | */ GridData.HORIZONTAL_ALIGN_FILL));

-		setControl(composite);

-		

-		Label l= new Label(composite, SWT.NONE);	// a spacer

-		l.setText(PatchMessages.getString("InputPatchPage.SelectInput")); //$NON-NLS-1$

-		buildInputGroup(composite);

-		

-		new Label(composite, SWT.NONE);	// a spacer		

-		

-		buildPatchFileGroup(composite);		

-			

-		restoreWidgetValues();

-

-		updateWidgetEnablements();

-		//updatePageCompletion();

-		

-		WorkbenchHelp.setHelp(composite, new DialogPageContextComputer(this, PATCH_HELP_CONTEXT_ID));								

-	}

-	

-	/* (non-JavaDoc)

-	 * Method declared in IWizardPage.

-	 */

-	public IWizardPage getNextPage() {

-		if (true) {

-			

-			Patcher patcher= ((PatchWizard) getWizard()).getPatcher();

-			

-			// Create a reader for the input

-			Reader reader= null;

-			if (getUseClipboard()) {

-				Control c= getControl();

-				if (c != null) {

-					Clipboard clipboard= new Clipboard(c.getDisplay());

-					Object o= clipboard.getContents(TextTransfer.getInstance());

-					if (o instanceof String)

-						reader= new StringReader((String)o);

-				}

-			} else {

-				String patchFilePath= getPatchFilePath();

-				if (patchFilePath != null) {

-					try {

-						reader= new FileReader(patchFilePath);

-					} catch (FileNotFoundException ex) {

-						MessageDialog.openError(null,

-							PatchMessages.getString("InputPatchPage.PatchErrorDialog.title"),	//$NON-NLS-1$

-							PatchMessages.getString("InputPatchPage.PatchFileNotFound.message")); //$NON-NLS-1$

-					}

-				}

-			}

-			

-			// parse the input

-			if (reader != null) {

-				try {

-					patcher.parse(new BufferedReader(reader));

-				} catch (IOException ex) {

-					MessageDialog.openError(null,

-						PatchMessages.getString("InputPatchPage.PatchErrorDialog.title_2"), //$NON-NLS-1$ 

-						PatchMessages.getString("InputPatchPage.ParseError.message")); //$NON-NLS-1$

-				}

-				

-				try {

-					reader.close();

-				} catch (IOException x) {

-				}

-			}

-			

-			Diff[] diffs= patcher.getDiffs();

-			if (diffs == null || diffs.length == 0) {

-				MessageDialog.openError(null,

-					PatchMessages.getString("InputPatchPage.PatchErrorDialog.title_4"),	//$NON-NLS-1$

-					PatchMessages.getString("InputPatchPage.NoDiffsFound.message"));  //$NON-NLS-1$

-				return this;

-			}

-			

-			// guess prefix count

-			int guess= guessPrefix(diffs);

-			patcher.setStripPrefixSegments(guess);

-		}

-		return super.getNextPage();

-	}

-		

-	private int guessPrefix(Diff[] diffs) {

-		ArrayList list= new ArrayList();

-		IResource target= fPatchWizard.getTarget();

-		if (target instanceof IFile) {

-			list.add(target.getFullPath());

-		} else if (target instanceof IContainer) {

-			addLeaf(list, (IContainer) target);

-		}

-		

-		// guess prefix count

-		for (int i= 0; i < diffs.length; i++) {

-			IPath p= diffs[i].fOldPath;

-			if (p != null) {

-				int matches= match(p, list);

-				if (matches > 0) {

-					return p.segmentCount() - matches;

-				}

-			}

-		}

-		return 0;

-	}

-	

-	private int match(IPath path, ArrayList list) {

-		Iterator iter= list.iterator();

-		while (iter.hasNext()) {

-			IPath filePath= (IPath) iter.next();

-			int matches= matchTrailingSegments(path, filePath);

-			if (matches > 0)

-				return matches;

-		}

-		return 0;

-	}

-	

-	private int matchTrailingSegments(IPath p1, IPath p2) {

-		int matches= 0;

-		int i1= p1.segmentCount()-1;

-		int i2= p2.segmentCount()-1;

-		for (; i1 >= 0 && i2 >= 0; i1--, i2--) {

-			String s1= p1.segment(i1);

-			String s2= p2.segment(i2);

-			if (!s1.equals(s2))

-				break;

-			matches++;

-		}

-		return matches;

-	}

-	

-	private void addLeaf(ArrayList list, IContainer c) {

-		IResource[] rs= null;

-		try {

-			rs= c.members();

-		} catch(CoreException ex) {

-		}

-		if (rs != null) {

-			for (int i= 0; i < rs.length; i++) {

-				IResource r= rs[i];

-				if (r instanceof IFile)

-					list.add(r.getFullPath());

-				else if (r instanceof IContainer)

-					addLeaf(list, (IContainer) r);

-			}

-		}

-	}

-

-	/* (non-JavaDoc)

-	 * Method declared in IWizardPage.

-	 */

-	public boolean canFlipToNextPage() {

-		if (true) {

-			// we can't call getNextPage to determine if flipping is allowed since computing

-			// the next page is quite expensive (checking preconditions and creating a

-			// change). So we say yes if the page is complete.

-			return isPageComplete();

-		} else {

-			return super.canFlipToNextPage();

-		}

-	}

-	

-	private void setEnablePatchFile(boolean enable) {

-		fPatchFileNameField.setEnabled(enable);

-		fPatchFileBrowseButton.setEnabled(enable);

-	}

-

-	/**

-	 *	Create the group for selecting the patch file

-	 */

-	private void buildPatchFileGroup(Composite parent) {

-		

-		fPatchFileGroup= new Group(parent, SWT.NONE);

-		fPatchFileGroup.setText(PatchMessages.getString("InputPatchPage.SelectPatch.title")); //$NON-NLS-1$

-		GridLayout layout= new GridLayout();

-		layout.numColumns= 3;

-		fPatchFileGroup.setLayout(layout);

-		fPatchFileGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

-		

-		// 1st row

-		fUsePatchFileButton= new Button(fPatchFileGroup, SWT.RADIO);

-		fUsePatchFileButton.setText(PatchMessages.getString("InputPatchPage.FileButton.text")); //$NON-NLS-1$

-		

-		fPatchFileNameField= new Combo(fPatchFileGroup, SWT.BORDER);

-		GridData gd= new GridData(GridData.FILL_HORIZONTAL);

-		//gd.horizontalIndent= 8;

-		gd.widthHint= SIZING_TEXT_FIELD_WIDTH;

-		fPatchFileNameField.setLayoutData(gd);

-		

-		fPatchFileBrowseButton= new Button(fPatchFileGroup, SWT.PUSH);

-		fPatchFileBrowseButton.setText(PatchMessages.getString("InputPatchPage.ChooseFileButton.text")); //$NON-NLS-1$

-		fPatchFileBrowseButton.setLayoutData(new GridData());

-		

-		// 2nd row

-		fUseClipboardButton= new Button(fPatchFileGroup, SWT.RADIO);

-		fUseClipboardButton.setText(PatchMessages.getString("InputPatchPage.UseClipboardButton.text")); //$NON-NLS-1$

-		gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);

-		gd.horizontalSpan= 2;

-		fUseClipboardButton.setLayoutData(gd);

-

-

-		// Add listeners

-		fUsePatchFileButton.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					fShowError= true;

-					setEnablePatchFile(!getUseClipboard());

-					updateWidgetEnablements();

-				}

-			}

-		);

-		fPatchFileNameField.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					setSourceName(fPatchFileNameField.getText());

-					updateWidgetEnablements();

-				}

-			}

-		);

-		fPatchFileNameField.addModifyListener(

-			new ModifyListener() {

-				public void modifyText(ModifyEvent e) {

-					fShowError= true;

-					updateWidgetEnablements();

-				}

-			}

-		);

-		fPatchFileBrowseButton.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					handlePatchFileBrowseButtonPressed();

-					updateWidgetEnablements();

-				}

-			}

-		);

-		

-		//fPatchFileNameField.setFocus();

-	}

-

-	private void buildInputGroup(Composite parent) {

-		

-		PatchWizard pw= (PatchWizard) getWizard();

-		IResource target= pw.getTarget();

-		IWorkspace workspace= target.getWorkspace();

-		IWorkspaceRoot root= workspace.getRoot();

-		

-		Tree tree= new Tree(parent, SWT.BORDER);

-		GridData gd= new GridData(GridData.FILL_HORIZONTAL);

-		gd.heightHint= 200;

-		tree.setLayoutData(gd);

-		

-		fPatchTargets= new CheckboxTreeViewer(tree);

-		fPatchTargets.setLabelProvider(new WorkbenchLabelProvider());

-		fPatchTargets.setContentProvider(new WorkbenchContentProvider());

-		fPatchTargets.setSorter(new WorkbenchViewerSorter());

-		fPatchTargets.setInput(root);

-		if (target != null) {

-			fPatchTargets.expandToLevel(target, 0);

-			fPatchTargets.setSelection(new StructuredSelection(target));

-		}

-		

-		// register listeners

-		fPatchTargets.addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent event) {

-					fPatchWizard.setTarget(PatchWizard.getResource(event.getSelection()));

-					updateWidgetEnablements();

-				}

-			}

-		);

-		//fPatchFileNameField.setFocus();

-	}

-	

-	/**

-	 * Returns a content provider for <code>IResource</code>s that returns 

-	 * only children of the given resource type.

-	 */

-	private ITreeContentProvider getResourceProvider(final int resourceType) {

-		return new WorkbenchContentProvider() {

-			public Object[] getChildren(Object o) {

-				if (o instanceof IContainer) {

-					try {

-						ArrayList results= new ArrayList();

-						IResource[] members= ((IContainer)o).members();

-						for (int i= 0; i < members.length; i++)

-							// filter out the desired resource types

-							if ((members[i].getType() & resourceType) != 0)

-								results.add(members[i]);

-						return results.toArray();

-					} catch (CoreException e) {

-					}

-				}

-				// just return an empty set of children

-				return new Object[0];

-			}

-		};

-	}

-	

-	/**

-	 * Updates the enable state of this page's controls.

-	 */

-	private void updateWidgetEnablements() {

-		

-		String error= null;

-

-		ISelection selection= fPatchTargets.getSelection();

-		boolean anySelected= selection != null && !selection.isEmpty();

-		if (!anySelected)

-			error= PatchMessages.getString("InputPatchPage.NothingSelected.message"); //$NON-NLS-1$

-

-		boolean gotPatch= false;

-		if (getUseClipboard()) {

-			Control c= getControl();

-			if (c != null) {

-				Clipboard clipboard= new Clipboard(c.getDisplay());

-				Object o= clipboard.getContents(TextTransfer.getInstance());

-				if (o instanceof String) {

-					String s= ((String) o).trim();

-					if (s.length() > 0)

-						gotPatch= true;

-					else

-						error= PatchMessages.getString("InputPatchPage.ClipboardIsEmpty.message"); //$NON-NLS-1$

-				} else

-					error= PatchMessages.getString("InputPatchPage.NoTextInClipboard.message");					 //$NON-NLS-1$

-			} else

-				error= PatchMessages.getString("InputPatchPage.CouldNotReadClipboard.message");					 //$NON-NLS-1$

-		} else {

-			String path= fPatchFileNameField.getText();

-			if (path != null && path.length() > 0) {

-				File file= new File(path);

-				gotPatch= file.exists() && file.isFile() && file.length() > 0;

-				if (!gotPatch)

-					error= PatchMessages.getString("InputPatchPage.CannotLocatePatch.message") + path; //$NON-NLS-1$

-			} else {

-				error= PatchMessages.getString("InputPatchPage.NoFileName.message"); //$NON-NLS-1$

-			}

-		}

-		

-		setPageComplete(anySelected && gotPatch);

-		if (fShowError)

-			setErrorMessage(error);

-	}

-	

-	protected void handlePatchFileBrowseButtonPressed() {

-		FileDialog dialog= new FileDialog(getShell(), SWT.NONE);

-		dialog.setText(PatchMessages.getString("InputPatchPage.SelectPatchFileDialog.title"));		 //$NON-NLS-1$

-		dialog.setFilterPath(getPatchFilePath());

-		String res= dialog.open();

-		if (res == null)

-			return;

-		

-		String patchFilePath= dialog.getFileName();

-		IPath filterPath= new Path(dialog.getFilterPath());

-		IPath path= filterPath.append(patchFilePath).makeAbsolute();	

-		patchFilePath= path.toOSString();

-		//fDialogSettings.put(IUIConstants.DIALOGSTORE_LASTEXTJAR, filterPath.toOSString());

-		

-		fPatchFileNameField.setText(patchFilePath);

-		//setSourceName(patchFilePath);

-	}

-	

-	/**

-	 * Sets the source name of the import to be the supplied path.

-	 * Adds the name of the path to the list of items in the

-	 * source combo and selects it.

-	 *

-	 * @param path the path to be added

-	 */

-	protected void setSourceName(String path) {

-	

-		if (path.length() > 0) {

-	

-			String[] currentItems= fPatchFileNameField.getItems();

-			int selectionIndex= -1;

-			for (int i= 0; i < currentItems.length; i++)

-				if (currentItems[i].equals(path))

-					selectionIndex= i;

-			

-			if (selectionIndex < 0) {	// not found in history

-				int oldLength= currentItems.length;

-				String[] newItems= new String[oldLength + 1];

-				System.arraycopy(currentItems, 0, newItems, 0, oldLength);

-				newItems[oldLength]= path;

-				fPatchFileNameField.setItems(newItems);

-				selectionIndex= oldLength;

-			}

-			fPatchFileNameField.select(selectionIndex);

-	

-			//resetSelection();

-		}

-	}

-	

-	/**

-	 *	The Finish button was pressed. Try to do the required work now and answer

-	 *	a boolean indicating success. If false is returned then the wizard will

-	 *	not close.

-	 *

-	 * @return boolean

-	 */

-	public boolean finish() {

-//		if (!ensureSourceIsValid())

-//			return false;

-	

-		saveWidgetValues();

-	

-//		Iterator resourcesEnum = getSelectedResources().iterator();

-//		List fileSystemObjects = new ArrayList();

-//		while (resourcesEnum.hasNext()) {

-//			fileSystemObjects.add(

-//				((FileSystemElement) resourcesEnum.next()).getFileSystemObject());

-//		}

-//	

-//		if (fileSystemObjects.size() > 0)

-//			return importResources(fileSystemObjects);

-//	

-//		MessageDialog

-//			.openInformation(

-//				getContainer().getShell(),

-//				DataTransferMessages.getString("DataTransfer.information"), //$NON-NLS-1$

-//				DataTransferMessages.getString("FileImport.noneSelected")); //$NON-NLS-1$

-//	

-//		return false;

-

-		return true;

-	}

-	

-	/**

-	 *	Use the dialog store to restore widget values to the values that they held

-	 *	last time this wizard was used to completion

-	 */

-	private void restoreWidgetValues() {

-		

-		boolean useClipboard= false;

-		

-		IDialogSettings settings= getDialogSettings();

-		if (settings != null) {

-			

-			useClipboard= settings.getBoolean(STORE_USE_CLIPBOARD_ID);

-

-			// set filenames history

-			String[] sourceNames= settings.getArray(STORE_PATCH_FILES_ID);

-			if (sourceNames != null)

-				for (int i= 0; i < sourceNames.length; i++)

-					if (sourceNames[i] != null && sourceNames[i].length() > 0)

-						fPatchFileNameField.add(sourceNames[i]);

-			

-			// set patch file path

-			String patchFilePath= settings.get(STORE_PATCH_FILES_ID);

-			if (patchFilePath != null)

-				setSourceName(patchFilePath);

-		}

-		

-		// set 'Use Clipboard' radio buttons

-		setUseClipboard(useClipboard);

-	}

-	

-	/**

-	 * 	Since Finish was pressed, write widget values to the dialog store so that they

-	 *	will persist into the next invocation of this wizard page

-	 */

-	void saveWidgetValues() {

-		IDialogSettings settings= getDialogSettings();

-		if (settings != null) {

-			

-			settings.put(STORE_USE_CLIPBOARD_ID, getUseClipboard());

-			settings.put(STORE_PATCH_FILES_ID, getPatchFilePath());

-			

-			// update source names history

-			String[] sourceNames= settings.getArray(STORE_PATCH_FILES_ID);

-			if (sourceNames == null)

-				sourceNames= new String[0];

-	

-			sourceNames= addToHistory(sourceNames, getPatchFilePath());

-			settings.put(STORE_PATCH_FILES_ID, sourceNames);

-		}

-	}

-	

-	// static helpers

-		

-	private void setUseClipboard(boolean useClipboard) {

-		if (useClipboard)

-			fUseClipboardButton.setSelection(true);

-		else

-			fUsePatchFileButton.setSelection(true);

-		setEnablePatchFile(!useClipboard);

-	}

-	

-	private boolean getUseClipboard() {

-		if (fUseClipboardButton != null)

-			return fUseClipboardButton.getSelection();

-		return false;

-	}

-

-	private String getPatchFilePath() {

-		if (fPatchFileNameField != null)

-			return fPatchFileNameField.getText();

-		return ""; //$NON-NLS-1$

-	} 

-

-	/**

-	 * Creates a new label with a bold font.

-	 *

-	 * @param parent the parent control

-	 * @param text the label text

-	 * @return the new label control

-	 */

-	private static Label buildPlainLabel(Composite parent, String text) {

-		Label label= new Label(parent, SWT.NONE);

-		label.setText(text);

-		GridData data= new GridData();

-		data.verticalAlignment= GridData.FILL;

-		data.horizontalAlignment= GridData.FILL;

-		label.setLayoutData(data);

-		return label;

-	}

-

-	/**

-	 * Adds an entry to a history, while taking care of duplicate history items

-	 * and excessively long histories. The assumption is made that all histories

-	 * should be of length <code>COMBO_HISTORY_LENGTH</code>.

-	 *

-	 * @param history the current history

-	 * @param newEntry the entry to add to the history

-	 */

-	protected static String[] addToHistory(String[] history, String newEntry) {

-		java.util.ArrayList l= new java.util.ArrayList(java.util.Arrays.asList(history));

-

-		l.remove(newEntry);

-		l.add(0,newEntry);

-	

-		// since only one new item was added, we can be over the limit

-		// by at most one item

-		if (l.size() > COMBO_HISTORY_LENGTH)

-			l.remove(COMBO_HISTORY_LENGTH);

-		

-		return (String[]) l.toArray(new String[l.size()]);

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java
deleted file mode 100644
index 9802645..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.util.*;

-

-import org.eclipse.jface.util.Assert;

-

-/* package */ class LineReader {

-

-	private boolean fHaveChar= false;

-	private int fLastChar;

-	private boolean fSawEOF= false;

-	private BufferedReader fReader;

-	

-	/* package */ LineReader(BufferedReader reader) {

-		fReader= reader;

-		Assert.isNotNull(reader);

-	}

-

-    /**

-     * Reads a line of text. A line is considered to be terminated by any one

-     * of a line feed ('\n'), a carriage return ('\r'), or a carriage return

-     * followed immediately by a linefeed.

-     * @return A string containing the contents of the line including

-     *	the line-termination characters, or <code>null</code> if the end of the

-     *	stream has been reached

-     * @exception IOException If an I/O error occurs

-     */

-	/* package */ String readLine() throws IOException {

-		StringBuffer sb= null;

-				

-		while (!fSawEOF) {

-			int c= readChar();

-			if (c == -1) {

-				fSawEOF= true;

-				break;

-			}

-			if (sb == null)

-				sb= new StringBuffer();

-			sb.append((char)c);

-			if (c == '\n')

-				break;

-			if (c == '\r') {

-				c= readChar();

-				if (c == -1) {

-					fSawEOF= true;

-					break;	// EOF

-				}

-				if (c != '\n') {

-					fHaveChar= true;

-					fLastChar= c;

-				} else

-					sb.append((char)c);	

-				break;

-			}

-		}

-		

-		if (sb != null)

-			return sb.toString();

-		return null;

-	}

-	

-	/* package */ void close() {

-		try {

-			fReader.close();

-		} catch (IOException ex) {

-		}

-	}

-	

-	/* package */ List readLines() {

-		try {

-			List lines= new ArrayList();

-			String line;

-			while ((line= readLine()) != null)

-				lines.add(line);

-			return lines;

-		} catch (IOException ex) {

-			//System.out.println("error while reading file: " + fileName + "(" + ex + ")");

-		} finally {

-			close();

-		}

-		return null;

-	}

-	/**

-	 * Returns the number of characters in the given string without

-	 * counting a trailing line separator.

-	 */

-	/* package */ int lineContentLength(String line) {

-		if (line == null)

-			return 0;

-		int length= line.length();

-		for (int i= length-1; i >= 0; i--) {

-			char c= line.charAt(i);

-			if (c =='\n' || c == '\r')

-				length--;

-			else

-				break;

-		}

-		return length;

-	}

-	

-	//---- private

-	

-	private int readChar() throws IOException {

-		if (fHaveChar) {

-			fHaveChar= false;

-			return fLastChar;

-		}

-		return fReader.read();

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
deleted file mode 100644
index d99a4f8..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.io.ByteArrayInputStream;

-import java.text.MessageFormat;

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.core.runtime.*;

-import org.eclipse.core.resources.*;

-

-import org.eclipse.jface.viewers.*;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.compare.internal.*;

-

-

-/**

- * A PatchCompareInput uses a Patcher to 

- * patch selected workspace resources.

- */

-/* package */ class PatchCompareInput extends CompareEditorInput {

-	

-	static class Rejected extends DiffNode implements IStreamContentAccessor {

-		Diff fDiff;

-		String fName;

-		Rejected(IDiffContainer parent, String name, Diff diff) {

-			super(parent, Differencer.NO_CHANGE);

-			fName= name;

-			fDiff= diff;

-		}

-		public String getName() {

-			return fName + " *"; //$NON-NLS-1$

-		}

-		public String getType() {

-			return "txt"; //$NON-NLS-1$

-		}

-		public Image getImage() {

-			return CompareUI.getImage("file"); //$NON-NLS-1$

-		}

-		public InputStream getContents() {

-			return new ByteArrayInputStream(fDiff.fRejected.getBytes());

-		}

-	}

-		

-	private DiffNode fRoot;

-	private IResource fTarget;

-	private Patcher fPatcher;

-	

-	/**

-	 * Creates an compare editor input for the given selection.

-	 */

-	/* package */ PatchCompareInput(CompareConfiguration config, Patcher patcher, ISelection selection) {

-		super(config);

-		fPatcher= patcher;

-		IResource[] s= Utilities.getResources(selection);

-		if (s.length == 1)

-			fTarget= s[0];	

-	}

-	

-	/**

-	 * Performs a two-way or three-way diff on the current selection.

-	 */

-	public Object prepareInput(IProgressMonitor pm) throws InvocationTargetException {

-						

-		CompareConfiguration cc= (CompareConfiguration) getCompareConfiguration();

-		

-		try {				

-			Diff[] diffs= fPatcher.getDiffs();

-			

-			pm.beginTask(Utilities.getString("ResourceCompare.taskName"), diffs.length); //$NON-NLS-1$

-		

-			fRoot= new DiffNode(0);

-			IContainer rootFolder= null;

-			if (fTarget instanceof IContainer)

-				rootFolder= (IContainer) fTarget;

-				

-			for (int i= 0; i < diffs.length; i++) {

-				Diff diff= diffs[i];

-				if (diff.isEnabled()) {

-					IPath path= fPatcher.getPath(diff);

-					createPath(fRoot, rootFolder, path, diff, false);

-					

-					String rej= diff.fRejected;

-					if (rej != null) {

-						IPath pp= path.removeLastSegments(1);

-						pp= pp.append(path.lastSegment() + ".rej"); //$NON-NLS-1$

-						createPath(fRoot, rootFolder, pp, diff, true);

-					}

-				}

-				pm.worked(1);

-			}

-						

-			fTarget.refreshLocal(IResource.DEPTH_INFINITE, pm);

-			

-			String leftLabel= fTarget.getName();

-			cc.setLeftLabel(leftLabel);

-			cc.setLeftImage(CompareUIPlugin.getImage(fTarget));

-			

-			String rformat= PatchMessages.getString("PatchCompareInput.RightTitle.format");	//$NON-NLS-1$

-			String rightLabel= MessageFormat.format(rformat, new String[] { fPatcher.getName() } );

-			cc.setRightLabel(rightLabel);

-			//cc.setRightImage(CompareUIPlugin.getImage(fRightResource));

-			

-			String format= Utilities.getString("ResourceCompare.twoWay.title"); //$NON-NLS-1$

-			String title= MessageFormat.format(format, new String[] {leftLabel, rightLabel} );

-			setTitle(title);

-

-			return fRoot;

-			

-		} catch (CoreException ex) {

-			throw new InvocationTargetException(ex);

-		} finally {

-			pm.done();

-		}

-	}

-	

-	public void saveChanges(IProgressMonitor pm) throws CoreException {

-		if (fRoot instanceof DiffNode) {

-			try {

-				commit(pm, (DiffNode) fRoot);

-			} finally {	

-				setDirty(false);

-			}

-		}

-	}

-	

-	/*

-	 * Recursively walks the diff tree and commits all changes.

-	 */

-	private static void commit(IProgressMonitor pm, DiffNode node) throws CoreException {

-		

-		ITypedElement left= node.getLeft();

-		if (left instanceof BufferedResourceNode)

-			((BufferedResourceNode) left).commit(pm);

-			

-		ITypedElement right= node.getRight();

-		if (right instanceof BufferedResourceNode)

-			((BufferedResourceNode) right).commit(pm);

-

-		IDiffElement[] children= node.getChildren();

-		if (children != null) {

-			for (int i= 0; i < children.length; i++) {

-				IDiffElement element= children[i];

-				if (element instanceof DiffNode)

-					commit(pm, (DiffNode) element);

-			}

-		}

-	}

-	

-	private void createPath(DiffContainer root, IContainer folder, IPath path, Diff diff, boolean reject) {

-		if (path.segmentCount() > 1) {

-			IFolder f= folder.getFolder(path.uptoSegment(1));

-			IDiffElement child= root.findChild(path.segment(0));

-			if (child == null) {

-				ResourceNode rn= new ResourceNode(f);

-				child= new DiffNode(root, Differencer.CHANGE, null, rn, rn);

-			}

-			if (child instanceof DiffContainer)

-				createPath((DiffContainer)child, f, path.removeFirstSegments(1), diff, reject);

-		} else {

-			// a leaf

-			BufferedResourceNode rn= new BufferedResourceNode(folder.getFile(path));

-			if (reject) {

-				new Rejected(root, path.segment(0), diff);

-			} else {

-				new DiffNode(root, diff.getType(), null, rn, new PatchedResource(rn, diff, path, fPatcher));

-			}					

-		}

-	}

-}

-

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java
deleted file mode 100644
index cd4cb28..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import org.eclipse.jface.dialogs.MessageDialog;

-

-import org.eclipse.compare.internal.ListDialog;

-

-public class PatchErrorDialog {

-	

-	private PatchErrorDialog() {

-		// no instance.

-	}

-	

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java
deleted file mode 100644
index 8dce380..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2002.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.util.MissingResourceException;

-import java.util.ResourceBundle;

-

-public class PatchMessages {

-

-	private static final String RESOURCE_BUNDLE= "org.eclipse.compare.internal.patch.PatchMessages";//$NON-NLS-1$

-

-	private static ResourceBundle fgResourceBundle= ResourceBundle.getBundle(RESOURCE_BUNDLE);

-

-	private PatchMessages() {

-	}

-

-	public static String getString(String key) {

-		try {

-			return fgResourceBundle.getString(key);

-		} catch (MissingResourceException e) {

-			return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties
deleted file mode 100644
index 2fcc649..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties
+++ /dev/null
@@ -1,74 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2002.

-# All Rights Reserved.

-# =====================================

-

-#

-# 'Compare with Patch' Action

-#

-PatchAction.ExceptionTitle=Saving Resources

-PatchAction.Exception=Unexpected exception. See log for details

-PatchAction.SavingDirtyEditorsTask=Saving dirty editors

-PatchAction.AlwaysSaveQuestion=&Always save all modified resources automatically prior to patching

-PatchAction.SaveAllQuestion=Save all modified resources

-PatchAction.SaveAllDescription=All modified resources must be saved before this operation.\nPress OK to confirm or Cancel otherwise

-

-#

-# PatchWizard

-#

-PatchWizard.title=Resource Patcher

-

-#

-# InputPatchPage

-#

-InputPatchPage.title= Patch Input Specification

-InputPatchPage.message= Define what resource to patch with which patch

-InputPatchPage.Clipboard=Clipboard

-InputPatchPage.SelectInput=Select a single file or folder to patch:

-InputPatchPage.PatchErrorDialog=Patch Error

-InputPatchPage.SelectPatch.title=Select Patch

-InputPatchPage.FileButton.text=File

-InputPatchPage.ChooseFileButton.text=Choose

-InputPatchPage.UseClipboardButton.text=Clipboard

-InputPatchPage.NothingSelected.message=Nothing selected to apply patch to

-InputPatchPage.ClipboardIsEmpty.message=Clipboard is empty

-InputPatchPage.NoTextInClipboard.message=Clipboard does not contain text

-InputPatchPage.CouldNotReadClipboard.message=Couldn\'t retrieve clipboard contents

-InputPatchPage.CannotLocatePatch.message=Can\'t locate patch file: 

-InputPatchPage.NoFileName.message=No file name

-InputPatchPage.SelectPatchFileDialog.title=Select Patch File

-InputPatchPage.PatchFileNotFound.message=Patch file not found.

-InputPatchPage.ParseError.message=Error while parsing patch

-InputPatchPage.NoDiffsFound.message=No diffs found in 

-

-#

-# PreviewPatchPage

-#

-PreviewPatchPage.title= Verify Patch

-PreviewPatchPage.message= The tree shows the contents of the patch.\nA checked item indicates that a patch could be applied succesfully. Uncheck an item if you want to exclude it.

-PreviewPatchPage.Left.title= Original

-PreviewPatchPage.Right.title= Result

-PreviewPatchPage.PatchOptions.title=Patch Options

-PreviewPatchPage.IgnoreSegments.text=Ignore leading path name segments:

-PreviewPatchPage.ReversePatch.text=Reverse Patch

-PreviewPatchPage.FuzzFactor.text=Maximum fuzz factor:

-PreviewPatchPage.FuzzFactor.tooltip=Allow context to shift this number of lines from the original place

-PreviewPatchPage.IgnoreWhitespace.text=Ignore Whitespace

-PreviewPatchPage.NoName.text=no name

-PreviewPatchPage.FileExists.error=(file already exists)

-PreviewPatchPage.FileDoesNotExist.error=(file doesn\'t exist)

-PreviewPatchPage.NoMatch.error=(no match)

-

-#

-# Patcher

-#

-Patcher.ErrorDialog.title=title

-Patcher.DeleteError.message=Error while deleting resource

-Patcher.UpdateError.message=Error while updating resource

-Patcher.RefreshError.message=Error while refreshing from local

-Patcher.Marker.message=Rejected patch

-

-#

-# PatchCompareInput

-#

-PatchCompareInput.RightTitle.format= Patch: {0}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
deleted file mode 100644
index 466b59a..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.wizard.Wizard;

-import org.eclipse.jface.dialogs.IDialogSettings;

-import org.eclipse.jface.dialogs.ProgressMonitorDialog;

-

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.runtime.NullProgressMonitor;

-import org.eclipse.core.runtime.IProgressMonitor;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.*;

-import org.eclipse.compare.structuremergeviewer.Differencer;

-

-

-/* package */ class PatchWizard extends Wizard {

-	

-	// dialog store id constants

-	private final static String DIALOG_SETTINGS_KEY= "PatchWizard"; //$NON-NLS-1$

-

-	private boolean fHasNewDialogSettings;

-	

-	private InputPatchPage fPatchWizardPage;

-	private PreviewPatchPage fPreviewPatchPage;

-	

-	private Patcher fPatcher;

-	private IResource fTarget;

-

-		

-	/**

-	 * Creates a wizard for applying a patch file to the workspace.

-	 */

-	/* package */ PatchWizard(ISelection selection) {

-		

-		fTarget= getResource(selection);

-

-		fPatcher= new Patcher();

-		

-		setWindowTitle(PatchMessages.getString("PatchWizard.title")); //$NON-NLS-1$

-		

-		IDialogSettings workbenchSettings= CompareUIPlugin.getDefault().getDialogSettings();

-		IDialogSettings section= workbenchSettings.getSection(DIALOG_SETTINGS_KEY); //$NON-NLS-1$

-		if (section == null)

-			fHasNewDialogSettings= true;

-		else {

-			fHasNewDialogSettings= false;

-			setDialogSettings(section);

-		}	

-	}

-	

-	static IResource getResource(ISelection selection) {

-		IResource[] rs= Utilities.getResources(selection);

-		if (rs != null && rs.length > 0)

-			return rs[0];

-		return null;

-	}

-		

-	Patcher getPatcher() {

-		return fPatcher;

-	}

-	

-	IResource getTarget() {

-		return fTarget;

-	}

-	

-	void setTarget(IResource target) {

-		fTarget= target;

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on IWizard.

-	 */

-	public void addPages() {

-		super.addPages();

-		

-		addPage(fPatchWizardPage= new InputPatchPage(this));

-		addPage(fPreviewPatchPage= new PreviewPatchPage(this));

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on IWizard.

-	 */

-	public boolean performFinish() {

-		

-		if (false) {

-			CompareConfiguration cc= new CompareConfiguration() {

-				public Image getImage(int kind) {

-					if (kind == Differencer.ADDITION)

-						kind= Differencer.DELETION;

-					else if (kind == Differencer.DELETION)

-						kind= Differencer.ADDITION;

-					return super.getImage(kind);

-				}

-				public Image getImage(Image base, int kind) {

-					if (kind == Differencer.ADDITION)

-						kind= Differencer.DELETION;

-					else if (kind == Differencer.DELETION)

-						kind= Differencer.ADDITION;

-					return super.getImage(base, kind);

-				}

-			};

-			cc.setProperty(CompareEditor.CONFIRM_SAVE_PROPERTY, new Boolean(false));

-	

-			fPatcher.setName(fPatchWizardPage.getPatchName());

-	

-			CompareUI.openCompareEditor(new PatchCompareInput(cc, fPatcher, new StructuredSelection(fTarget)));

-		} else {

-			fPatcher.setName(fPatchWizardPage.getPatchName());

-

-			try {

-				IRunnableWithProgress op= new IRunnableWithProgress() {

-					public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {

-						fPatcher.applyAll(getTarget(), monitor);

-					}

-				};

-				new ProgressMonitorDialog(CompareUIPlugin.getShell()).run(true, true, op);

-			} catch (InvocationTargetException e) {

-				// handle exception

-			} catch (InterruptedException e) {

-				// handle cancelation

-			}

-		}

-		

-		// Save the dialog settings

-		if (fHasNewDialogSettings) {

-			IDialogSettings workbenchSettings= CompareUIPlugin.getDefault().getDialogSettings();

-			IDialogSettings section= workbenchSettings.getSection(DIALOG_SETTINGS_KEY);

-			section= workbenchSettings.addNewSection(DIALOG_SETTINGS_KEY);

-			setDialogSettings(section);

-		}

-		

-		fPatchWizardPage.saveWidgetValues();

-		//fPreviewPatchPage.saveWidgetValues();

-		

-		return true;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java
deleted file mode 100644
index 5236f80..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.*;

-

-

-/* package */ class PatchedResource implements ITypedElement, IStreamContentAccessor {

-	

-	private Diff fDiff;

-	private IStreamContentAccessor fCurrent;

-	private IPath fPath;

-	private byte[] fContent;

-	private Patcher fPatcher;

-	

-	/* package */ PatchedResource(IStreamContentAccessor current, Diff diff, IPath path, Patcher patcher) {

-		fDiff= diff;

-		fCurrent= current;

-		fPath= path;

-		fPatcher= patcher;

-	}

-	

-	public InputStream getContents() throws CoreException {

-		if (fContent == null) {

-			InputStream is= null;

-			

-			try {

-				is= fCurrent.getContents();

-			} catch (CoreException ex) {

-				is= new ByteArrayInputStream(new byte[0]);

-			}

-			if (is != null) {

-				BufferedReader br= new BufferedReader(new InputStreamReader(is));

-				String s= fPatcher.patch(fDiff,br, null);

-				if (s != null)

-					fContent= s.getBytes();

-				try {

-					is.close();

-				} catch (IOException ex) {

-				}

-			}

-		}

-		return new ByteArrayInputStream(fContent);

-	}

-	

-	public Image getImage() {

-		return CompareUI.getImage(getType());

-	}

-	

-	public String getName() {

-		return fPath.toOSString();

-	}

-	

-	public String getType() {

-		String type= fPath.getFileExtension();

-		if (type != null)

-			return type;

-		return ITypedElement.UNKNOWN_TYPE;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
deleted file mode 100644
index d3e6a25..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
+++ /dev/null
@@ -1,984 +0,0 @@
-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.text.*;

-import java.util.*;

-

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.*;

-import org.eclipse.core.resources.*;

-

-import org.eclipse.compare.structuremergeviewer.Differencer;

-import org.eclipse.compare.internal.ExceptionHandler;

-

-

-/**

- * A Patcher 

- * - knows how to parse various patch file formats into some in-memory structure,

- * - holds onto the parsed data and the options to use when applying the patches,

- * - knows how to apply the patches to files and folders.

- */

-public class Patcher {

-	

-	private static final boolean DEBUG= false;

-	

-	private static final String DEV_NULL= "/dev/null"; //$NON-NLS-1$

-	

-	private static final String REJECT_FILE_EXTENSION= ".rej"; //$NON-NLS-1$

-	

-	private static final String MARKER_TYPE= "org.eclipse.compare.rejectedPatchMarker";	//$NON-NLS-1$

-

-	// diff formats

-	private static final int CONTEXT= 0;

-	private static final int ED= 1;

-	private static final int NORMAL= 2;

-	private static final int UNIFIED= 3;

-	

-	// we recognize the following date/time formats

-	private static DateFormat[] DATE_FORMATS= new DateFormat[] {

-		new SimpleDateFormat("EEE MMM dd kk:mm:ss yyyy"), //$NON-NLS-1$

-		new SimpleDateFormat("yyyy/MM/dd kk:mm:ss"), //$NON-NLS-1$

-		new SimpleDateFormat("EEE MMM dd kk:mm:ss yyyy", Locale.US) //$NON-NLS-1$

-	};

-		

-	private String fName;

-	private Diff[] fDiffs;

-	// patch options

-	private int fStripPrefixSegments;

-	private int fFuzz;

-	private boolean fIgnoreWhitespace;

-	private boolean fReverse= false;

-	

-	

-	Patcher() {

-	}

-	

-	//---- options

-	

-	void setName(String name) {

-		fName= name;

-	}

-	

-	String getName() {

-		return fName;

-	}

-	

-	/**

-	 * Returns an array of Diffs after a sucessfull call to <code>parse</code>.

-	 * If <code>parse</code> hasn't been called returns <code>null</code>.

-	 */

-	Diff[] getDiffs() {

-		return fDiffs;

-	}

-	

-	IPath getPath(Diff diff) {

-		IPath path= diff.getPath();

-		if (fStripPrefixSegments > 0 && fStripPrefixSegments < path.segmentCount())

-			path= path.removeFirstSegments(fStripPrefixSegments);

-		return path;

-	}

-

-	/**

-	 * Returns <code>true</code> if new value differs from old.

-	 */

-	boolean setStripPrefixSegments(int strip) {

-		if (strip != fStripPrefixSegments) {

-			fStripPrefixSegments= strip;

-			return true;

-		}

-		return false;

-	}

-	

-	int getStripPrefixSegments() {

-		return fStripPrefixSegments;

-	}

-	

-	/**

-	 * Returns <code>true</code> if new value differs from old.

-	 */

-	boolean setFuzz(int fuzz) {

-		if (fuzz != fFuzz) {

-			fFuzz= fuzz;

-			return true;

-		}

-		return false;

-	}

-	

-	/**

-	 * Returns <code>true</code> if new value differs from old.

-	 */

-	boolean setReversed(boolean reverse) {

-		if (fReverse != reverse) {

-			fReverse= reverse;

-			

-			for (int i= 0; i < fDiffs.length; i++)

-				fDiffs[i].reverse();

-						

-			return true;

-		}

-		return false;

-	}

-		

-	/**

-	 * Returns <code>true</code> if new value differs from old.

-	 */

-	boolean setIgnoreWhitespace(boolean ignoreWhitespace) {

-		if (ignoreWhitespace != fIgnoreWhitespace) {

-			fIgnoreWhitespace= ignoreWhitespace;

-			return true;

-		}

-		return false;

-	}

-		

-	//---- parsing patch files

-		

-	/* package */ void parse(BufferedReader reader) throws IOException {

-		List diffs= new ArrayList();

-		String line= null;

-		boolean reread= false;

-		String diffArgs= null;

-		String fileName= null;

-		

-		LineReader lr= new LineReader(reader);

-		

-		// read leading garbage

-		while (true) {

-			if (!reread)

-				line= lr.readLine();

-			reread= false;

-			if (line == null)

-				break;

-			if (line.length() < 4)

-				continue;	// too short

-								

-			// remember some infos

-			if (line.startsWith("Index: ")) { //$NON-NLS-1$

-				fileName= line.substring(7).trim();

-				continue;

-			}

-			if (line.startsWith("diff")) { //$NON-NLS-1$

-				diffArgs= line.substring(4).trim();

-				continue;

-			}

-

-			if (line.startsWith("--- ")) { //$NON-NLS-1$

-				line= readUnifiedDiff(diffs, lr, line, diffArgs, fileName);

-				diffArgs= fileName= null;

-				reread= true;

-			} else if (line.startsWith("*** ")) { //$NON-NLS-1$

-				line= readContextDiff(diffs, lr, line, diffArgs, fileName);

-				diffArgs= fileName= null;

-				reread= true;

-			}

-		}

-		

-		lr.close();

-		

-		fDiffs= (Diff[]) diffs.toArray((Diff[]) new Diff[diffs.size()]);

-	}

-

-	/**

-	 * Returns the next line that does not belong to this diff

-	 */

-	private String readUnifiedDiff(List diffs, LineReader reader, String line, String args, String fileName) throws IOException {

-								

-		String[] oldArgs= split(line.substring(4));

-

-		// read info about new file

-		line= reader.readLine();

-		if (line == null || !line.startsWith("+++ ")) //$NON-NLS-1$

-			return line;

-			

-		String[] newArgs= split(line.substring(4));

-	

-		Diff diff= new Diff(extractPath(oldArgs, 0, fileName), extractDate(oldArgs, 1),

-				   			extractPath(newArgs, 0, fileName), extractDate(newArgs, 1));

-		diffs.add(diff);

-				   

-		int[] oldRange= new int[2];

-		int[] newRange= new int[2];

-		List lines= new ArrayList();

-

-		try {

-			// read lines of hunk

-			while (true) {

-				

-				line= reader.readLine();

-				if (line == null)

-					return null;

-					

-				if (reader.lineContentLength(line) == 0) {

-					lines.add(' ' + line);

-					continue;

-				}

-				

-				char c= line.charAt(0);

-				switch (c) {

-				case '@':

-					if (line.startsWith("@@ ")) { //$NON-NLS-1$

-						// flush old hunk

-						if (lines.size() > 0) {

-							new Hunk(diff, oldRange, newRange, lines);

-							lines.clear();

-						}

-								

-						// format: @@ -oldStart,oldLength +newStart,newLength @@

-						extractPair(line, '-', oldRange);

-						extractPair(line, '+', newRange);

-						continue;

-					}

-					break;

-				case ' ':

-				case '+':

-				case '-':

-					lines.add(line);

-					continue;

-				case '\\':

-					if (line.startsWith("No newline at end of file", 2)) { //$NON-NLS-1$

-						int lastIndex= lines.size();

-						if (lastIndex > 0) {

-							line= (String) lines.get(lastIndex-1);

-							int end= line.length()-1;

-							char lc= line.charAt(end);

-							if (lc == '\n') {

-								end--;

-								if (end > 0 && line.charAt(end-1) == '\r')

-									end--;

-							} else if (lc == '\r') {

-								end--;

-							}

-							line= line.substring(0, end);

-							lines.set(lastIndex-1, line);

-						}

-						continue;

-					}

-					break;

-				default:

-					if (DEBUG) {

-						int a1= c, a2= 0;

-						if (line.length() > 1)

-							a2= line.charAt(1);

-						System.out.println("char: " + a1 + " " + a2); //$NON-NLS-1$ //$NON-NLS-2$

-					}

-					break;

-				}

-				return line;

-			}

-		} finally {

-			if (lines.size() > 0)

-				new Hunk(diff, oldRange, newRange, lines);

-			diff.finish();

-		}

-	}

-	

-	/**

-	 * Returns the next line that does not belong to this diff

-	 */

-	private String readContextDiff(List diffs, LineReader reader, String line, String args, String fileName) throws IOException {

-		

-		String[] oldArgs= split(line.substring(4));

-		

-		// read info about new file

-		line= reader.readLine();

-		if (line == null || !line.startsWith("--- ")) //$NON-NLS-1$

-			return line;

-		

-		String[] newArgs= split(line.substring(4));

-						

-		Diff diff= new Diff(extractPath(oldArgs, 0, fileName), extractDate(oldArgs, 1),

-				   			extractPath(newArgs, 0, fileName), extractDate(newArgs, 1));

-		diffs.add(diff);

-				   

-		int[] oldRange= new int[2];

-		int[] newRange= new int[2];

-		List oldLines= new ArrayList();

-		List newLines= new ArrayList();

-		List lines= oldLines;

-		

-		try {

-			// read lines of hunk

-			while (true) {

-				

-				line= reader.readLine();

-				if (line == null)

-					return line;

-				

-				int l= line.length();

-				if (l == 0)

-					continue;

-				if (l > 1) {

-					switch (line.charAt(0)) {

-					case '*':	

-						if (line.startsWith("***************")) {	// new hunk //$NON-NLS-1$

-							// flush old hunk

-							if (oldLines.size() > 0 || newLines.size() > 0) {

-								new Hunk(diff, oldRange, newRange, unifyLines(oldLines, newLines));

-								oldLines.clear();

-								newLines.clear();

-							}

-							continue;

-						}

-						if (line.startsWith("*** ")) {	// old range //$NON-NLS-1$

-							// format: *** oldStart,oldEnd ***

-							extractPair(line, ' ', oldRange);

-							oldRange[1]= oldRange[1]-oldRange[0]+1;

-							lines= oldLines;

-							continue;

-						}

-						break;

-					case ' ':	// context line

-					case '+':	// addition

-					case '!':	// change

-						if (line.charAt(1) == ' ') {

-							lines.add(line);

-							continue;

-						}

-						break;

-					case '-':

-						if (line.charAt(1) == ' ') {	// deletion

-							lines.add(line);

-							continue;

-						}

-						if (line.startsWith("--- ")) {	// new range //$NON-NLS-1$

-							// format: *** newStart,newEnd ***

-							extractPair(line, ' ', newRange);

-							newRange[1]= newRange[1]-newRange[0]+1;

-							lines= newLines;

-							continue;

-						}

-						break;

-					default:

-						break;

-					}

-				}

-				return line;

-			}

-		} finally {

-			// flush last hunk

-			if (oldLines.size() > 0 || newLines.size() > 0)

-				new Hunk(diff, oldRange, newRange, unifyLines(oldLines, newLines));

-			diff.finish();

-		}

-	}

-	

-	/**

-	 * Creates a List of lines in the unified format from

-	 * two Lists of lines in the 'classic' format.

-	 */

-	private List unifyLines(List oldLines, List newLines) {

-		List result= new ArrayList();

-

-		String[] ol= (String[]) oldLines.toArray(new String[oldLines.size()]);

-		String[] nl= (String[]) newLines.toArray(new String[newLines.size()]);

-		

-		int oi= 0, ni= 0;

-		

-		while (true) {

-			

-			char oc= 0;

-			String o= null;

-			if (oi < ol.length) {

-				o= ol[oi];

-				oc= o.charAt(0);

-			}

-			

-			char nc= 0;

-			String n= null;

-			if (ni < nl.length) {

-				n= nl[ni];

-				nc= n.charAt(0);

-			}

-			

-			// EOF

-			if (oc == 0 && nc == 0)

-				break;

-				

-			// deletion in old

-			if (oc == '-') {

-				do {

-					result.add('-' + o.substring(2));

-					oi++;

-					if (oi >= ol.length)

-						break;

-					o= ol[oi];

-				} while (o.charAt(0) == '-');

-				continue;

-			}

-			

-			// addition in new

-			if (nc == '+') {

-				do {

-					result.add('+' + n.substring(2));

-					ni++;

-					if (ni >= nl.length)

-						break;

-					n= nl[ni];

-				} while (n.charAt(0) == '+');

-				continue;

-			}

-			

-			// differing lines on both sides

-			if (oc == '!' && nc == '!') {

-				// remove old

-				do {

-					result.add('-' + o.substring(2));

-					oi++;

-					if (oi >= ol.length)

-						break;

-					o= ol[oi];

-				} while (o.charAt(0) == '!');

-				

-				// add new

-				do {

-					result.add('+' + n.substring(2));

-					ni++;

-					if (ni >= nl.length)

-						break;

-					n= nl[ni];

-				} while (n.charAt(0) == '!');

-				

-				continue;

-			}

-			

-			// context lines

-			if (oc == ' ' && nc == ' ') {

-				do {

-					Assert.isTrue(o.equals(n), "non matching context lines"); //$NON-NLS-1$

-					result.add(' ' + o.substring(2));

-					oi++;

-					ni++;

-					if (oi >= ol.length || ni >= nl.length)

-						break;

-					o= ol[oi];

-					n= nl[ni];

-				} while (o.charAt(0) == ' ' && n.charAt(0) == ' ');

-				continue;

-			}

-			

-			if (oc == ' ') {

-				do {

-					result.add(' ' + o.substring(2));

-					oi++;

-					if (oi >= ol.length)

-						break;

-					o= ol[oi];

-				} while (o.charAt(0) == ' ');

-				continue;

-			}

-

-			if (nc == ' ') {

-				do {

-					result.add(' ' + n.substring(2));

-					ni++;

-					if (ni >= nl.length)

-						break;

-					n= nl[ni];

-				} while (n.charAt(0) == ' ');

-				continue;

-			}

-			

-			Assert.isTrue(false, "unexpected char <" + oc + "> <" + nc + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

-		}

-		

-		return result;

-	}

-	

-	/**

-	 * Breaks the given string into tab separated substrings.

-	 * Leading and trailing whitespace is removed from each token.

-	 */ 

-	private String[] split(String line) {

-		List l= new ArrayList();

-		StringTokenizer st= new StringTokenizer(line, "\t"); //$NON-NLS-1$

-		while (st.hasMoreElements()) {

-			String token= st.nextToken().trim();

-			if (token.length() > 0)

- 				l.add(token);

-		}

-		return (String[]) l.toArray(new String[l.size()]);

-	}

-	

-	/**

-	 * @return the parsed time/date in milliseconds or -1 on error

-	 */

-	private long extractDate(String[] args, int n) {

-		if (n < args.length) {

-			String line= args[n];

-			for (int i= 0; i < DATE_FORMATS.length; i++) {

-				DATE_FORMATS[i].setLenient(true);

-				try {

-					Date date= DATE_FORMATS[i].parse(line);

-					return date.getTime();		

-				} catch (ParseException ex) {

-				}

-			}

-			// System.err.println("can't parse date: <" + line + ">");

-		}

-		return -1;

-	}

-	

-	/**

-	 * Returns null if file name is "/dev/null".

-	 */

-	private IPath extractPath(String[] args, int n, String path2) {

-		if (n < args.length) {

-			String path= args[n];

-			if (DEV_NULL.equals(path))

-				return null;

-			int pos= path.lastIndexOf(':');

-			if (pos >= 0)

-				path= path.substring(0, pos);

-			if (path2 != null && !path2.equals(path)) {

-				if (DEBUG) System.out.println("path mismatch: " + path2); //$NON-NLS-1$

-				path= path2;

-			}

-			return new Path(path);

-		}

-		return null;

-	}

-	

-	/**

-	 * Tries to extract two integers separated by a comma.

-	 * The parsing of the line starts at the position after

-	 * the first occurrence of the given character start an ends

-	 * at the first blank (or the end of the line).

-	 * If only a single number is found this is assumed to be the length of the range.

-	 * In this case the start of the range is set to 1.

-	 * If an error occurs the range -1,-1 is returned.

-	 */

-	private void extractPair(String line, char start, int[] pair) {

-		pair[0]= pair[1]= -1;

-		int startPos= line.indexOf(start);

-		if (startPos < 0) {

-			if (DEBUG) System.out.println("parsing error in extractPair: couldn't find \'" + start + "\'"); //$NON-NLS-1$ //$NON-NLS-2$

-			return;

-		}

-		line= line.substring(startPos+1);

-		int endPos= line.indexOf(' ');

-		if (endPos < 0) {

-			if (DEBUG) System.out.println("parsing error in extractPair: couldn't find end blank"); //$NON-NLS-1$

-			return;

-		}

-		line= line.substring(0, endPos);

-		int comma= line.indexOf(',');

-		if (comma >= 0) {

-			pair[0]= Integer.parseInt(line.substring(0, comma));

-			pair[1]= Integer.parseInt(line.substring(comma+1));

-		} else {

-			pair[0]= 1;

-			pair[1]= Integer.parseInt(line.substring(comma+1));

-		}

-	}

-	

-	//---- applying a patch file

-	

-	/**

-	 * Tries to patch the given lines with the specified Diff.

-	 * Any hunk that couldn't be applied is returned in the list failedHunks.

-	 */

-	/* package */ void patch(Diff diff, List lines, List failedHunks) {

-		

-		int shift= 0;

-		Iterator iter= diff.fHunks.iterator();

-		while (iter.hasNext()) {

-			Hunk hunk= (Hunk) iter.next();

-			hunk.fMatches= false;

-			shift= patch(hunk, lines, shift, failedHunks);

-		}

-	}

-

-	/**

-	 * Tries to patch the contents of the given reader with the specified Diff.

-	 * Any hunk that couldn't be applied is returned in the list failedHunks.

-	 */

-	/* package */ String patch(Diff diff, BufferedReader reader, List failedHunks) {

-		

-		List lines= new LineReader(reader).readLines();

-		if (lines == null)

-			lines= new ArrayList();

-

-		patch(diff, lines, failedHunks);

-		

-		return createString(lines);

-	}

-

-	/**

-	 * Tries to apply the specified hunk to the given lines.

-	 * If the hunk cannot be applied at the original position

-	 * the methods tries Fuzz lines before and after.

-	 * If this fails the Hunk is added to the given list of failed hunks.

-	 */

-	private int patch(Hunk hunk, List lines, int shift, List failedHunks) {

-		if (tryPatch(hunk, lines, shift)) {

-			shift+= doPatch(hunk, lines, shift);

-		} else {

-			boolean found= false;

-			int oldShift= shift;

-			

-			for (int i= shift-1; i > shift-fFuzz; i--) {

-				if (tryPatch(hunk, lines, i)) {

-					shift= i;

-					found= true;

-					break;

-				}

-			}

-			

-			if (! found) {

-				for (int i= shift+1; i < shift+fFuzz; i++) {

-					if (tryPatch(hunk, lines, i)) {

-						shift= i;

-						found= true;

-						break;

-					}

-				}

-			}

-			

-			if (found) {

-				if (DEBUG) System.out.println("patched hunk at offset: " + (shift-oldShift)); //$NON-NLS-1$

-				shift+= doPatch(hunk, lines, shift);

-			} else {

-				if (failedHunks != null) {

-					if (DEBUG) System.out.println("failed hunk"); //$NON-NLS-1$

-					failedHunks.add(hunk);

-				}

-			}

-			oldShift= oldShift;	// prevent compiler warning about unused local variable

-		}

-		return shift;

-	}

-	

-	/**

-	 * Tries to apply the given hunk on the specified lines.

-	 * The parameter shift is added to the line numbers given

-	 * in the hunk.

-	 */

-	private boolean tryPatch(Hunk hunk, List lines, int shift) {

-		int pos= hunk.fOldStart + shift;

-		int contextMatches= 0;

-		int deleteMatches= 0;

-		for (int i= 0; i < hunk.fLines.length; i++) {

-			String s= hunk.fLines[i];

-			Assert.isTrue(s.length() > 0);

-			String line= s.substring(1);

-			char controlChar= s.charAt(0);

-			if (controlChar == ' ') {	// context lines

-				while (true) {

-					if (pos < 0 || pos >= lines.size())

-						return false;

-					if (linesMatch(line, (String) lines.get(pos))) {

-						contextMatches++;

-						pos++;

-						break;

-					}

-					if (contextMatches <= 0)

-						return false;

-					pos++;

-				}

-			} else if (controlChar == '-') {

-				// deleted lines

-				while (true) {

-					if (pos < 0 || pos >= lines.size())

-						return false;

-					if (linesMatch(line, (String) lines.get(pos))) {

-						deleteMatches++;

-						pos++;

-						break;

-					}

-					if (deleteMatches <= 0)

-						return false;

-					pos++;

-				}

-			} else if (controlChar == '+') {

-				// added lines

-				// we don't have to do anything for a 'try'

-			} else

-				Assert.isTrue(false, "tryPatch: unknown control charcter: " + controlChar); //$NON-NLS-1$

-		}

-		return true;

-	}

-	

-	private int doPatch(Hunk hunk, List lines, int shift) {

-		int pos= hunk.fOldStart + shift;

-		for (int i= 0; i < hunk.fLines.length; i++) {

-			String s= hunk.fLines[i];

-			Assert.isTrue(s.length() > 0);

-			String line= s.substring(1);

-			char controlChar= s.charAt(0);

-			if (controlChar == ' ') {	// context lines

-				while (true) {

-					Assert.isTrue(pos < lines.size(), "doPatch: inconsistency in context"); //$NON-NLS-1$

-					if (linesMatch(line, (String) lines.get(pos))) {

-						pos++;

-						break;

-					}

-					pos++;

-				}

-			} else if (controlChar == '-') {

-				// deleted lines				

-				while (true) {

-					Assert.isTrue(pos < lines.size(), "doPatch: inconsistency in deleted lines"); //$NON-NLS-1$

-					if (linesMatch(line, (String) lines.get(pos))) {

-						break;

-					}

-					pos++;

-				}

-				lines.remove(pos);

-			} else if (controlChar == '+') {

-				// added lines

-				lines.add(pos,  line);

-				pos++;

-			} else

-				Assert.isTrue(false, "doPatch: unknown control character: " + controlChar); //$NON-NLS-1$

-		}

-		hunk.fMatches= true;

-		return hunk.fNewLength - hunk.fOldLength;

-	}

-

-	public void applyAll(IResource target, IProgressMonitor pm) {

-		

-		final int WORK_UNIT= 10;

-				

-		IFile file= null;	// file to be patched

-		IContainer container= null;

-		if (target instanceof IContainer)

-			container= (IContainer) target;

-		else if (target instanceof IFile) {

-			file= (IFile) target;

-			container= file.getParent();

-		} else {

-			Assert.isTrue(false);

-		}

-		

-		if (pm != null)

-			pm.beginTask("Patching", fDiffs.length*WORK_UNIT);

-		

-		for (int i= 0; i < fDiffs.length; i++) {

-			

-			int workTicks= WORK_UNIT;

-			

-			Diff diff= fDiffs[i];

-			if (diff.isEnabled()) {

-				

-				IPath path= getPath(diff);

-				if (pm != null)

-					pm.subTask(path.toString());

-			

-				if (container != null)

-					file= createPath(container, path);

-				List failed= new ArrayList();

-				List result= null;

-				

-				int type= diff.getType();

-				switch (type) {

-				case Differencer.ADDITION:

-					// patch it and collect rejected hunks

-					result= apply(diff, file, true, failed);

-					store(createString(result), file, new SubProgressMonitor(pm, workTicks));

-					workTicks-= WORK_UNIT;

-					break;

-				case Differencer.DELETION:

-					deleteFile(file, new SubProgressMonitor(pm, workTicks));

-					workTicks-= WORK_UNIT;

-					break;

-				case Differencer.CHANGE:

-					// patch it and collect rejected hunks

-					result= apply(diff, file, false, failed);

-					store(createString(result), file, new SubProgressMonitor(pm, workTicks));

-					workTicks-= WORK_UNIT;

-					break;

-				}

-

-				if (failed.size() > 0) {

-					IPath pp= null;

-					if (path.segmentCount() > 1) {

-						pp= path.removeLastSegments(1);

-						pp= pp.append(path.lastSegment() + REJECT_FILE_EXTENSION);

-					} else

-						pp= new Path(path.lastSegment() + REJECT_FILE_EXTENSION);

-					file= createPath(container, pp);

-					if (file != null) {

-						store(getRejected(failed), file, pm);

-						try {

-							IMarker marker= file.createMarker(MARKER_TYPE);

-							marker.setAttribute(marker.MESSAGE, PatchMessages.getString("Patcher.Marker.message"));	//$NON-NLS-1$

-							marker.setAttribute(marker.PRIORITY, IMarker.PRIORITY_HIGH);

-						} catch (CoreException ex) {

-						}

-					}

-				}

-			}

-			

-			if (pm != null) {

-				if (pm.isCanceled())

-					break;

-				if (workTicks > 0)

-					pm.worked(workTicks);

-			}

-		}

-		

-		/*

-		if (pm != null)

-			pm.subTask("Refreshing");

-		try {

-			target.refreshLocal(IResource.DEPTH_INFINITE, pm);

-		} catch (CoreException ex) {

-			ExceptionHandler.handle(ex,

-				PatchMessages.getString("Patcher.ErrorDialog.title"),	//$NON-NLS-1$

-				PatchMessages.getString("Patcher.RefreshError.message"));	//$NON-NLS-1$

-		}

-		*/

-		

-		// IWorkspace.validateEdit(IFile[], Object context);

-	}

-	

-	/**

-	 * Reads the contents from the given file and returns them as

-	 * a List of lines.

-	 */

-	private List load(IFile file, boolean create) {

-		List lines= null;

-		if (!create && file != null) {

-			// read current contents

-			InputStream is= null;

-			try {

-				is= file.getContents();

-				BufferedReader reader= new BufferedReader(new InputStreamReader(is));

-				lines= new LineReader(reader).readLines();

-			} catch(CoreException ex) {

-			} finally {

-				if (is != null)

-					try {

-						is.close();

-					} catch(IOException ex) {

-					}

-			}

-		}

-		

-		if (lines == null)

-			lines= new ArrayList();

-		return lines;

-	}

-	

-	List apply(Diff diff, IFile file, boolean create, List failedHunks) {

-		

-		List lines= load(file, create);

-		patch(diff, lines, failedHunks);

-		return lines;

-	}

-	

-	/**

-	 * Deletes the given file.

-	 */

-	private void deleteFile(IFile file, IProgressMonitor pm) {

-		try {

-			file.delete(true, true, pm);

-		} catch (CoreException ex) {

-			ExceptionHandler.handle(ex,

-				PatchMessages.getString("Patcher.ErrorDialog.title"),	//$NON-NLS-1$

-				PatchMessages.getString("Patcher.DeleteError.message"));	//$NON-NLS-1$

-		}

-	}

-	

-	/**

-	 * Converts the string into bytes and stores them in the given file.

-	 */

-	private void store(String contents, IFile file, IProgressMonitor pm) {

-		

-		// and save it

-		InputStream is= new ByteArrayInputStream(contents.getBytes());

-		try {

-			if (file.exists()) {

-				file.setContents(is, false, true, pm);

-			} else {

-				file.create(is, false, pm);

-			}

-		} catch (CoreException ex) {

-			ExceptionHandler.handle(ex,

-				PatchMessages.getString("Patcher.ErrorDialog.title"),	//$NON-NLS-1$

-				PatchMessages.getString("Patcher.UpdateError.message"));  //$NON-NLS-1$

-		} finally {

-			if (is != null)

-				try {

-					is.close();

-				} catch(IOException ex) {

-				}

-		}

-	}

-

-	/**

-	 * Concatenates all strings found in the gievn List.

-	 */

-	private String createString(List lines) {

-		StringBuffer sb= new StringBuffer();

-		Iterator iter= lines.iterator();

-		while (iter.hasNext())

-			sb.append((String)iter.next());

-		return sb.toString();

-	}

-

-	String getRejected(List failedHunks) {

-		if (failedHunks.size() <= 0)

-			return null;

-		

-		StringBuffer sb= new StringBuffer();

-		Iterator iter= failedHunks.iterator();

-		while (iter.hasNext()) {

-			Hunk hunk= (Hunk) iter.next();

-			sb.append(hunk.getRejectedDescription());

-			sb.append('\n');

-			sb.append(hunk.getContent());

-		}

-		return sb.toString();

-	}

-	

-	/**

-	 * Ensures that a file with the given path exists in

-	 * the given container. Folder are created as necessary.

-	 */

-	private IFile createPath(IContainer container, IPath path) {

-		if (path.segmentCount() > 1) {

-			IFolder f= container.getFolder(path.uptoSegment(1));

-			return createPath(f, path.removeFirstSegments(1));

-		}

-		// a leaf

-		return container.getFile(path);

-	}

-

-	/**

-	 * Returns the given string with all whitespace characters removed.

-	 * Whitespace is defined by <code>Character.isWhitespace(...)</code>.

-	 */

-	private static String stripWhiteSpace(String s) {

-		StringBuffer sb= new StringBuffer();

-		int l= s.length();

-		for (int i= 0; i < l; i++) {

-			char c= s.charAt(i);

-			if (!Character.isWhitespace(c))

-				sb.append(c);

-		}

-		return sb.toString();

-	}

-	

-	/**

-	 * Compares two strings.

-	 * If fIgnoreWhitespace is true whitespace and line endings are ignored.

-	 */

-	private boolean linesMatch(String line1, String line2) {

-		if (fIgnoreWhitespace)

-			return stripWhiteSpace(line1).equals(stripWhiteSpace(line2));

-		return line1.equals(line2);

-	}

-	

-	/**

-	 * Returns the length (exluding end-of-line characters) of the given string.

-	 */

-	/* package */ static int length(String s) {

-		int l= s.length();

-		if (l > 0 && s.charAt(l-1) == '\n')

-			l--;

-		if (l > 1 && s.charAt(l-2) == '\r')

-			l--;

-		return l;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java
deleted file mode 100644
index 8c2ca82..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java
+++ /dev/null
@@ -1,538 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.util.*;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.layout.*;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.viewers.Viewer;

-import org.eclipse.jface.wizard.WizardPage;

-import org.eclipse.jface.resource.ImageDescriptor;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.*;

-import org.eclipse.compare.structuremergeviewer.*;

-

-

-/**

- * Shows the parsed patch file and any mismatches

- * between files, hunks and the currently selected

- * resources.

- */

-/* package */ class PreviewPatchPage extends WizardPage {

-	

-	/**

-	 * Used with CompareInput

-	 */

-	static class HunkInput implements ITypedElement, IStreamContentAccessor {

-		String fContent;

-		String fType;

-		

-		HunkInput(String type, String s) {

-			fType= type;

-			fContent= s;

-		}

-		public Image getImage() {

-			return null;

-		}

-		public String getName() {

-			return PatchMessages.getString("PreviewPatchPage.NoName.text"); //$NON-NLS-1$

-		}

-		public String getType() {

-			return fType;

-		}

-		public InputStream getContents() {

-			return new ByteArrayInputStream(fContent.getBytes());

-		}

-	};

-		

-	private PatchWizard fPatchWizard;

-	

-	private Tree fTree;

-	private Combo fStripPrefixSegments;

-	private CompareViewerSwitchingPane fHunkViewer;

-	private Button fIgnoreWhitespaceButton;

-	private Button fReversePatchButton;

-	private Text fFuzzField;

-	

-	private Image fNullImage;

-	private Image fAddImage;

-	private Image fDelImage;

-	private Image fErrorImage;

-	private Image fErrorAddImage;

-	private Image fErrorDelImage;

-	

-	private CompareConfiguration fCompareConfiguration;

-	

-	

-	/* package */ PreviewPatchPage(PatchWizard pw) {

-		super("PreviewPatchPage",	//$NON-NLS-1$ 

-			PatchMessages.getString("PreviewPatchPage.title"), null); //$NON-NLS-1$

-		

-		setMessage(PatchMessages.getString("PreviewPatchPage.message"));	//$NON-NLS-1$

-		

-		fPatchWizard= pw;

-		//setPageComplete(false);

-		

-		int w= 16;

-		

-		ImageDescriptor addId= CompareUIPlugin.getImageDescriptor("ovr16/add_ov.gif");	//$NON-NLS-1$

-		ImageDescriptor delId= CompareUIPlugin.getImageDescriptor("ovr16/del_ov.gif");	//$NON-NLS-1$

-

-		ImageDescriptor errId= CompareUIPlugin.getImageDescriptor("ovr16/error_ov.gif");	//$NON-NLS-1$

-		Image errIm= errId.createImage();

-		

-		fNullImage= new DiffImage(null, null, w).createImage();

-		fAddImage= new DiffImage(null, addId, w).createImage();

-		fDelImage= new DiffImage(null, delId, w).createImage();

-

-		fErrorImage= new DiffImage(errIm, null, w).createImage();

-		fErrorAddImage= new DiffImage(errIm, addId, w).createImage();

-		fErrorDelImage= new DiffImage(errIm, delId, w).createImage();

-		

-		fCompareConfiguration= new CompareConfiguration();

-		

-		fCompareConfiguration.setLeftEditable(false);

-		fCompareConfiguration.setLeftLabel(PatchMessages.getString("PreviewPatchPage.Left.title")); //$NON-NLS-1$

-		

-		fCompareConfiguration.setRightEditable(false);

-		fCompareConfiguration.setRightLabel(PatchMessages.getString("PreviewPatchPage.Right.title")); //$NON-NLS-1$

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared in WizardPage

-	 */

-	public void setVisible(boolean visible) {

-		if (visible)

-			buildTree();

-		super.setVisible(visible);

-	}

-

-	Image getImage(Diff diff) {

-		if (diff.fMatches) {

-			switch (diff.getType()) {

-			case Differencer.ADDITION:

-				return fAddImage;

-			case Differencer.DELETION:

-				return fDelImage;

-			}

-			return fNullImage;

-		}

-		switch (diff.getType()) {

-		case Differencer.ADDITION:

-			return fErrorAddImage;

-		case Differencer.DELETION:

-			return fErrorDelImage;

-		}

-		return fErrorImage;

-	}

-	

-	Image getImage(Hunk hunk) {

-		if (hunk.fMatches)

-			return fNullImage;

-		return fErrorImage;

-	}

-	

-	public void createControl(Composite parent) {

-

-		Composite composite= new Composite(parent, SWT.NULL);

-		composite.setLayout(new GridLayout());

-		composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));

-

-		setControl(composite);

-		

-		buildPatchOptionsGroup(composite);

-		

-		Splitter splitter= new Splitter(composite, SWT.VERTICAL);

-		splitter.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL

-					| GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_VERTICAL));

-

-		

-		// top pane showing diffs and hunks in a check box tree 

-		fTree= new Tree(splitter, SWT.CHECK | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);

-		GridData gd= new GridData();

-		gd.verticalAlignment= GridData.FILL;

-		gd.horizontalAlignment= GridData.FILL;

-		gd.grabExcessHorizontalSpace= true;

-		gd.grabExcessVerticalSpace= true;

-		fTree.setLayoutData(gd);

-				

-		// bottom pane showing hunks in compare viewer 

-		fHunkViewer= new CompareViewerSwitchingPane(splitter, SWT.BORDER) {

-			protected Viewer getViewer(Viewer oldViewer, Object input) {

-				return CompareUI.findContentViewer(oldViewer, (ICompareInput)input, this, fCompareConfiguration);

-			}

-		};

-		gd= new GridData();

-		gd.verticalAlignment= GridData.FILL;

-		gd.horizontalAlignment= GridData.FILL;

-		gd.grabExcessHorizontalSpace= true;

-		gd.grabExcessVerticalSpace= true;

-		fHunkViewer.setLayoutData(gd);

-		

-		// register listeners

-		

-		fTree.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					TreeItem ti= (TreeItem) e.item;

-					Object data= e.item.getData();

-					if (e.detail == SWT.CHECK) {

-						boolean checked= ti.getChecked();

-						if (data instanceof Hunk) {

-							Hunk hunk= (Hunk) data;

-							checked= checked && hunk.fMatches;

-							hunk.setEnabled(checked);

-							ti.setChecked(checked);

-							updateGrayedState(ti);

-						} else if (data instanceof Diff) {

-							Diff diff= (Diff) data;

-							diff.setEnabled(checked && diff.fMatches);

-							updateCheckedState(ti);

-						}

-					} else {

-						if (data instanceof Hunk)

-							PreviewPatchPage.this.fHunkViewer.setInput(createInput((Hunk)data));

-						else

-							PreviewPatchPage.this.fHunkViewer.setInput(null);

-					}

-				}

-			}

-		);

-		

-		// creating tree's content

-		buildTree();

-

-		// WorkbenchHelp.setHelp(composite, new DialogPageContextComputer(this, PATCH_HELP_CONTEXT_ID));								

-	}

-	

-	/**

-	 *	Create the group for setting various patch options

-	 */

-	private void buildPatchOptionsGroup(Composite parent) {

-				

-		final Patcher patcher= fPatchWizard.getPatcher();

-		

-		Group group= new Group(parent, SWT.NONE);

-		group.setText(PatchMessages.getString("PreviewPatchPage.PatchOptions.title")); //$NON-NLS-1$

-		GridLayout layout= new GridLayout();

-		layout.numColumns= 5;

-		group.setLayout(layout);

-		group.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));

-		//fPatchFileGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

-	

-		// 1st row

-		new Label(group, SWT.NONE).setText(PatchMessages.getString("PreviewPatchPage.IgnoreSegments.text")); //$NON-NLS-1$

-

-		fStripPrefixSegments= new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.SIMPLE);

-		int prefixCnt= patcher.getStripPrefixSegments();

-		String prefix= Integer.toString(prefixCnt);

-		fStripPrefixSegments.add(prefix);

-		fStripPrefixSegments.setText(prefix);

-		

-		addSpacer(group);

-		

-		fReversePatchButton= new Button(group, SWT.CHECK);

-		fReversePatchButton.setText(PatchMessages.getString("PreviewPatchPage.ReversePatch.text")); //$NON-NLS-1$

-		

-		addSpacer(group);

-		

-		// 2nd row

-		Label l= new Label(group, SWT.NONE);

-		l.setText(PatchMessages.getString("PreviewPatchPage.FuzzFactor.text")); //$NON-NLS-1$

-		l.setToolTipText(PatchMessages.getString("PreviewPatchPage.FuzzFactor.tooltip")); //$NON-NLS-1$

-		fFuzzField= new Text(group, SWT.BORDER);

-		fFuzzField.setText("2"); //$NON-NLS-1$

-		GridData gd2= new GridData(GridData.HORIZONTAL_ALIGN_CENTER);

-		gd2.widthHint= 30;

-		fFuzzField.setLayoutData(gd2);

-

-		addSpacer(group);

-		

-		fIgnoreWhitespaceButton= new Button(group, SWT.CHECK);

-		fIgnoreWhitespaceButton.setText(PatchMessages.getString("PreviewPatchPage.IgnoreWhitespace.text")); //$NON-NLS-1$

-		

-		addSpacer(group);

-				

-		// register listeners

-			

-		if (fStripPrefixSegments != null) 

-			fStripPrefixSegments.addSelectionListener(

-				new SelectionAdapter() {

-					public void widgetSelected(SelectionEvent e) {

-						if (patcher.setStripPrefixSegments(getStripPrefixSegments()))

-							updateTree();

-					}

-				}

-			);

-		fReversePatchButton.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					if (patcher.setReversed(fReversePatchButton.getSelection()))

-						updateTree();

-				}

-			}

-		);

-		fIgnoreWhitespaceButton.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					if (patcher.setIgnoreWhitespace(fIgnoreWhitespaceButton.getSelection()))

-						updateTree();

-				}

-			}

-		);

-		

-		fFuzzField.addModifyListener(

-			new ModifyListener() {

-				public void modifyText(ModifyEvent e) {

-					if (patcher.setFuzz(getFuzzFactor()))

-						updateTree();

-				}

-			}

-		);

-	}

-		

-	ICompareInput createInput(Hunk hunk) {

-		

-		String[] lines= hunk.fLines;

-		StringBuffer left= new StringBuffer();

-		StringBuffer right= new StringBuffer();

-		

-		for (int i= 0; i < lines.length; i++) {

-			String line= lines[i];

-			String rest= line.substring(1);

-			switch (line.charAt(0)) {

-			case ' ':

-				left.append(rest);

-				right.append(rest);

-				break;

-			case '-':

-				left.append(rest);

-				break;

-			case '+':

-				right.append(rest);

-				break;

-			}

-		}

-		

-		Diff diff= hunk.fParent;

-		IPath path= diff.getPath();

-		String type= path.getFileExtension();

-		

-		return new DiffNode(new HunkInput(type, left.toString()), new HunkInput(type, right.toString()));

-	}		

-	

-	/**

-	 * Builds a tree from list of Diffs.

-	 * As a side effect it calculates the maximum number of segments

-	 * in all paths.

-	 */

-	private void buildTree() {

-		setPageComplete(true);

-		if (fTree != null && !fTree.isDisposed()) {

-			fTree.removeAll();

-			fHunkViewer.setInput(null);

-			

-			int length= 99;

-			

-			Diff[] diffs= fPatchWizard.getPatcher().getDiffs();			

-			if (diffs != null) {

-				for (int i= 0; i < diffs.length; i++) {

-					Diff diff= diffs[i];

-					TreeItem d= new TreeItem(fTree, SWT.NULL);

-					d.setData(diff);

-					d.setImage(getImage(diff));

-					

-					if (diff.fOldPath != null)

-						length= Math.min(length, diff.fOldPath.segmentCount());

-					if (diff.fNewPath != null)

-						length= Math.min(length, diff.fNewPath.segmentCount());

-					

-					java.util.List hunks= diff.fHunks;

-					java.util.Iterator iter= hunks.iterator();

-					while (iter.hasNext()) {

-						Hunk hunk= (Hunk) iter.next();

-						TreeItem h= new TreeItem(d, SWT.NULL);

-						h.setData(hunk);

-						h.setText(hunk.getDescription());

-					}

-				}

-			}

-			if (fStripPrefixSegments != null && length != 99)

-				for (int i= 1; i < length; i++)

-					fStripPrefixSegments.add(Integer.toString(i));

-		}

-		

-		updateTree();

-	}

-	

-	private IFile existsInSelection(IPath path) {

-		IResource target= fPatchWizard.getTarget();

-		if (target instanceof IFile) {

-			IFile file= (IFile) target;

-			IPath path2= file.getFullPath().removeFirstSegments(1);

-			//System.out.println("target: " + path2.toOSString());

-			//System.out.println("  path: " + path.toOSString());

-			if (path.equals(path2))

-				return file;

-//			String name= file.getName();

-//			if (path.lastSegment().equals(name))

-//				return file;

-		} else if (target instanceof IContainer) {

-			IContainer c= (IContainer) target;

-			if (c.exists(path))

-				return c.getFile(path);

-		}

-		return null;

-	}

-	

-	/**

-	 * Updates label and checked state of tree items.

-	 */

-	private void updateTree() {

-		if (fTree == null || fTree.isDisposed())

-			return;

-		int strip= getStripPrefixSegments();

-		TreeItem[] children= fTree.getItems();

-		for (int i= 0; i < children.length; i++) {

-			TreeItem item= children[i];

-			Diff diff= (Diff) item.getData();

-			diff.fMatches= false;

-			String error= null;

-			

-			boolean create= false;	

-			IFile file= null;

-			if (diff.getType() == Differencer.ADDITION) {

-				IPath p= diff.fNewPath;

-				if (strip > 0 && strip < p.segmentCount())

-					p= p.removeFirstSegments(strip);

-				file= existsInSelection(p);

-				if (file == null) {

-					diff.fMatches= true;

-				} else {

-					// file already exists

-					error= PatchMessages.getString("PreviewPatchPage.FileExists.error"); //$NON-NLS-1$

-				}

-				create= true;

-			} else {

-				IPath p= diff.fOldPath;

-				if (strip > 0 && strip < p.segmentCount())

-					p= p.removeFirstSegments(strip);

-				file= existsInSelection(p);

-				diff.fMatches= file != null;

-				if (file != null) {

-					diff.fMatches= true;

-				} else {

-					// file doesn't exist

-					error= PatchMessages.getString("PreviewPatchPage.FileDoesNotExist.error"); //$NON-NLS-1$

-				}

-			}			

-			

-			boolean checked= false;

-				

-			ArrayList failedHunks= new ArrayList();

-			fPatchWizard.getPatcher().apply(diff, file, create, failedHunks);

-

-			if (failedHunks.size() > 0)

-				diff.fRejected= fPatchWizard.getPatcher().getRejected(failedHunks);

-			

-			int checkedSubs= 0;	// counts checked hunk items

-			TreeItem[] hunkItems= item.getItems();

-			for (int h= 0; h < hunkItems.length; h++) {

-				Hunk hunk= (Hunk) hunkItems[h].getData();

-				boolean failed= failedHunks.contains(hunk);

-				String hunkError= null;

-				if (failed)

-					hunkError= PatchMessages.getString("PreviewPatchPage.NoMatch.error"); //$NON-NLS-1$

-				hunk.setEnabled(diff.isEnabled() && !failed);

-				hunkItems[h].setChecked(hunk.isEnabled());

-				if (hunk.isEnabled()) {

-					checkedSubs++;

-					checked= true;

-				}

-				String hunkLabel= hunk.getDescription();

-				if (hunkError != null)

-					hunkLabel+= "   " + hunkError; //$NON-NLS-1$

-				hunkItems[h].setText(hunkLabel);

-				hunkItems[h].setImage(getImage(hunk));

-			}

-			

-			String label= diff.getDescription(strip);

-			if (error != null)

-				label+= "    " + error; //$NON-NLS-1$

-			item.setText(label);

-			item.setImage(getImage(diff));

-			item.setChecked(checked);

-			boolean gray= (checkedSubs > 0 &&  checkedSubs < hunkItems.length);

-			item.setGrayed(gray);

-			item.setExpanded(gray);

-		}

-	}

-	

-	/**

-	 * Updates the gray state of the given diff and the checked state of its children.

-	 */

-	private void updateCheckedState(TreeItem diff) {

-		boolean checked= diff.getChecked();

-		diff.setGrayed(false);

-		TreeItem[] hunks= diff.getItems();

-		for (int i= 0; i < hunks.length; i++)

-			hunks[i].setChecked(checked);

-	}

-	

-	/**

-	 * Updates the gray state of the given items parent.

-	 */

-	private void updateGrayedState(TreeItem hunk) {

-		TreeItem diff= hunk.getParentItem();

-		TreeItem[] hunks= diff.getItems();

-		int checked= 0;

-		for (int i= 0; i < hunks.length; i++)

-			if (hunks[i].getChecked())

-				checked++;

-		diff.setChecked(checked > 0);

-		diff.setGrayed(checked > 0 && checked < hunks.length);

-	}

-	

-	private void addSpacer(Composite parent) {

-		Label label= new Label(parent, SWT.NONE);

-		GridData gd= new GridData(GridData.FILL_HORIZONTAL);

-		gd.widthHint= 20;

-		label.setLayoutData(gd);

-	}

-	

-	private int getStripPrefixSegments() {

-		int stripPrefixSegments= 0;

-		if (fStripPrefixSegments != null) {

-			String s= fStripPrefixSegments.getText();

-			try {

-				stripPrefixSegments= Integer.parseInt(s);

-			} catch(NumberFormatException ex) {

-			}

-		}

-		return stripPrefixSegments;

-	}

-	

-	private int getFuzzFactor() {

-		int fuzzFactor= 0;

-		if (fFuzzField != null) {

-			String s= fFuzzField.getText();

-			try {

-				fuzzFactor= Integer.parseInt(s);

-			} catch(NumberFormatException ex) {

-			}

-		}

-		return fuzzFactor;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/package.html b/bundles/org.eclipse.compare/compare/org/eclipse/compare/package.html
deleted file mode 100644
index fb0ad62..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/package.html
+++ /dev/null
@@ -1,50 +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="Author" content="IBM">

-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">

-   <title>Package-level Javadoc</title>

-</head>

-<body>

-Provides support for performing structural and textual

-compare operations on arbitrary data and displaying the results.

-<h2>

-Package Specification</h2>

-The class <tt>CompareUI</tt> 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>A compare operation must be implemented as a subclass of <tt>CompareEditorInput</tt>.

-A <tt>CompareEditorInput</tt> runs a (potentially lengthy) compare operation

-under progress monitor control, creates a UI for drilling-down into the

-compare results, tracks the dirty state of the result in case of merge,

-and saves any changes that occured during a merge.

-<p>An instance of <tt>CompareConfiguration</tt> configures various UI aspects

-of compare/merge viewers like title labels and images, or whether a side

-of a merge viewer is editable. It is passed to the <tt>CompareEditorInput</tt>

-on creation.

-<p>When implementing a compare operation clients have to provide a tree

-of <tt>IStructureComparator</tt> (see package org.eclipse.compare.structuremergeviewer)

-and <tt>IStreamContentAccessor</tt> that can be passed as the input to

-the differencing engine (org.eclipse.compare.structuremergeviewer.Differencer).

-A <tt>ResourceNode</tt> is a convenience class that implements both interfaces

-for Eclipse workbench resources (org.eclipse.core.resources.IResource).

-It can be used without modification as the input to the differencing engine.

-<p>The <tt>EditionSelectionDialog</tt> is a simple selection dialog where

-one input element can be compared against a list of historic variants (<i>editions</i>)

-of the same input element. The dialog can be used to implement functions

-like <i>"Replace with Version"</i> or

-<br><i>"Replace with Edition"</i> on workbench 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 <i>path</i>. In this

-case the dialog compares only the subsection (as specified by the path)

-with the corresponding subsection in the list of editions. This functionality

-can be used to implement <i>"Replace with Method Edition"</i> for the Java

-language.

-<p>The <tt>EditionSelectionDialog</tt> requires that the editions implement

-the <tt>IStreamContentAccessor</tt> and <tt>IModificationDate</tt> interfaces.

-The <tt>HistoryItem</tt> is a convenience class that implements these interfaces

-for <tt>IFileState</tt> objects.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
deleted file mode 100644
index 4fa96b7..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-import java.util.ArrayList;

-import java.util.Iterator;

-import java.util.List;

-

-/**

- * A custom iterator to iterate over a List of <code>RangeDifferences</code>.

- * It is used internally by the <code>RangeDifferencer</code>.

- */

-/* package */ class DifferencesIterator {

-

-	List fRange;

-	int fIndex;

-	RangeDifference[] fArray;	

-	RangeDifference fDifference;

-	

-	/**

-	 * Creates a differences iterator on an array of <code>RangeDifference</code>s.

-	 */

-	DifferencesIterator(RangeDifference[] differenceRanges) {

-		

-		fArray= differenceRanges;

-		fIndex= 0;

-		fRange= new ArrayList();

-		if (fIndex < fArray.length)

-			fDifference= fArray[fIndex++];

-		else

-			fDifference= null;

-	}

-

-	/**

-	  * Returns the number of RangeDifferences

-	  */

-	int getCount() {

-		return fRange.size();

-	}

-

-	/**

-	 * Appends the edit to its list and moves to the next <code>RangeDifference</code>.

-	 */

-	void next() {

-		fRange.add(fDifference);

-		if (fDifference != null) {

-			if (fIndex < fArray.length)

-				fDifference= fArray[fIndex++];

-			else

-				fDifference= null;

-		}

-	}

-

-	/**

-	 * Difference iterators are used in pairs.

-	 * This method returns the other iterator.

-	 */

-	DifferencesIterator other(DifferencesIterator right, DifferencesIterator left) {

-		if (this == right)

-			return left;

-		return right;

-	}

-

-	/**

-	  * Removes all <code>RangeDifference</code>s

-	  */

-	void removeAll() {

-		fRange.clear();

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java
deleted file mode 100644
index ce01dc1..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-/**

- * For breaking an object to compare into a sequence of comparable entities.

- * <p>

- * It is used by <code>RangeDifferencer</code> to find longest sequences of

- * matching and non-matching ranges.

- * <p>

- * For example, to compare two text documents and find longest common sequences

- * of matching and non-matching lines, the implementation must break the document

- * into lines. <code>getRangeCount</code> would return the number of lines in the 

- * document, and <code>rangesEqual</code> would compare a specified line given 

- * with one in another <code>IRangeComparator</code>.

- * </p>

- * <p>

- * Clients should implement this interface; there is no standard implementation.

- * </p>

- */

-public interface IRangeComparator {

-

-	/**

-	 * Returns the number of comparable entities.

-	 *

-	 * @return the number of comparable entities 

-	 */

-	int getRangeCount();

-

-	/**

-	 * Returns whether the comparable entity given by the first index

-	 * matches an entity specified by the other <code>IRangeComparator</code> and index.

-	 *

-	 * @param thisIndex the index of the comparable entity within this <code>IRangeComparator</code>

-	 * @param other the IRangeComparator to compare this with

-	 * @param otherIndex the index of the comparable entity within the other <code>IRangeComparator</code>

-	 * @return <code>true</code> if the comparable entities are equal

-	 */

-	boolean rangesEqual(int thisIndex, IRangeComparator other, int otherIndex);

-

-	/**

-	 * Returns whether a comparison should be skipped because it would be too costly (or lengthy).

-	 * 

-	 * @param length a number on which to base the decision whether to return

-	 * 	<code>true</code> or <code>false</code>

-	 * @param maxLength another number on which to base the decision whether to return

-	 *	<code>true</code> or <code>false</code>

-	 * @param other the other <code>IRangeComparator</code> to compare with

-	 * @return <code>true</code> to avoid a too lengthy range comparison

-	 */

-	boolean skipRangeComparison(int length, int maxLength, IRangeComparator other);

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java
deleted file mode 100644
index 9374957..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-/* package */ class LinkedRangeDifference extends RangeDifference {

-

-	static final int INSERT= 0;

-	static final int DELETE= 1;

-	static final int CHANGE= 2;

-	static final int ERROR= 3;

-

-	LinkedRangeDifference fNext;

-

-	/**

-	 * Creates a LinkedRangeDifference an initializes it to the error state

-	 */

-	LinkedRangeDifference() {

-		super(ERROR);

-		fNext= null;

-	}

-

-	/**

-	 * Constructs and links a LinkeRangeDifference to another LinkedRangeDifference

-	 */

-	LinkedRangeDifference(LinkedRangeDifference next, int operation) {

-		super(operation);

-		fNext= next;

-	}

-

-	/**

-	 * Follows the next link

-	 */

-	LinkedRangeDifference getNext() {

-		return fNext;

-	}

-

-	boolean isDelete() {

-		return kind() == DELETE;

-	}

-

-	boolean isInsert() {

-		return kind() == INSERT;

-	}

-

-	/**

-	 * Sets the next link of this LinkedRangeDifference

-	 */

-	void setNext(LinkedRangeDifference next) {

-		fNext= next;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java
deleted file mode 100644
index 2c4d62b..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-import org.eclipse.jface.*;

-import org.eclipse.jface.util.Assert;

-

-/**

- * Description of a change between two or three ranges of comparable entities.

- * <p>

- * <code>RangeDifference</code> objects are the elements of a compare result returned from

- * the <code>RangeDifferencer</code> <code>find* </code> methods.

- * Clients use these objects as they are returned from the differencer.

- * This class is not intended to be instantiated or subclassed.

- * <p>

- * Note: A range in the <code>RangeDifference</code> object is given as a start index

- * and length in terms of comparable entities. However, these entity indices and counts

- * are not necessarily character positions. For example, if an entity represents a line

- * in a document, the start index would be a line number and the count would be in lines.

- * </p>

- *

- * @see RangeDifferencer

- */

-public class RangeDifference {

-

-	/** Two-way change constant indicating no change. */

-	public final static int NOCHANGE= 0;

-	/** Two-way change constant indicating two-way change (same as <code>RIGHT</code>) */

-	public final static int CHANGE= 2;

-

-	/** Three-way change constant indicating a change in both right and left. */

-	public final static int CONFLICT= 1;

-	/** Three-way change constant indicating a change in right. */

-	public final static int RIGHT= 2;

-	/** Three-way change constant indicating a change in left. */

-	public final static int LEFT= 3;

-	/**

-	 * Three-way change constant indicating the same change in both right and left,

-	 * that is only the ancestor is different.

-	 */

-	public final static int ANCESTOR= 4;

-	

-	/** Constant indicating an unknown change kind. */

-	public final static int ERROR= 5;

-

-	/** the kind of change: NOCHANGE, CHANGE, LEFT, RIGHT, ANCESTOR, CONFLICT, ERROR */

-	int fKind;

-

-	int fLeftStart;

-	int fLeftLength;

-	int fRightStart;

-	int fRightLength;

-	int lAncestorStart;

-	int lAncestorLength;

-	

-	/**

-	 * Creates a new range difference with the given change kind.

-	 *

-	 * @param changeKind the kind of change

-	 */

-	/* package */ RangeDifference(int changeKind) {

-		fKind= changeKind;

-	}

-

-	/**

-	 * Creates a new <code>RangeDifference</code> with the given change kind

-	 * and left and right ranges.

-	 *

-	 * @param changeKind the kind of change

-	 * @param rightStart start index of entity on right side

-	 * @param rightLength number of entities on right side

-	 * @param leftStart start index of entity on left side

-	 * @param leftLength number of entities on left side

-	 */

-	/* package */ RangeDifference(int kind, int rightStart, int rightLength, int leftStart, int leftLength) {

-		fKind= kind;

-		fRightStart= rightStart;

-		fRightLength= rightLength;

-		fLeftStart= leftStart;

-		fLeftLength= leftLength;

-	}

-

-	/**

-	 * Creates a new <code>RangeDifference</code> with the given change kind

-	 * and left, right, and ancestor ranges.

-	 *

-	 * @param changeKind the kind of change

-	 * @param rightStart start index of entity on right side

-	 * @param rightLength number of entities on right side

-	 * @param leftStart start index of entity on left side

-	 * @param leftLength number of entities on left side

-	 * @param ancestorStart start index of entity on ancestor side

-	 * @param ancestorLength number of entities on ancestor side

-	 */

-	/* package */ RangeDifference(int kind, int rightStart, int rightLength, int leftStart, int leftLength,

-									int ancestorStart, int ancestorLength) {

-		this(kind, rightStart, rightLength, leftStart, leftLength);

-		lAncestorStart= ancestorStart;

-		lAncestorLength= ancestorLength;

-	}

-

-	/**

-	 * Returns the kind of difference.

-	 *

-	 * @return the kind of difference, one of

-	 * <code>NOCHANGE</code>, <code>CHANGE</code>, <code>LEFT</code>, <code>RIGHT</code>,

-	 * <code>ANCESTOR</code>, <code>CONFLICT</code>, <code>ERROR</code>

-	 */

-	public int kind() {

-		return fKind;

-	}

-

-	/**

-	 * Returns the start index of the entity range on the ancestor side.

-	 *

-	 * @return the start index of the entity range on the ancestor side

-	 */

-	public int ancestorStart() {

-		return lAncestorStart;

-	}

-

-	/**

-	 * Returns the number of entities on the ancestor side.

-	 *

-	 * @return the number of entities on the ancestor side

-	 */

-	public int ancestorLength() {

-		return lAncestorLength;

-	}

-

-	/**

-	 * Returns the end index of the entity range on the ancestor side.

-	 *

-	 * @return the end index of the entity range on the ancestor side

-	 */

-	public int ancestorEnd() {

-		return lAncestorStart + lAncestorLength;

-	}

-

-	/**

-	 * Returns the start index of the entity range on the right side.

-	 *

-	 * @return the start index of the entity range on the right side

-	 */

-	public int rightStart() {

-		return fRightStart;

-	}

-

-	/**

-	 * Returns the number of entities on the right side.

-	 *

-	 * @return the number of entities on the right side

-	 */

-	public int rightLength() {

-		return fRightLength;

-	}

-

-	/**

-	 * Returns the end index of the entity range on the right side.

-	 *

-	 * @return the end index of the entity range on the right side

-	 */

-	public int rightEnd() {

-		return fRightStart + fRightLength;

-	}

-

-	/**

-	 * Returns the start index of the entity range on the left side.

-	 *

-	 * @return the start index of the entity range on the left side

-	 */

-	public int leftStart() {

-		return fLeftStart;

-	}

-

-	/**

-	 * Returns the number of entities on the left side.

-	 *

-	 * @return the number of entities on the left side

-	 */

-	public int leftLength() {

-		return fLeftLength;

-	}

-

-	/**

-	 * Returns the end index of the entity range on the left side.

-	 *

-	 * @return the end index of the entity range on the left side

-	 */

-	public int leftEnd() {

-		return fLeftStart + fLeftLength;

-	}

-

-	/**

-	 * Returns the maximum number of entities in the left, right, and ancestor sides of this range.

-	 *

-	 * @return the maximum number of entities in the left, right, and ancestor sides of this range

-	 */

-	public int maxLength() {

-		return Math.max(fRightLength, Math.max(fLeftLength, lAncestorLength));

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
deleted file mode 100644
index 43b8808..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
+++ /dev/null
@@ -1,532 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-import java.util.*;

-

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.IProgressMonitor;

-

-/**

- * A <code>RangeDifferencer</code> finds the differences between two or three <code>IRangeComparator</code>s.

- * <p>

- * To use the differencer, clients provide an <code>IRangeComparator</code>

- * that breaks their input data into a sequence of comparable entities. The differencer

- * returns the differences among these sequences as an array of <code>RangeDifference</code> objects

- * (<code>findDifferences</code> methods).

- * Every <code>RangeDifference</code> represents a single kind of difference

- * and the corresponding ranges of the underlying comparable entities in the

- * left, right, and optionally ancestor sides.

- * <p>

- * Alternatively, the <code>findRanges</code> methods not only return objects for

- * the differing ranges but for non-differing ranges too.

- * <p>

- * The algorithm used is an objectified version of one described in:

- * <it>A File Comparison Program,</it> by Webb Miller and Eugene W. Myers, 

- * Software Practice and Experience, Vol. 15, Nov. 1985.

- *

- * @see IRangeComparator

- * @see RangeDifference

- */

-public final class RangeDifferencer {

-	

-	private static final RangeDifference[] EMPTY_RESULT= new RangeDifference[0];

-	

-	/* (non Javadoc)

-	 * Non instantiatiable!

-	 */

-	private RangeDifferencer() { 

-	}

-	

-	/**

-	 * Finds the differences between two <code>IRangeComparator</code>s.

-	 * The differences are returned as an array of <code>RangeDifference</code>s.

-	 * If no differences are detected an empty array is returned.

-	 * 

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences, or an empty array if no differences were found

-	 */

-	public static RangeDifference[] findDifferences(IRangeComparator left, IRangeComparator right) {

-		return findDifferences((IProgressMonitor)null, left, right);

-	}

-	

-	/**

-	 * Finds the differences between two <code>IRangeComparator</code>s.

-	 * The differences are returned as an array of <code>RangeDifference</code>s.

-	 * If no differences are detected an empty array is returned.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences, or an empty array if no differences were found

-	 */

-	public static RangeDifference[] findDifferences(IProgressMonitor pm, IRangeComparator left, IRangeComparator right) {

-

-		// assert that both IRangeComparators are of the same class

-		Assert.isTrue(right.getClass().equals(left.getClass()));

-

-		int rightSize= right.getRangeCount();

-		int leftSize= left.getRangeCount();

-		//

-		// Differences matrix:

-		// only the last d of each diagonal is stored, i.e., lastDiagonal[k] = row of d    

-		//

-		int diagLen= 2 * Math.max(rightSize, leftSize); // bound on the size of edit script

-		int maxDiagonal= diagLen;

-		int lastDiagonal[]= new int[diagLen + 1]; // the row containing the last d

-		// on diagonal k (lastDiagonal[k] = row)

-		int origin= diagLen / 2; // origin of diagonal 0

-

-		// script corresponding to d[k] 

-		LinkedRangeDifference script[]= new LinkedRangeDifference[diagLen + 1];

-		int row, col;

-

-		// find common prefix

-		for (row= 0; row < rightSize && row < leftSize && rangesEqual(right, row, left, row) == true; ++row)

-			;

-

-		lastDiagonal[origin]= row;

-		script[origin]= null;

-		int lower= (row == rightSize) ? origin + 1 : origin - 1;

-		int upper= (row == leftSize) ? origin - 1 : origin + 1;

-

-		if (lower > upper)

-			return EMPTY_RESULT;

-			

-		//System.out.println("findDifferences: " + maxDiagonal + " " + lower + " " + upper);

-		

-		// for each value of the edit distance

-		for (int d= 1; d <= maxDiagonal; ++d) { // d is the current edit distance

-			

-			if (pm != null)

-				pm.worked(1);

-

-			if (right.skipRangeComparison(d, maxDiagonal, left))

-				return EMPTY_RESULT; // should be something we already found

-

-			// for each relevant diagonal (-d, -d+2 ..., d-2, d)

-			for (int k= lower; k <= upper; k += 2) { // k is the current diagonal

-				LinkedRangeDifference edit;

-

-				if (pm != null && pm.isCanceled())

-					return EMPTY_RESULT;

-

-				if (k == origin - d || k != origin + d && lastDiagonal[k + 1] >= lastDiagonal[k - 1]) {

-					//

-					// move down

-					//

-					row= lastDiagonal[k + 1] + 1;

-					edit= new LinkedRangeDifference(script[k + 1], LinkedRangeDifference.DELETE);

-				} else {

-					//

-					// move right

-					//

-					row= lastDiagonal[k - 1];

-					edit= new LinkedRangeDifference(script[k - 1], LinkedRangeDifference.INSERT);

-				}

-				col= row + k - origin;

-				edit.fRightStart= row;

-				edit.fLeftStart= col;

-				Assert.isTrue(k >= 0 && k <= maxDiagonal);

-				script[k]= edit;

-

-				// slide down the diagonal as far as possible 

-				while (row < rightSize && col < leftSize && rangesEqual(right, row, left, col) == true) {

-					++row;

-					++col;

-				}

-

-				Assert.isTrue(k >= 0 && k <= maxDiagonal); // Unreasonable value for diagonal index

-				lastDiagonal[k]= row;

-

-				if (row == rightSize && col == leftSize) {

-					//showScript(script[k], right, left);

-					return createDifferencesRanges(script[k]);

-				}

-				if (row == rightSize)

-					lower= k + 2;

-				if (col == leftSize)

-					upper= k - 2;

-			}

-			--lower;

-			++upper;

-		}

-		// too many differences

-		Assert.isTrue(false);

-		return null;

-	}

-

-	/**

-	 * Finds the differences among three <code>IRangeComparator</code>s.

-	 * The differences are returned as a list of <code>RangeDifference</code>s.

-	 * If no differences are detected an empty list is returned.

-	 * If the ancestor range comparator is <code>null</code>, a two-way

-	 * comparison is performed.

-	 * 

-	 * @param ancestor the ancestor range comparator or <code>null</code>

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences, or an empty array if no differences were found

-	 */

-	public static RangeDifference[] findDifferences(IRangeComparator ancestor, IRangeComparator left, IRangeComparator right) {

-		return findDifferences(null, ancestor, left, right);

-	}

-	

-	/**

-	 * Finds the differences among three <code>IRangeComparator</code>s.

-	 * The differences are returned as a list of <code>RangeDifference</code>s.

-	 * If no differences are detected an empty list is returned.

-	 * If the ancestor range comparator is <code>null</code>, a two-way

-	 * comparison is performed.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param ancestor the ancestor range comparator or <code>null</code>

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences, or an empty array if no differences were found

-	 */

-	public static RangeDifference[] findDifferences(IProgressMonitor pm, IRangeComparator ancestor, IRangeComparator left, IRangeComparator right) {

-

-		if (ancestor == null)

-			return findDifferences(pm, left, right);

-

-		RangeDifference[] leftAncestorScript= null;

-		RangeDifference[] rightAncestorScript= findDifferences(pm, ancestor, right);

-		if (rightAncestorScript != null)

-			leftAncestorScript= findDifferences(pm, ancestor, left);

-		if (rightAncestorScript == null || leftAncestorScript == null)

-			return null;

-

-		DifferencesIterator myIter= new DifferencesIterator(rightAncestorScript);

-		DifferencesIterator yourIter= new DifferencesIterator(leftAncestorScript);

-

-		List diff3= new ArrayList();

-		diff3.add(new RangeDifference(RangeDifference.ERROR)); // add a sentinel

-

-		int changeRangeStart= 0;

-		int changeRangeEnd= 0;

-		//

-		// Combine the two two-way edit scripts into one

-		//

-		while (myIter.fDifference != null || yourIter.fDifference != null) {

-

-			DifferencesIterator startThread;

-			myIter.removeAll();

-			yourIter.removeAll();

-			//

-			// take the next diff that is closer to the start

-			//

-			if (myIter.fDifference == null)

-				startThread= yourIter;

-			else if (yourIter.fDifference == null)

-				startThread= myIter;

-			else { // not at end of both scripts take the lowest range

-				if (myIter.fDifference.fLeftStart <= yourIter.fDifference.fLeftStart) // 2 -> common (Ancestor) change range

-					startThread= myIter;

-				else

-					startThread= yourIter;

-			}

-			changeRangeStart= startThread.fDifference.fLeftStart;

-			changeRangeEnd= startThread.fDifference.leftEnd();

-

-			startThread.next();

-			//

-			// check for overlapping changes with other thread

-			// merge overlapping changes with this range

-			//

-			DifferencesIterator other= startThread.other(myIter, yourIter);

-			while (other.fDifference != null && other.fDifference.fLeftStart <= changeRangeEnd) {

-				int newMax= other.fDifference.leftEnd();

-				other.next();

-				if (newMax >= changeRangeEnd) {

-					changeRangeEnd= newMax;

-					other= other.other(myIter, yourIter);

-				}

-			}

-			diff3.add(createRangeDifference3(myIter, yourIter, diff3, right, left, changeRangeStart, changeRangeEnd));

-		}

-

-		// remove sentinel

-		diff3.remove(0);

-		return (RangeDifference[]) diff3.toArray(EMPTY_RESULT);

-	}

-

-	/**

-	 * Finds the differences among two <code>IRangeComparator</code>s.

-	 * In contrast to <code>findDifferences</code>, the result

-	 * contains <code>RangeDifference</code> elements for non-differing ranges too.

-	 * 

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences

-	 */

-	public static RangeDifference[] findRanges(IRangeComparator left, IRangeComparator right) {

-		return findRanges((IProgressMonitor)null, left, right);

-	}

-	

-	/**

-	 * Finds the differences among two <code>IRangeComparator</code>s.

-	 * In contrast to <code>findDifferences</code>, the result

-	 * contains <code>RangeDifference</code> elements for non-differing ranges too.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences

-	 */

-	public static RangeDifference[] findRanges(IProgressMonitor pm, IRangeComparator left, IRangeComparator right) {

-		RangeDifference[] in= findDifferences(pm, left, right);

-		List out= new ArrayList();

-

-		RangeDifference rd;

-

-		int mstart= 0;

-		int ystart= 0;

-

-		for (int i= 0; i < in.length; i++) {

-			RangeDifference es= in[i];

-

-			rd= new RangeDifference(RangeDifference.NOCHANGE, mstart, es.rightStart() - mstart, ystart, es.leftStart() - ystart);

-			if (rd.maxLength() != 0)

-				out.add(rd);

-

-			out.add(es);

-

-			mstart= es.rightEnd();

-			ystart= es.leftEnd();

-		}

-		rd= new RangeDifference(RangeDifference.NOCHANGE, mstart, right.getRangeCount() - mstart, ystart, left.getRangeCount() - ystart);

-		if (rd.maxLength() > 0)

-			out.add(rd);

-

-		return (RangeDifference[]) out.toArray(EMPTY_RESULT);

-	}

-

-	/**

-	 * Finds the differences among three <code>IRangeComparator</code>s.

-	 * In contrast to <code>findDifferences</code>, the result

-	 * contains <code>RangeDifference</code> elements for non-differing ranges too.

-	 * If the ancestor range comparator is <code>null</code>, a two-way

-	 * comparison is performed.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param ancestor the ancestor range comparator or <code>null</code>

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences

-	 */

-	public static RangeDifference[] findRanges(IRangeComparator ancestor, IRangeComparator left, IRangeComparator right) {

-		return findRanges(null, ancestor, left, right);

-	}

-	

-	/**

-	 * Finds the differences among three <code>IRangeComparator</code>s.

-	 * In contrast to <code>findDifferences</code>, the result

-	 * contains <code>RangeDifference</code> elements for non-differing ranges too.

-	 * If the ancestor range comparator is <code>null</code>, a two-way

-	 * comparison is performed.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param ancestor the ancestor range comparator or <code>null</code>

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences

-	 */

-	public static RangeDifference[] findRanges(IProgressMonitor pm, IRangeComparator ancestor, IRangeComparator left, IRangeComparator right) {

-

-		if (ancestor == null)

-			return findRanges(pm, left, right);

-

-		RangeDifference[] in= findDifferences(pm, ancestor, left, right);

-		List out= new ArrayList();

-

-		RangeDifference rd;

-

-		int mstart= 0;

-		int ystart= 0;

-		int astart= 0;

-

-		for (int i= 0; i < in.length; i++) {

-			RangeDifference es= (RangeDifference) in[i];

-

-			rd= new RangeDifference(RangeDifference.NOCHANGE, mstart, es.rightStart() - mstart, ystart, es.leftStart() - ystart, astart, es.ancestorStart() - astart);

-			if (rd.maxLength() > 0)

-				out.add(rd);

-

-			out.add(es);

-

-			mstart= es.rightEnd();

-			ystart= es.leftEnd();

-			astart= es.ancestorEnd();

-		}

-		rd= new RangeDifference(RangeDifference.NOCHANGE, mstart, right.getRangeCount() - mstart, ystart, left.getRangeCount() - ystart, astart, ancestor.getRangeCount() - astart);

-		if (rd.maxLength() > 0)

-			out.add(rd);

-

-		return (RangeDifference[]) out.toArray(EMPTY_RESULT);

-	}

-

-	//---- private methods

-

-	/**

-	 * Creates a Vector of DifferencesRanges out of the LinkedRangeDifference.

-	 * It coalesces adjacent changes.

-	 * In addition, indices are changed such that the ranges are 1) open, i.e,

-	 * the end of the range is not included, and 2) are zero based.

-	 */

-	private static RangeDifference[] createDifferencesRanges(LinkedRangeDifference start) {

-

-		LinkedRangeDifference ep= reverseDifferences(start);

-		ArrayList result= new ArrayList();

-		RangeDifference es= null;

-

-		while (ep != null) {

-			es= new RangeDifference(RangeDifference.CHANGE);

-

-			if (ep.isInsert()) {

-				es.fRightStart= ep.fRightStart + 1;

-				es.fLeftStart= ep.fLeftStart;

-				RangeDifference b= ep;

-				do {

-					ep= ep.getNext();

-					es.fLeftLength++;

-				} while (ep != null && ep.isInsert() && ep.fRightStart == b.fRightStart);

-			} else {

-				es.fRightStart= ep.fRightStart;

-				es.fLeftStart= ep.fLeftStart;

-

-				RangeDifference a= ep;

-				//

-				// deleted lines

-				//

-				do {

-					a= ep;

-					ep= ep.getNext();

-					es.fRightLength++;

-				} while (ep != null && ep.isDelete() && ep.fRightStart == a.fRightStart + 1);

-

-				boolean change= (ep != null && ep.isInsert() && ep.fRightStart == a.fRightStart);

-

-				if (change) {

-					RangeDifference b= ep;

-					//

-					// replacement lines

-					//

-					do {

-						ep= ep.getNext();

-						es.fLeftLength++;

-					} while (ep != null && ep.isInsert() && ep.fRightStart == b.fRightStart);

-				} else {

-					es.fLeftLength= 0;

-				}

-				es.fLeftStart++; // meaning of range changes from "insert after", to "replace with"

-

-			}

-			//

-			// the script commands are 1 based, subtract one to make them zero based

-			//

-			es.fRightStart--;

-			es.fLeftStart--;

-			result.add(es);

-		}

-		return (RangeDifference[]) result.toArray(EMPTY_RESULT);

-	}

-

-	/**

-	 * Creates a <code>RangeDifference3</code> given the

-	 * state of two DifferenceIterators.

-	 */

-	private static RangeDifference createRangeDifference3(

-		DifferencesIterator myIter, 

-		DifferencesIterator yourIter, 

-		List diff3, 

-		IRangeComparator right, 

-		IRangeComparator left, 

-		int changeRangeStart, 

-		int changeRangeEnd) {

-

-		int rightStart, rightEnd;

-		int leftStart, leftEnd;

-		int kind= RangeDifference.ERROR;

-		RangeDifference last= (RangeDifference) diff3.get(diff3.size() - 1);

-

-		Assert.isTrue((myIter.getCount() != 0 || yourIter.getCount() != 0));	// At least one range array must be non-empty

-		//

-		// find corresponding lines to fChangeRangeStart/End in right and left

-		//

-		if (myIter.getCount() == 0) { // only left changed

-			rightStart= changeRangeStart - last.ancestorEnd() + last.rightEnd();

-			rightEnd= changeRangeEnd - last.ancestorEnd() + last.rightEnd();

-			kind= RangeDifference.LEFT;

-		} else {

-			RangeDifference f= (RangeDifference) myIter.fRange.get(0);

-			RangeDifference l= (RangeDifference) myIter.fRange.get(myIter.fRange.size() - 1);

-			rightStart= changeRangeStart - f.fLeftStart + f.fRightStart;

-			rightEnd= changeRangeEnd - l.leftEnd() + l.rightEnd();

-		}

-

-		if (yourIter.getCount() == 0) { // only right changed

-			leftStart= changeRangeStart - last.ancestorEnd() + last.leftEnd();

-			leftEnd= changeRangeEnd - last.ancestorEnd() + last.leftEnd();

-			kind= RangeDifference.RIGHT;

-		} else {

-			RangeDifference f= (RangeDifference) yourIter.fRange.get(0);

-			RangeDifference l= (RangeDifference) yourIter.fRange.get(yourIter.fRange.size() - 1);

-			leftStart= changeRangeStart - f.fLeftStart + f.fRightStart;

-			leftEnd= changeRangeEnd - l.leftEnd() + l.rightEnd();

-		}

-

-		if (kind == RangeDifference.ERROR) { // overlapping change (conflict) -> compare the changed ranges

-			if (rangeSpansEqual(right, rightStart, rightEnd - rightStart, left, leftStart, leftEnd - leftStart))

-				kind= RangeDifference.ANCESTOR;

-			else

-				kind= RangeDifference.CONFLICT;

-		}

-		return new RangeDifference(kind, rightStart, rightEnd - rightStart, leftStart, leftEnd - leftStart, changeRangeStart, changeRangeEnd - changeRangeStart);

-	}

-

-	/**

-	 * Tests if two ranges are equal

-	 */

-	private static boolean rangesEqual(IRangeComparator a, int ai, IRangeComparator b, int bi) {

-		return a.rangesEqual(ai, b, bi);

-	}

-

-	/**

-	 * Tests whether <code>right</code> and <code>left</left> changed in the same way

-	 */

-	private static boolean rangeSpansEqual(IRangeComparator right, int rightStart, int rightLen, IRangeComparator left, int leftStart, int leftLen) {

-		if (rightLen == leftLen) {

-			int i= 0;

-			for (i= 0; i < rightLen; i++) {

-				if (!rangesEqual(right, rightStart + i, left, leftStart + i))

-					break;

-			}

-			if (i == rightLen)

-				return true;

-		}

-		return false;

-	}

-

-	/**

-	 * Reverses the range differences

-	 */

-	private static LinkedRangeDifference reverseDifferences(LinkedRangeDifference start) {

-		LinkedRangeDifference ep, behind, ahead;

-

-		ahead= start;

-		ep= null;

-		while (ahead != null) {

-			behind= ep;

-			ep= ahead;

-			ahead= ahead.getNext();

-			ep.setNext(behind);

-		}

-		return ep;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html b/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html
deleted file mode 100644
index 2e4ffaf..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html
+++ /dev/null
@@ -1,37 +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="Author" content="IBM">

-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">

-   <title>Package-level Javadoc</title>

-</head>

-<body>

-Provides support for finding the differences between

-two or three sequences of comparable entities.

-<h2>

-Package Specification</h2>

-The class <tt>Differencer</tt> finds longest sequences of matching and

-non-matching comparable entities.

-<p>Clients must supply the input to the differencer as an implementation

-of the <tt>IRangeComparator</tt> interface.

-<br>An <tt>IRangeComparator</tt> breaks the input data into a sequence

-of entities and provides a method for comparing

-<br>one entity with the entity in another <tt>IRangeComparator</tt>.

-<br>For example, to compare two text documents and find longest common

-sequences

-<br>of matching and non-matching lines, the implementation of <tt>IRangeComparator

-</tt>must break the document

-<br>into lines and provide a method for testing whether two lines are considered

-equal.

-<p>The differencer returns the differences among these sequences as an

-array of <tt>RangeDifference</tt> objects.

-<br>Every single <tt>RangeDifference</tt> describes kind of difference

-(no change, change, addition, deletion)

-<br>and the corresponding ranges of the underlying comparable entities

-in the two or three inputs.

-<p>The algorithm used is an objectified version of one described in:

-<br><i>A File Comparison Program,</i> by Webb Miller and Eugene W. Myers,

-<br>Software Practice and Experience, Vol. 15, Nov. 1985.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java
deleted file mode 100644
index f101c35..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.util.Iterator;

-import java.util.ArrayList;

-import org.eclipse.swt.graphics.Image;

-

-

-/**

- * The standard implementation of a diff container element.

- * <p>

- * This class may be instantiated, or further subclassed.

- * </p>

- */

-public abstract class DiffContainer extends DiffElement implements IDiffContainer {

-

-	private static IDiffElement[] fgEmptyArray= new IDiffElement[0];

-	private ArrayList fChildren;

-	

-	/**

-	 * Creates a new container with the specified kind under the given parent. 

-	 *

-	 * @param parent under which the new container is added as a child or <code>null</code>.

-	 * @param name of the container

-	 * @param kind of difference (defined in <code>Differencer</code>).

-	 */

-	public DiffContainer(IDiffContainer parent, int kind) {

-		super(parent, kind);

-	}

-	

-	/**

-	 * Tries to find the child with the given name.

-	 * Returns <code>null</code> if no such child exists.

-	 * 

-	 * @param name of the child to find

-	 * @return the first element with a matching name

-	 */

-	public IDiffElement findChild(String name) {

-		Object[] children= getChildren();

-		for (int i= 0; i < children.length; i++) {

-			IDiffElement child= (IDiffElement) children[i];

-			if (name.equals(child.getName()))

-				return child;

-		}

-		return null;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffContainer.add

-	 */

-	public void add(IDiffElement diff) {

-		if (fChildren == null)

-			fChildren= new ArrayList();

-		fChildren.add(diff);

-		diff.setParent(this);

-	}

-

-	/**

-	 * Removes the given child from this container.

-	 * If the container becomes empty it is removed from its container.

-	 */

-	/* (non Javadoc)

-	 * see IDiffContainer.removeToRoot

-	 */

-	public void removeToRoot(IDiffElement child) {

-		if (fChildren != null) {

-			fChildren.remove(child);

-			child.setParent(null);

-			if (fChildren.size() == 0) {

-				IDiffContainer p= getParent();

-				if (p != null)

-					p.removeToRoot(this);

-			}

-		}

-	}

-

-	/**

-	 * Removes the given child (non-recursively) from this container.

-	 *

-	 * @param child to remove

-	 */

-	public void remove(IDiffElement child) {

-		if (fChildren != null) {

-			fChildren.remove(child);

-			child.setParent(null);

-		}

-	}

-	

-	/* (non Javadoc)

-	 * see IDiffContainer.hasChildren

-	 */

-	public boolean hasChildren() {

-		return fChildren != null && fChildren.size() > 0;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffContainer.getChildren

-	 */

-	public IDiffElement[] getChildren() {

-		if (fChildren != null)

-			return (IDiffElement[]) fChildren.toArray(fgEmptyArray);

-		return fgEmptyArray;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java
deleted file mode 100644
index 7174a95..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.jface.util.Assert;

-

-/**

- * An abstract base implementation of the <code>IDiffElement</code> interface.

- * <p>

- * Subclasses may add behavior and state, and may override <code>getImage</code>

- * and <code>getType</code> to suit.

- * </p>

- */

-public abstract class DiffElement implements IDiffElement {

-

-	private int fKind;

-	private IDiffContainer fParent;

-

-	/**

-	 * Creates a new <code>DiffElement</code> as a child of the given parent.

-	 * If parent is not <code>null</code> the new element is added to the parent.

-	 *

-	 * @param parent the parent of this child; if not <code>null</code> this element is automatically added as a child

-	 * @param kind the kind of change

-	 */

-	public DiffElement(IDiffContainer parent, int kind) {

-		fParent= parent;

-		fKind= kind;

-		if (parent != null)

-			parent.add(this);

-	}

-

-	/**

-	 * The <code>DiffElement</code> implementation of this <code>ITypedInput</code>

-	 * method returns <code>null</code>. Subclasses may re-implement to provide

-	 * an image for this element.

-	 */

-	public Image getImage() {

-		return null;

-	}

-

-	/**

-	 * The <code>DiffElement</code> implementation of this <code>ITypedElement</code>

-	 * method returns <code>ITypedElement.UNKNOWN_TYPE</code>. Subclasses may

-	 * re-implement to provide a type for this element.

-	 */

-	public String getType() {

-		return ITypedElement.UNKNOWN_TYPE;

-	}

-

-	/**

-	 * Sets the kind of difference for this element.

-	 *

-	 * @param kind set the kind of difference this element represents

-	 * @see Differencer

-	 */

-	public void setKind(int kind) {

-		fKind= kind;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffElement.getKind

-	 */

-	public int getKind() {

-		return fKind;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffElement.getParent

-	 */

-	public IDiffContainer getParent() {

-		return fParent;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffElement.setParent

-	 */

-	public void setParent(IDiffContainer parent) {

-		fParent= parent;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java
deleted file mode 100644
index 75c91bb..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.text.MessageFormat;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.util.ListenerList;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.Utilities;

-

-/**

- * Diff node are used as the compare result of the differencing engine.

- * Since it implements the <code>ITypedElement</code> and <code>ICompareInput</code>

- * interfaces it can be used directly to display the

- * compare result in a <code>DiffTreeViewer</code> and as the input to any other

- * compare/merge viewer.

- * <p>

- * <code>DiffNode</code>s are typically created as the result of performing

- * a compare with the <code>Differencer</code>.

- * <p>

- * Clients typically use this class as is, but may subclass if required.

- * 

- * @see DiffTreeViewer

- * @see Differencer

- */

-public class DiffNode extends DiffContainer implements ITypedElement, ICompareInput {

-

-	private ITypedElement fAncestor;

-	private ITypedElement fLeft;

-	private ITypedElement fRight;

-	private boolean fDontExpand;

-	private ListenerList fListener;

-	private boolean fSwapSides;

-

-	

-	/**

-	 * Creates a new <code>DiffNode</code> and initializes with the given values.

-	 *

-	 * @param parent under which the new container is added as a child or <code>null</code>

-	 * @param kind of difference (defined in <code>Differencer</code>)

-	 * @param ancestor the common ancestor input to a compare

-	 * @param left the left input to a compare

-	 * @param right the right input to a compare

-	 */

-	public DiffNode(IDiffContainer parent, int kind, ITypedElement ancestor, ITypedElement left, ITypedElement right) {

-		this(parent, kind);

-		fAncestor= ancestor;

-		fLeft= left;

-		fRight= right;

-	}

-

-	/**

-	 * Creates a new <code>DiffNode</code> with diff kind <code>Differencer.CHANGE</code>

-	 * and initializes with the given values.

-	 *

-	 * @param left the left input to a compare

-	 * @param right the right input to a compare

-	 */

-	public DiffNode(ITypedElement left, ITypedElement right) {

-		this(null, Differencer.CHANGE, null, left, right);

-	}

-

-	/**

-	 * Creates a new <code>DiffNode</code> and initializes with the given values.

-	 *

-	 * @param kind of difference (defined in <code>Differencer</code>)

-	 * @param ancestor the common ancestor input to a compare

-	 * @param left the left input to a compare

-	 * @param right the right input to a compare

-	 */

-	public DiffNode(int kind, ITypedElement ancestor, ITypedElement left, ITypedElement right) {

-		this(null, kind, ancestor, left, right);

-	}

-

-	/**

-	 * Creates a new <code>DiffNode</code> with the given diff kind.

-	 *

-	 * @param kind of difference (defined in <code>Differencer</code>)

-	 */

-	public DiffNode(int kind) {

-		super(null, kind);

-	}

-

-	/**

-	 * Creates a new <code>DiffNode</code> and initializes with the given values.

-	 *

-	 * @param parent under which the new container is added as a child or <code>null</code>

-	 * @param kind of difference (defined in <code>Differencer</code>)

-	 */

-	public DiffNode(IDiffContainer parent, int kind) {

-		super(parent, kind);

-	}

-

-	/**

-	 * Registers a listener for changes of this <code>ICompareInput</code>.

-	 * Has no effect if an identical listener is already registered.

-	 *

-	 * @param listener the listener to add

-	 */

-	public void addCompareInputChangeListener(ICompareInputChangeListener listener) {

-		if (fListener == null)

-			fListener= new ListenerList();

-		fListener.add(listener);

-	}

-	

-	/**

-	 * Unregisters a <code>ICompareInput</code> listener.

-	 * Has no effect if listener is not registered.

-	 *

-	 * @param listener the listener to remove

-	 */

-	public void removeCompareInputChangeListener(ICompareInputChangeListener listener) {

-		if (fListener != null) {

-			fListener.remove(listener);

-			if (fListener.isEmpty())

-				fListener= null;

-		}

-	}

-	

-	/**

-	 * Sends out notification that a change has occured on the <code>ICompareInput</code>.

-	 */

-	protected void fireChange() {

-		if (fListener != null) {

-			Object[] listeners= fListener.getListeners();

-			for (int i= 0; i < listeners.length; i++)

-				((ICompareInputChangeListener) listeners[i]).compareInputChanged(this);

-		}

-	}

-

-	//---- getters & setters

-

-	/**

-	 * Returns <code>true</code> if this node shouldn't automatically be expanded in

-	 * a </code>DiffTreeViewer</code>.

-	 *

-	 * @return <code>true</code> if node shouldn't automatically be expanded

-	 */

-	public boolean dontExpand() {

-		return fDontExpand;

-	}

-

-	/**

-	 * Controls whether this node is not automatically expanded when displayed in

-	 * a </code>DiffTreeViewer</code>.

-	 *

-	 * @param dontExpand if <code>true</code> this node is not automatically expanded in </code>DiffTreeViewer</code>

-	 */

-	public void setDontExpand(boolean dontExpand) {

-		fDontExpand= dontExpand;

-	}

-

-	/**

-	 * Returns the first not-<code>null</code> input of this node.

-	 * Method checks the three inputs in the order: ancestor, right, left.

-	 *

-	 * @return the first not-<code>null</code> input of this node

-	 */

-	public ITypedElement getId() {

-		if (fAncestor != null)

-			return fAncestor;

-		if (fRight != null)

-			return fRight;

-		return fLeft;

-	}

-

-	/**

-	 * Returns the (non-<code>null</code>) name of the left or right side if they are identical.

-	 * Otherwise both names are concatenated (separated with a slash ('/')).

-	 * <p>

-	 * Subclasses may re-implement to provide a different name for this node.

-	 */

-	/* (non Javadoc)

-	 * see ITypedElement.getName

-	 */

-	public String getName() {

-		String right= null;

-		if (fRight != null)

-			right= fRight.getName();

-

-		String left= null;

-		if (fLeft != null)

-			left= fLeft.getName();

-

-		if (right == null && left == null) {

-			if (fAncestor != null)

-				return fAncestor.getName();

-			return Utilities.getString("DiffNode.noName"); //$NON-NLS-1$

-		}

-

-		if (right == null)

-			return left;

-		if (left == null)

-			return right;

-

-		if (right.equals(left))

-			return right;

-			

-		String s1;

-		String s2;

-		

-		if (fSwapSides) {

-			s1= left;

-			s2= right;

-		} else {

-			s1= right;

-			s2= left;

-		}

-		

-		String fmt= Utilities.getString("DiffNode.nameFormat"); //$NON-NLS-1$

-		return MessageFormat.format(fmt, new String[] { s1, s2 });

-	}

-	

-	void swapSides(boolean swap) {

-		fSwapSides= swap;

-	}

-		

-	/* (non Javadoc)

-	 * see ITypedElement.getImage

-	 */

-	public Image getImage() {

-		ITypedElement id= getId();

-		if (id != null)

-			return id.getImage();

-		return null;

-	}

-

-	/* (non Javadoc)

-	 * see ITypedElement.getType

-	 */

-	public String getType() {

-		ITypedElement id= getId();

-		if (id != null)

-			return id.getType();

-		return ITypedElement.UNKNOWN_TYPE;

-	}

-

-	/* (non Javadoc)

-	 * see ICompareInput.getAncestor

-	 */

-	public ITypedElement getAncestor() {

-		return fAncestor;

-	}

-	

-	/**

-	 * Sets the left input to the given value.

-	 *

-	 * @param left the new value for the left input

-	 */

-	public void setLeft(ITypedElement left) {

-		fLeft= left;

-	}

-	

-	/* (non Javadoc)

-	 * see ICompareInput.getLeft

-	 */

-	public ITypedElement getLeft() {

-		return fLeft;

-	}

-

-	/**

-	 * Sets the right input to the given value.

-	 *

-	 * @param right the new value for the right input

-	 */

-	public void setRight(ITypedElement right) {

-		fRight= right;

-	}

-	

-	/* (non Javadoc)

-	 * see ICompareInput.getRight

-	 */

-	public ITypedElement getRight() {

-		return fRight;

-	}

-

-	/* (non Javadoc)

-	 * see ICompareInput.copy

-	 */

-	public void copy(boolean leftToRight) {

-		//System.out.println("DiffNode.copy: " + leftToRight);

-		

-		IDiffContainer pa= getParent();

-		if (pa instanceof ICompareInput) {

-			ICompareInput parent= (ICompareInput) pa;

-			Object dstParent= leftToRight ? parent.getRight() : parent.getLeft();

-			

-			if (dstParent instanceof IEditableContent) {

-				ITypedElement dst= leftToRight ? getRight() : getLeft();

-				ITypedElement src= leftToRight ? getLeft() : getRight();

-				dst= ((IEditableContent)dstParent).replace(dst, src);

-				if (leftToRight)

-					setRight(dst);

-				else

-					setLeft(dst);

-				setKind(Differencer.NO_CHANGE);

-				

-				fireChange();

-			}

-		}

-	}

-	

-	/* (non Javadoc)

-	 * see Object.hashCode

-	 */

-	public int hashCode() {

-		String[] path= getPath(this, 0);

-		int hashCode= 1;

-		for (int i= 0; i < path.length; i++) {

-	    	String s= path[i];

-	   	 	hashCode= (31*hashCode) + (s != null ? s.hashCode() : 0);

-		}

-		return hashCode;

-	}

-	

-	/* (non Javadoc)

-	 * see Object.equals

-	 */

-	public boolean equals(Object other) {

-		if (other != null && getClass() == other.getClass()) {

-			String[] path1= getPath(this, 0);

-			String[] path2= getPath((DiffNode) other, 0);

-			if (path1.length != path2.length)

-				return false;

-			for (int i= 0; i < path1.length; i++)

-				if (! path1[i].equals(path2[i]))

-					return false;

-			return true;

-		}

-		return super.equals(other);

-	}

-	

-	private static String[] getPath(ITypedElement el, int level) {

-		String[] path= null;

-		if (el instanceof IDiffContainer) {

-			IDiffContainer parent= ((IDiffContainer)el).getParent();

-			if (parent instanceof ITypedElement)

-				path= getPath((ITypedElement)parent, level+1);

-		}

-		if (path == null)

-			path= new String[level+1];

-		path[(path.length-1)-level]= el.getName();

-		return path;

-	}

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java
deleted file mode 100644
index d5930d8..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java
+++ /dev/null
@@ -1,675 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.util.Iterator;

-import java.util.ResourceBundle;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.DisposeEvent;

-import org.eclipse.swt.events.FocusListener;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.util.*;

-import org.eclipse.jface.action.*;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.preference.IPreferenceStore;

-

-import org.eclipse.compare.internal.*;

-import org.eclipse.compare.*;

-

-/**

- * A tree viewer that works on objects implementing

- * the <code>IDiffContainer</code> and <code>IDiffElement</code> interfaces.

- * <p>

- * This class may be instantiated; it is not intended to be subclassed outside

- * this package.

- * </p>

- *

- * @see IDiffContainer

- * @see IDiffElement

- */

-public class DiffTreeViewer extends TreeViewer {

-	

-	static class DiffViewerSorter extends ViewerSorter {

-	

-		public boolean isSorterProperty(Object element, Object property) {

-			return false;

-		}

-	

-		public int category(Object node) {

-			if (node instanceof DiffNode) {

-				Object o= ((DiffNode) node).getId();

-				if (o instanceof DocumentRangeNode)

-					return ((DocumentRangeNode) o).getTypeCode();

-			}

-			return 0;

-		}

-	}	

-

-	class DiffViewerContentProvider implements ITreeContentProvider {

-			

-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

-		}

-	

-		public boolean isDeleted(Object element) {

-			return false;

-		}

-			

-		public void dispose() {

-			inputChanged(DiffTreeViewer.this, getInput(), null);

-		}

-			

-		public Object getParent(Object element) {

-			if (element instanceof IDiffElement) 

-				return ((IDiffElement)element).getParent();

-			return null;

-		}

-		

-		public final boolean hasChildren(Object element) {

-			if (element instanceof IDiffContainer) 

-				return ((IDiffContainer)element).hasChildren();

-			return false;

-		}

-		

-		public final Object[] getChildren(Object element) {

-			if (element instanceof IDiffContainer)

-				return ((IDiffContainer)element).getChildren();

-			return new Object[0];

-		}

-		

-		public Object[] getElements(Object element) {

-			return getChildren(element);

-		}				

-	}

-	

-	/*

-	 * Takes care of swapping left and right if fLeftIsLocal

-	 * is true.

-	 */

-	class DiffViewerLabelProvider extends LabelProvider {

-		

-		public String getText(Object element) {

-			

-			if (element instanceof IDiffElement)

-				return ((IDiffElement)element).getName();

-						

-			return Utilities.getString(fBundle, "defaultLabel"); //$NON-NLS-1$

-		}

-	

-		public Image getImage(Object element) {

-			if (element instanceof IDiffElement) {

-				IDiffElement input= (IDiffElement) element;

-				

-				int kind= input.getKind();

-				if (fLeftIsLocal) {

-					switch (kind & Differencer.DIRECTION_MASK) {

-					case Differencer.LEFT:

-						kind= (kind &~ Differencer.LEFT) | Differencer.RIGHT;

-						break;

-					case Differencer.RIGHT:

-						kind= (kind &~ Differencer.RIGHT) | Differencer.LEFT;

-						break;

-					}

-				}

-				

-				return fCompareConfiguration.getImage(input.getImage(), kind);

-			}

-			return null;

-		}

-	}

-

-	static class FilterSame extends ViewerFilter {

-		public boolean select(Viewer viewer, Object parentElement, Object element) {

-			if (element instanceof IDiffElement)

-				return (((IDiffElement)element).getKind() & Differencer.PSEUDO_CONFLICT) == 0;

-			return true;

-		}

-		public boolean isFilterProperty(Object element, Object property) {

-			return false;

-		}

-	}

-	

-	private ResourceBundle fBundle;

-	private CompareConfiguration fCompareConfiguration;

-	/* package */ boolean fLeftIsLocal;

-	private ViewerFilter fViewerFilter;

-	private IPropertyChangeListener fPropertyChangeListener;

-	private IPropertyChangeListener fPreferenceChangeListener;

-

-	private Action fCopyLeftToRightAction;

-	private Action fCopyRightToLeftAction;

-	private Action fNextAction;

-	private Action fPreviousAction;

-	private Action fEmptyMenuAction;

-		

-	/**

-	 * Creates a new viewer for the given SWT tree control with the specified configuration.

-	 *

-	 * @param tree the tree control

-	 * @param configuration the configuration for this viewer

-	 */

-	public DiffTreeViewer(Tree tree, CompareConfiguration configuration) {

-		super(tree);

-		initialize(configuration);

-	}

-	

-	/**

-	 * Creates a new viewer under the given SWT parent and with the specified configuration.

-	 *

-	 * @param parent the SWT control under which to create the viewer

-	 * @param configuration the configuration for this viewer

-	 */

-	public DiffTreeViewer(Composite parent, CompareConfiguration configuration) {

-		super(new Tree(parent, SWT.MULTI));

-		initialize(configuration);

-	}

-	

-	private void initialize(CompareConfiguration configuration) {

-		

-		Control tree= getControl();

-		

-		CompareNavigator.hookNavigation(tree);

-

-		INavigatable nav= new INavigatable() {

-			public boolean gotoDifference(boolean next) {

-				return internalNavigate(next);

-			}

-		};

-		tree.setData(INavigatable.NAVIGATOR_PROPERTY, nav);

-		

-		fLeftIsLocal= Utilities.getBoolean(configuration, "LEFT_IS_LOCAL", false); //$NON-NLS-1$

-

-		tree.setData(CompareUI.COMPARE_VIEWER_TITLE, getTitle());

-

-		Composite parent= tree.getParent();

-		

-		fBundle= ResourceBundle.getBundle("org.eclipse.compare.structuremergeviewer.DiffTreeViewerResources"); //$NON-NLS-1$

-		

-		// register for notification with the CompareConfiguration 

-		fCompareConfiguration= configuration;

-		if (fCompareConfiguration != null) {

-			fPropertyChangeListener= new IPropertyChangeListener() {

-				public void propertyChange(PropertyChangeEvent event) {

-					DiffTreeViewer.this.propertyChange(event);

-				}

-			};

-			fCompareConfiguration.addPropertyChangeListener(fPropertyChangeListener);

-		}	

-		

-		// register for notification with the Compare plugin's PreferenceStore 

-		fPreferenceChangeListener= new IPropertyChangeListener() {

-			public void propertyChange(PropertyChangeEvent event) {

-				if (event.getProperty().equals(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS))

-					syncShowPseudoConflictFilter();			

-			}

-		};

-		IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-		if (ps != null)

-			ps.addPropertyChangeListener(fPreferenceChangeListener);

-			

-	

-		setContentProvider(new DiffViewerContentProvider());

-		setLabelProvider(new DiffViewerLabelProvider());

-		

-		addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent se) {

-					updateActions();

-				}

-			}

-		);

-						

-		syncShowPseudoConflictFilter();			

-				

-		setSorter(new DiffViewerSorter());

-		

-		ToolBarManager tbm= CompareViewerSwitchingPane.getToolBarManager(parent);

-		if (tbm != null) {

-			tbm.removeAll();

-			

-			tbm.add(new Separator("merge")); //$NON-NLS-1$

-			tbm.add(new Separator("modes")); //$NON-NLS-1$

-			tbm.add(new Separator("navigation")); //$NON-NLS-1$

-			

-			createToolItems(tbm);

-			updateActions();

-			

-			tbm.update(true);

-		}

-		

-		MenuManager mm= new MenuManager();

-		mm.setRemoveAllWhenShown(true);

-		mm.addMenuListener(

-			new IMenuListener() {

-				public void menuAboutToShow(IMenuManager mm) {

-					fillContextMenu(mm);

-					if (mm.isEmpty()) {

-						if (fEmptyMenuAction == null) {

-							fEmptyMenuAction=

-								new Action(Utilities.getString(fBundle, "emptyMenuItem")) {};	//$NON-NLS-1$

-							fEmptyMenuAction.setEnabled(false);

-						}

-						mm.add(fEmptyMenuAction);

-					}

-				}

-			}

-		);

-		tree.setMenu(mm.createContextMenu(tree));

-	}

-			

-	/**

-	 * Returns the viewer's name.

-	 *

-	 * @return the viewer's name

-	 */

-	public String getTitle() {

-		String title= Utilities.getString(fBundle, "title", null); //$NON-NLS-1$

-		if (title == null)

-			title= Utilities.getString("DiffTreeViewer.title"); //$NON-NLS-1$

-		return title;

-	}

-	

-	/**

-	 * Returns the resource bundle.

-	 *

-	 * @return the viewer's resource bundle

-	 */

-	protected ResourceBundle getBundle() {

-		return fBundle;

-	}

-

-	/**

-	 * Returns the compare configuration of this viewer.

-	 *

-	 * @return the compare configuration of this viewer

-	 */

-	public CompareConfiguration getCompareConfiguration() {

-		return fCompareConfiguration;

-	}

-			

-	/**

-	 * 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 (fPreferenceChangeListener != null) {

-			IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-			if (ps != null)

-				ps.removePropertyChangeListener(fPreferenceChangeListener);

-			fPreferenceChangeListener= null;

-		}

-				

-		if (fCompareConfiguration != null) {

-			if (fPropertyChangeListener != null)

-				fCompareConfiguration.removePropertyChangeListener(fPropertyChangeListener);

-			fCompareConfiguration= null;

-		}

-		fPropertyChangeListener= null;

-		

-		super.handleDispose(event);

-	}

-	

-	/**

-	 * Tracks property changes of the configuration object.

-	 * Clients may extend to track their own property changes.

-	 */

-	protected void propertyChange(PropertyChangeEvent event) {

-	}

-	

-	protected void inputChanged(Object in, Object oldInput) {

-		super.inputChanged(in, oldInput);

-		

-		if (in != oldInput) {

-			initialSelection();

-			updateActions();

-		}

-	}

-	

-	/**

-	 * This hook method is called from within <code>inputChanged</code>

-	 * after a new input has been set but before any controls are updated.

-	 * This default implementation calls <code>navigate(true)<code>

-	 * to select and expand the first leaf node.

-	 * Clients can override this method and are free to decide whether

-	 * they want to call the inherited method.

-	 */

-	protected void initialSelection() {

-		navigate(true);

-	}

-

-	/**

-	 * Overridden to avoid expanding <code>DiffNode</code>s that shouldn't expand

-	 * (i.e. where the <code>dontExpand</code> method returns <code>true</code>).

-	 */

-	protected void internalExpandToLevel(Widget node, int level) {

-				

-		Object data= node.getData();

-		

-		if (dontExpand(data))

-			return;

-		

-		super.internalExpandToLevel(node, level);

-	}

-	

-	protected boolean dontExpand(Object o) {

-		return o instanceof DiffNode && ((DiffNode)o).dontExpand();

-	}

-	

-	//---- merge action support

-

-	/**

-	 * This factory method is called after the viewer's controls have been created.

-	 * It installs four actions in the given <code>ToolBarManager</code>. Two actions

-	 * allow for copying one side of a <code>DiffNode</code> to the other side.

-	 * Two other actions are for navigating from one node to the next (previous).

-	 * <p>

-	 * Clients can override this method and are free to decide whether they want to call

-	 * the inherited method.

-	 *

-	 * @param toolbarManager the toolbar manager for which to add the actions

-	 */

-	protected void createToolItems(ToolBarManager toolbarManager) {

-		

-//		fCopyLeftToRightAction= new Action() {

-//			public void run() {

-//				copySelected(true);

-//			}

-//		};

-//		Utilities.initAction(fCopyLeftToRightAction, fBundle, "action.TakeLeft.");

-//		toolbarManager.appendToGroup("merge", fCopyLeftToRightAction);

-

-//		fCopyRightToLeftAction= new Action() {

-//			public void run() {

-//				copySelected(false);

-//			}

-//		};

-//		Utilities.initAction(fCopyRightToLeftAction, fBundle, "action.TakeRight.");

-//		toolbarManager.appendToGroup("merge", fCopyRightToLeftAction);

-		

-		fNextAction= new Action() {

-			public void run() {

-				navigate(true);

-			}

-		};

-		Utilities.initAction(fNextAction, fBundle, "action.NextDiff."); //$NON-NLS-1$

-		toolbarManager.appendToGroup("navigation", fNextAction); //$NON-NLS-1$

-

-		fPreviousAction= new Action() {

-			public void run() {

-				navigate(false);

-			}

-		};

-		Utilities.initAction(fPreviousAction, fBundle, "action.PrevDiff."); //$NON-NLS-1$

-		toolbarManager.appendToGroup("navigation", fPreviousAction); //$NON-NLS-1$

-	}

-	

-	/**

-	 * This method is called to add actions to the viewer's context menu.

-	 * It installs actions for copying one side of a <code>DiffNode</code> to the other side.

-	 * Clients can override this method and are free to decide whether they want to call

-	 * the inherited method.

-	 *

-	 * @param manager the menu manager for which to add the actions

-	 */

-	protected void fillContextMenu(IMenuManager manager) {

-		if (fCopyLeftToRightAction != null)

-			manager.add(fCopyLeftToRightAction);

-		if (fCopyRightToLeftAction != null)

-			manager.add(fCopyRightToLeftAction);

-	}

-

-	/**

-	 * Copies one side of all <code>DiffNode</code>s in the current selection to the other side.

-	 * Called from the (internal) actions for copying the sides of a <code>DiffNode</code>.

-	 * Clients may override. 

-	 * 

-	 * @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

-	 */

-	protected void copySelected(boolean leftToRight) {

-		ISelection selection= getSelection();

-		if (selection instanceof IStructuredSelection) {

-			Iterator e= ((IStructuredSelection) selection).iterator();

-			while (e.hasNext()) {

-				Object element= e.next();

-				if (element instanceof ICompareInput)

-					copyOne((ICompareInput) element, leftToRight);

-			}

-		}

-	}

-	

-	/**

-	 * Called to copy one side of the given node to the other.

-	 * This default implementation delegates the call to <code>ICompareInput.copy(...)</code>.

-	 * Clients may override. 

-	 * 

-	 * @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

-	 */

-	protected void copyOne(ICompareInput node, boolean leftToRight) {

-		

-		node.copy(leftToRight);

-		

-		// update node's image

-		update(new Object[] { node }, null);

-	}

-	

-	/**

-	 * Selects the next (or previous) node of the current selection.

-	 * If there is no current selection the first (last) node in the tree is selected.

-	 * Wraps around at end or beginning.

-	 * Clients may override. 

-	 *

-	 * @param next if <code>true</code> the next node is selected, otherwise the previous node

-	 */

-	protected void navigate(boolean next) {	

-		internalNavigate(next);

-	}

-	

-	//---- private

-	

-	/**

-	 * Selects the next (or previous) node of the current selection.

-	 * If there is no current selection the first (last) node in the tree is selected.

-	 * Wraps around at end or beginning.

-	 * Clients may override. 

-	 *

-	 * @param next if <code>true</code> the next node is selected, otherwise the previous node

-	 * @return <code>true</code> if at end (or beginning)

-	 */

-	private boolean internalNavigate(boolean next) {

-		

-		Control c= getControl();

-		if (!(c instanceof Tree))

-			return false;

-			

-		Tree tree= (Tree) c;

-		TreeItem item= null;

-		TreeItem children[]= tree.getSelection();

-		if (children != null && children.length > 0)

-			item= children[0];

-		if (item == null) {

-			children= tree.getItems();

-			if (children != null && children.length > 0) {

-				item= children[0];

-				if (item != null && item.getItemCount() <= 0) {

-					internalSetSelection(item);

-					return false;

-				}

-			}

-		}

-			

-		while (true) {

-			item= findNextPrev(item, next);

-			if (item == null)

-				break;

-			if (item.getItemCount() <= 0)

-				break;

-		}

-		

-		if (item != null) {

-			internalSetSelection(item);

-			return false;

-		}

-		return true;

-	}

-

-	private TreeItem findNextPrev(TreeItem item, boolean next) {

-		

-		if (item == null)

-			return null;

-		

-		TreeItem children[]= null;

-

-		if (!next) {

-		

-			TreeItem parent= item.getParentItem();

-			if (parent != null)

-				children= parent.getItems();

-			else

-				children= item.getParent().getItems();

-			

-			if (children != null && children.length > 0) {

-				// goto previous child

-				int index= 0;

-				for (; index < children.length; index++)

-					if (children[index] == item)

-						break;

-				

-				if (index > 0) {

-					

-					item= children[index-1];

-					

-					while (true) {

-						createChildren(item);

-						int n= item.getItemCount();

-						if (n <= 0)

-							break;

-							

-						item.setExpanded(true);

-						item= item.getItems()[n-1];

-					}

-

-					// previous

-					return item;

-				}

-			}

-			

-			// go up

-			return parent;

-					

-		} else {

-			item.setExpanded(true);

-			createChildren(item);

-			

-			if (item.getItemCount() > 0) {

-				// has children: go down

-				children= item.getItems();

-				return children[0];

-			}

-			

-			while (item != null) {

-				children= null;

-				TreeItem parent= item.getParentItem();

-				if (parent != null)

-					children= parent.getItems();

-				else

-					children= item.getParent().getItems();

-				

-				if (children != null && children.length > 0) {

-					// goto next child

-					int index= 0;

-					for (; index < children.length; index++)

-						if (children[index] == item)

-							break;

-					

-					if (index < children.length-1) {

-						// next

-						return children[index+1];

-					}

-				}

-				

-				// go up

-				item= parent;

-			}

-		}

-				

-		return item;

-	}

-	

-	private void internalSetSelection(TreeItem ti) {

-		if (ti != null) {

-			Object data= ti.getData();

-			if (data != null)

-				setSelection(new StructuredSelection(data), true);

-		}

-	}

-	

-	private void syncShowPseudoConflictFilter() {

-		

-		IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-		boolean showPseudoConflicts= ps.getBoolean(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS);

-		

-		Control tree= getControl();

-		if (!tree.isDisposed()) {

-			if (showPseudoConflicts) {

-				if (fViewerFilter != null) {

-					removeFilter(fViewerFilter);

-				}

-			} else {

-				if (fViewerFilter == null)

-					fViewerFilter= new FilterSame();	

-				addFilter(fViewerFilter);

-			}

-		}

-	}

-		

-	private final boolean isEditable(Object element, boolean left) {

-		if (element instanceof ICompareInput) {

-			ICompareInput diff= (ICompareInput) element;

-			Object side= left ? diff.getLeft() : diff.getRight();

-			if (side == null && diff instanceof IDiffElement) {

-				IDiffContainer container= ((IDiffElement)diff).getParent();

-				if (container instanceof ICompareInput) {

-					ICompareInput parent= (ICompareInput) container;

-					side= left ? parent.getLeft() : parent.getRight();

-				}

-			}

-			if (side instanceof IEditableContent)

-				return ((IEditableContent) side).isEditable();

-		}

-		return false;

-	}

-		

-	private void updateActions() {

-		int leftToRight= 0;

-		int rightToLeft= 0;

-		ISelection selection= getSelection();

-		if (selection instanceof IStructuredSelection) {

-			IStructuredSelection ss= (IStructuredSelection) selection;

-			Iterator e= ss.iterator();

-			while (e.hasNext()) {

-				Object element= e.next();

-				if (element instanceof ICompareInput) {

-					if (isEditable(element, false))

-						leftToRight++;

-					if (isEditable(element, true))

-						rightToLeft++;

-					if (leftToRight > 0 && rightToLeft > 0)

-						break;

-				}

-			}

-		}

-		if (fCopyLeftToRightAction != null)

-			fCopyLeftToRightAction.setEnabled(leftToRight > 0);

-		if (fCopyRightToLeftAction != null)

-			fCopyRightToLeftAction.setEnabled(rightToLeft > 0);

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties
deleted file mode 100644
index 9a91be4..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties
+++ /dev/null
@@ -1,41 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-

-# @(#)DiffTreeViewerResources.properties

-#

-# Resource strings for DiffTreeViewer.java

-

-title= Structure Compare

-defaultLabel= <no name>

-

-#####################################################

-# Dummy menu item for empty context menu

-#####################################################

-

-emptyMenuItem= <Empty Menu>

-

-#####################################################

-# Actions

-#####################################################

-

-action.Smart.label=Smart

-action.Smart.tooltip=Try to Guess Corresponding Elements

-action.Smart.image=smartmode_co.gif

-

-action.NextDiff.label=Next

-action.NextDiff.tooltip=Select Next Change

-action.NextDiff.image=next_nav.gif

-

-action.PrevDiff.label=Previous

-action.PrevDiff.tooltip=Select Previous Change

-action.PrevDiff.image=prev_nav.gif

-

-action.TakeLeft.label=Copy Left to Right

-action.TakeLeft.tooltip=Copy Selected Nodes from Left to Right

-action.TakeLeft.image=copycont_r_co.gif

-

-action.TakeRight.label=Copy Right to Left

-action.TakeRight.tooltip=Copy selected Nodes from Right to Left

-action.TakeRight.image=copycont_l_co.gif

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java
deleted file mode 100644
index e8c8ab3..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java
+++ /dev/null
@@ -1,515 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.io.*;

-import java.util.*;

-import java.text.MessageFormat;

-

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.OperationCanceledException;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.Utilities;

-

-

-/**

- * A generic two-way or three-way differencing engine.

- * <p>

- * The engine is used by calling one of the <code>findDifferences</code> methods and passing

- * in the objects to compare.

- * The engine calls the following methods on the input objects to perform the compare:

- * <UL>

- * <LI><code>getChildren</code>: for enumerating the children of an object (if any),

- * <LI><code>contentsEqual</code>: for comparing the content of leaf objects, that is, objects without children,

- * <LI><code>visit</code>: for every pair of compared object the compare result is passed in.

- * </UL>

- * Clients may use as is, or subclass to provide a custom implementation for the three hooks. 

- * However the default implementation already deals with the typical case:

- * <UL>

- * <LI><code>getChildren</code>: tries to apply the <code>IStructureComparator</code>

- * 	interface to enumerate the children,

- * <LI><code>contentsEqual</code>: tries to apply the <code>IStreamContentAccessor</code> interface

- *	to perform a byte-wise content comparison,

- * <LI><code>visit</code>: creates a <code>DiffNode</code> for any detected difference between the compared objects and

- *	links it under a parent node effectively creating a tree of differences.

- * </UL>

- * The different kind of changes detected by the engine are decoded as follows:

- * In the two-way case only NO_CHANGE, ADDITION, DELETION, and CHANGE are used.

- * In the three-way case these constants are bitwise ORed with one of directional constants

- * LEFT, RIGHT, and CONFLICTING.

- */

-public class Differencer {

-	

-	// The kind of differences.

-	/**

-	 * Difference constant (value 0) indicating no difference.

-	 */

-	public static final int NO_CHANGE= 0;

-	/**

-	 * Difference constant (value 1) indicating one side was added.

-	 */

-	public static final int ADDITION= 1;

-	/**

-	 * Difference constant (value 2) indicating one side was removed.

-	 */

-	public static final int DELETION= 2;

-	/**

-	 * Difference constant (value 3) indicating side changed.

-	 */

-	public static final int CHANGE= 3;

-

-	/**

-	 * Bit mask (value 3) for extracting the kind of difference.

-	 */

-	public static final int CHANGE_TYPE_MASK= 3;

-

-	// The direction of a three-way change.

-	/**

-	 * Three-way change constant (value 4) indicating a change on left side.

-	 */

-	public static final int LEFT= 4;

-	

-	/**

-	 * Three-way change constant (value 8) indicating a change on right side.

-	 */

-	public static final int RIGHT= 8;

-	

-	/**

-	 * Three-way change constant (value 12) indicating a change on left and

-	 * right sides.

-	 */

-	public static final int CONFLICTING= 12;

-

-	/**

-	 * Bit mask (value 12) for extracting the direction of a three-way change.

-	 */

-	public static final int DIRECTION_MASK= 12;

-

-	/**

-	 * Constant (value 16) indicating a change on left and 

-	 * right side (with respect to ancestor) but left and right are identical.

-	 */

-	public static final int PSEUDO_CONFLICT= 16;

-

-	

-	static class Node {

-		List fChildren;

-		int fCode;

-		Object fAncestor;

-		Object fLeft;

-		Object fRight;

-		

-		Node() {

-		}

-		Node(Node parent, Object ancestor, Object left, Object right) {

-			parent.add(this);

-			fAncestor= ancestor;

-			fLeft= left;

-			fRight= right;

-		}

-		void add(Node child) {

-			if (fChildren == null)

-				fChildren= new ArrayList();

-			fChildren.add(child);

-		}

-		Object visit(Differencer d, Object parent, int level) {

-			if (fCode == NO_CHANGE)

-				return null;

-			//dump(level);

-			Object data= d.visit(parent, fCode, fAncestor, fLeft, fRight);

-			if (fChildren != null) {

-				Iterator i= fChildren.iterator();

-				while (i.hasNext()) {

-					Node n= (Node) i.next();

-					n.visit(d, data, level+1);

-				}

-			}

-			return data;

-		}

-		private void dump(int level) {

-			String name= null;

-			if (fAncestor instanceof ITypedElement)

-				name= ((ITypedElement)fAncestor).getName();

-			if (name == null && fLeft instanceof ITypedElement)

-				name= ((ITypedElement)fLeft).getName();

-			if (name == null && fRight instanceof ITypedElement)

-				name= ((ITypedElement)fRight).getName();

-			if (name == null)

-				name= "???"; //$NON-NLS-1$

-			

-			for (int i= 0; i < level; i++)

-				System.out.print("  "); //$NON-NLS-1$

-			

-			System.out.println(getDiffType(fCode) + name);

-		}

-		private String getDiffType(int code) {

-			String dir= " "; //$NON-NLS-1$

-			switch (code & DIRECTION_MASK) {

-			case LEFT:

-				dir= ">"; //$NON-NLS-1$

-				break;

-			case RIGHT:

-				dir= "<"; //$NON-NLS-1$

-				break;

-			case CONFLICTING:

-				dir= "!"; //$NON-NLS-1$

-				break;

-			}

-			String change= "="; //$NON-NLS-1$

-			switch (code & CHANGE_TYPE_MASK) {

-			case ADDITION:

-				change= "+"; //$NON-NLS-1$

-				break;

-			case DELETION:

-				change= "-"; //$NON-NLS-1$

-				break;

-			case CHANGE:

-				change= "#"; //$NON-NLS-1$

-				break;

-			}

-			return dir + change + " "; //$NON-NLS-1$

-		}

-	} 

-	

-	/**

-	 * Creates a new differencing engine.

-	 */

-	public Differencer() {

-	}

-	

-	/**

-	 * Starts the differencing engine on the three input objects. If threeWay is <code>true</code> a 

-	 * three-way comparison is performed, otherwise a two-way compare (in the latter case the ancestor argument is ignored).

-	 * The progress monitor is passed to the method <code>updateProgress</code> which is called for every node or

-	 * leaf compare. The method returns the object that was returned from the top-most call to method <code>visit</code>.

-	 * At most two of the ancestor, left, and right parameters are allowed to be <code>null</code>.

-	 *

-	 * @param threeWay if <code>true</code> a three-way comparison is performed, otherwise a two-way compare

-	 * @param pm a progress monitor which is passed to method <code>updateProgress</code>

-	 * @param data a client data that is passed to the top-level call to <code>visit</code>

-	 * @param ancestor the ancestor object of the compare (may be <code>null</code>)

-	 * @param left the left object of the compare 

-	 * @param right the right object of the compare

-	 * @return the object returned from the top most call to method <code>visit</code>,

-	 *   possibly <code>null</code>

-	 */

-	public Object findDifferences(boolean threeWay, IProgressMonitor pm, Object data, Object ancestor, Object left, Object right) {

-		

-		Node root= new Node();

-		

-		int code= traverse(threeWay, root, pm, threeWay ? ancestor : null, left, right);

-				

-		if (code != NO_CHANGE) {

-			List l= root.fChildren;

-			if (l.size() > 0) {

-				Node first= (Node)l.get(0);

-				return first.visit(this, data, 0);

-			}

-		}

-		return null;

-	}

-	

-	/**

-	 * Traverse tree in postorder.

-	 */

-	private int traverse(boolean threeWay, Node parent, IProgressMonitor pm, Object ancestor, Object left, Object right) {

-				

-		Object[] ancestorChildren= getChildren(ancestor);

-		Object[] rightChildren= getChildren(right);

-		Object[] leftChildren= getChildren(left);

-		

-		int code= NO_CHANGE;

-		

-		Node node= new Node(parent, ancestor, left, right);

-			

-		boolean content= true;	// we reset this if we have at least one child

-		

-		if (((threeWay && ancestorChildren != null) || !threeWay)

-					 && rightChildren != null && leftChildren != null) {

-			// we only recurse down if no leg is null

-			// a node

-			

-			Set allSet= new HashSet(20);

-			Map ancestorSet= null;

-			Map rightSet= null;

-			Map leftSet= null;

-						

-			if (ancestorChildren != null) {

-				ancestorSet= new HashMap(10);

-				for (int i= 0; i < ancestorChildren.length; i++) {

-					Object ancestorChild= ancestorChildren[i];

-					ancestorSet.put(ancestorChild, ancestorChild);

-					allSet.add(ancestorChild);

-				}

-			}

-

-			if (rightChildren != null) {

-				rightSet= new HashMap(10);

-				for (int i= 0; i < rightChildren.length; i++) {

-					Object rightChild= rightChildren[i];

-					rightSet.put(rightChild, rightChild);

-					allSet.add(rightChild);

-				}

-			}

-

-			if (leftChildren != null) {

-				leftSet= new HashMap(10);

-				for (int i= 0; i < leftChildren.length; i++) {

-					Object leftChild= leftChildren[i];

-					leftSet.put(leftChild, leftChild);

-					allSet.add(leftChild);

-				}

-			}

-						

-			Iterator e= allSet.iterator();

-			while (e.hasNext()) {

-				Object keyChild= e.next();

-				

-				content= false;

-				

-				if (pm != null) {

-					

-					if (pm.isCanceled())

-						throw new OperationCanceledException();

-						

-					updateProgress(pm, keyChild);

-				}

-				

-				Object ancestorChild= ancestorSet != null ? ancestorSet.get(keyChild) : null;

-				Object leftChild= leftSet != null ? leftSet.get(keyChild) : null;

-				Object rightChild= rightSet != null ? rightSet.get(keyChild) : null;

-				

-				int c= traverse(threeWay, node, pm, ancestorChild, leftChild, rightChild);

-			

-				if ((c & CHANGE_TYPE_MASK) != NO_CHANGE) {

-					code|= CHANGE;	// deletions and additions of child result in a change of the container

-					code|= (c & DIRECTION_MASK);	// incoming & outgoing are just ored

-				}

-			}

-		}

-

-		if (content)			// a leaf

-			code= compare(threeWay, ancestor, left, right);

-								

-		node.fCode= code;

-							

-		return code;

-	}

-	

-	/**

-	 * Called for every node or leaf comparison.

-	 * The differencing engine passes in the input objects of the compare and the result of the compare.

-	 * The data object is the value returned from a call to the <code>visit</code> method on the parent input.

-	 * It can be considered the "parent" reference and is useful when building a tree.

-	 * <p>

-	 * The <code>Differencer</code> implementation returns a new

-	 * <code>DiffNode</code> which is initialized with the corresponding values.

-	 * Subclasses may override.

-	 *

-	 * @param data object returned from parent call to <code>visit</code>,

-	 *   possibly <code>null</code>

-	 * @param result the result of the compare operation performed on the three inputs

-	 * @param ancestor the compare ancestor of the left and right inputs

-	 * @param left the left input to the compare

-	 * @param right the right input to the compare

-	 * @return the result, possibly <code>null</code>

-	 */

-	protected Object visit(Object data, int result, Object ancestor, Object left, Object right) {

-		return new DiffNode((IDiffContainer) data, result, (ITypedElement)ancestor, (ITypedElement)left, (ITypedElement)right);

-	}

-	

-	/**

-	 * Performs a 2-way or 3-way compare of the given leaf elements and returns an integer

-	 * describing the kind of difference.

-	 */

-	private int compare(boolean threeway, Object ancestor, Object left, Object right) {

-		

-		int description= NO_CHANGE;

-		

-		if (threeway) {

-			if (ancestor == null) {

-				if (left == null) {

-					if (right == null) {

-						Assert.isTrue(false);

-						// shouldn't happen

-					} else {

-						description= RIGHT | ADDITION;

-					}

-				} else {

-					if (right == null) {

-						description= LEFT | ADDITION;

-					} else {

-						description= CONFLICTING | ADDITION;

-						if (contentsEqual(left, right))

-							description|= PSEUDO_CONFLICT;

-					}

-				}

-			} else {

-				if (left == null) {

-					if (right == null) {

-						description= CONFLICTING | DELETION | PSEUDO_CONFLICT;

-					} else {

-						if (contentsEqual(ancestor, right))		

-							description= LEFT | DELETION;

-						else

-							description= CONFLICTING | CHANGE;	

-					}

-				} else {

-					if (right == null) {

-						if (contentsEqual(ancestor, left))	

-							description= RIGHT | DELETION;

-						else

-							description= CONFLICTING | CHANGE;	

-					} else {

-						boolean ay= contentsEqual(ancestor, left);

-						boolean am= contentsEqual(ancestor, right);

-						

-						if (ay && am)

-							;

-						else if (ay && !am) {

-							description= RIGHT | CHANGE;

-						} else if (!ay && am) {

-							description= LEFT | CHANGE;

-						} else {

-							description= CONFLICTING | CHANGE;

-							if (contentsEqual(left, right))

-								description|= PSEUDO_CONFLICT;

-						}

-					}

-				}

-			}

-		} else {	// two way compare ignores ancestor

-			if (left == null) {

-				if (right == null) {

-					Assert.isTrue(false);

-					// shouldn't happen

-				} else {

-					description= ADDITION;

-				}

-			} else {

-				if (right == null) {

-					description= DELETION;

-				} else {

-					if (! contentsEqual(left, right))

-						description= CHANGE;

-				}

-			}

-		}

-							

-		return description;

-	}

-		

-	/**

-	 * Performs a content compare on the two given inputs.

-	 * <p>

-	 * The <code>Differencer</code> implementation

-	 * returns <code>true</code> if both inputs implement <code>IStreamContentAccessor</code>

-	 * and their byte contents is identical. Subclasses may override to implement 

-	 * a different content compare on the given inputs.

-	 * </p>

-	 *

-	 * @param input1 first input to contents compare

-	 * @param input2 second input to contents compare

-	 * @return <code>true</code> if content is equal

-	 */

-	protected boolean contentsEqual(Object input1, Object input2) {

-		

-		if (input1 == input2)

-			return true;

-			

-		InputStream is1= getStream(input1);

-		InputStream is2= getStream(input2);

-		

-		if (is1 == null && is2 == null)	// no byte contents

-			return true;

-		

-		try {

-			if (is1 == null || is2 == null)	// only one has contents

-				return false;

-			

-			while (true) {

-				int c1= is1.read();

-				int c2= is2.read();

-				if (c1 == -1 && c2 == -1)

-					return true;

-				if (c1 != c2)

-					break;

-				

-			}

-		} catch (IOException ex) {

-		} finally {

-			if (is1 != null) {

-				try {

-					is1.close();

-				} catch(IOException ex) {

-				}

-			}

-			if (is2 != null) {

-				try {

-					is2.close();

-				} catch(IOException ex) {

-				}

-			}

-		}

-		return false;

-	}

-	

-	/**

-	 * Tries to return an InputStream for the given object.

-	 * Returns <code>null</code> if the object not an IStreamContentAccessor

-	 * or an error occured.

-	 */

-	private InputStream getStream(Object o) {

-		if (o instanceof IStreamContentAccessor) {

-			try {

-				return ((IStreamContentAccessor)o).getContents();

-			} catch(CoreException ex) {

-			}

-		}

-		return null;

-	}

-	

-	/**

-	 * Returns the children of the given input or <code>null</code> if there are no children.

-	 * <p>

-	 * The <code>Differencer</code> implementation checks whether the input 

-	 * implements the <code>IStructureComparator</code> interface. If yes it is used

-	 * to return an array containing all children. Otherwise <code>null</code> is returned.

-	 * Subclasses may override to implement a different strategy to enumerate children.

-	 * </p>

-	 *

-	 * @param input the object for which to return children

-	 */

-	protected Object[] getChildren(Object input) {

-		if (input instanceof IStructureComparator)

-			return ((IStructureComparator)input).getChildren();

-		return null;

-	}

-	

-	/**

-	 * Called for every leaf or node compare to update progress information.

-	 * <p>

-	 * The <code>Differencer</code> implementation shows the name of the input object

-	 * as a subtask. Subclasses may override.

-	 * </p>

-	 *

-	 * @param progressMonitor the progress monitor for reporting progress

-	 * @name input a non-<code>null</code> input object

-	 */

-	protected void updateProgress(IProgressMonitor progressMonitor, Object node) {

-		if (node instanceof ITypedElement) {

-			String name= ((ITypedElement)node).getName();

-			String fmt= Utilities.getString("Differencer.progressFormat"); //$NON-NLS-1$

-			String msg= MessageFormat.format(fmt, new String[] { name });

-			progressMonitor.subTask(msg);

-			//progressMonitor.worked(1);

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java
deleted file mode 100644
index a5c7b97..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java
+++ /dev/null
@@ -1,348 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.io.ByteArrayInputStream;

-import java.io.InputStream;

-import java.util.ArrayList;

-import java.util.Iterator;

-

-import org.eclipse.jface.text.*;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.Utilities;

-import org.eclipse.compare.contentmergeviewer.IDocumentRange;

-

-

-/**

- * A document range node represents a structural element

- * when performing a structure compare of documents.

- * <code>DocumentRangeNodes</code> are created while parsing the document and represent

- * a semantic entity (e.g. a Java class or method).

- * As a consequence of the parsing a <code>DocumentRangeNode</code> maps to a range

- * of characters in the document.

- * <p>

- * Since a <code>DocumentRangeNode</code> implements the <code>IStructureComparator</code>

- * and <code>IStreamContentAccessor</code> interfaces it can be used as input to the

- * differencing engine. This makes it possible to perform

- * a structural diff on a document and have the nodes and leaves of the compare easily map

- * to character ranges within the document.

- * <p>

- * Subclasses may add additional state collected while parsing the document.

- * </p> 

- * @see Differencer

- */

-public class DocumentRangeNode

-		implements IDocumentRange, IStructureComparator, IEditableContent, IStreamContentAccessor {

-

-	private static final boolean POS_UPDATE= true;

-	

-	private IDocument fBaseDocument;

-	private Position fRange; // the range in the base document

-	private int fTypeCode;

-	private String fID;

-	private Position fAppendPosition; // a position where to insert a child textually

-	private ArrayList fChildren;

-

-	/**

-	 * Creates a new <code>DocumentRangeNode</code> for the given range within the specified

-	 * document. The <code>typeCode</code> is uninterpreted client data. The ID is used when comparing

-	 * two nodes with each other: i.e. the differencing engine performs a content compare 

-	 * on two nodes if their IDs are equal.

-	 *

-	 * @param typeCode a type code for this node

-	 * @param id an identifier for this node

-	 * @param document document on which this node is based on

-	 * @param start start position of range within document

-	 * @param length length of range

-	 */

-	public DocumentRangeNode(int typeCode, String id, IDocument document, int start, int length) {

-		

-		fTypeCode= typeCode;

-		fID= id;

-		

-		fBaseDocument= document;

-		fRange= new Position(start, length);

-		

-		if (POS_UPDATE) {

-			try {

-				document.addPosition(fRange);

-			} catch (BadLocationException ex) {

-			}

-		}

-	}

-

-	/* (non Javadoc)

-	 * see IDocumentRange.getDocument

-	 */

-	public IDocument getDocument() {

-		return fBaseDocument;

-	}

-	

-	/* (non Javadoc)

-	 * see IDocumentRange.getRange

-	 */

-	public Position getRange() {

-		return fRange;

-	}

-	

-	/**

-	 * Returns the type code of this node.

-	 * The type code is uninterpreted client data which can be set in the constructor.

-	 *

-	 * @return the type code of this node

-	 */

-	public int getTypeCode() {

-		return fTypeCode;

-	}

-	

-	/**

-	 * Returns this node's id.

-	 * It is used in <code>equals</code> and <code>hashcode</code>.

-	 *

-	 * @return the node's id

-	 */

-	public String getId() {

-		return fID;

-	}

-

-	/**

-	 * Sets this node's id.

-	 * It is used in <code>equals</code> and <code>hashcode</code>.

-	 *

-	 * @param id the new id for this node

-	 */

-	public void setId(String id) {

-		fID= id;

-	}

-

-	/**

-	 * Adds the given node as a child.

-	 *

-	 * @param node the node to add as a child

-	 */

-	public void addChild(DocumentRangeNode node) {

-		if (fChildren == null)

-			fChildren= new ArrayList();

-		fChildren.add(node);

-	}

-

-	/* (non Javadoc)

-	 * see IStructureComparator.getChildren

-	 */

-	public Object[] getChildren() {

-		if (fChildren != null)

-			return fChildren.toArray(); 

-		return null;

-	}

-

-	/**

-	 * Sets the length of the range of this node.

-	 *

-	 * @param length the length of the range

-	 */

-	public void setLength(int length) {

-		getRange().setLength(length);

-	}

-

-	/**

-	 * Sets a position within the document range that can be used to (legally) insert

-	 * text without breaking the syntax of the document.

-	 * <p>

-	 * E.g. when parsing a Java document the "append position" of a <code>DocumentRangeNode</code>

-	 * representating a Java class could be the character position just before the closing bracket.

-	 * Inserting the text of a new method there would not disturb the syntax of the class.

-	 *

-	 * @param pos the character position within the underlying document where text can be legally inserted

-	 */

-	public void setAppendPosition(int pos) {

-		if (POS_UPDATE) {

-			fBaseDocument.removePosition(fAppendPosition);

-			try {

-				Position p= new Position(pos);

-				fBaseDocument.addPosition(p);

-				fAppendPosition= p;

-			} catch (BadLocationException ex) {

-				// ignore

-			}

-		} else {

-			fAppendPosition= new Position(pos);

-		}

-	}

-

-	/**

-	 * Returns the position that has been set with <code>setAppendPosition</code>.

-	 * If <code>setAppendPosition</code> hasn't been called, the position after the last character

-	 * of this range is returned.

-	 *

-	 * @return a position where text can be legally inserted

-	 */

-	public Position getAppendPosition() {

-		if (fAppendPosition == null) {

-			if (POS_UPDATE) {

-				try {

-					Position p= new Position(fBaseDocument.getLength());

-					fBaseDocument.addPosition(p);

-					fAppendPosition= p;

-				} catch (BadLocationException ex) {

-					// ignore

-				}

-			} else {

-				fAppendPosition= new Position(fBaseDocument.getLength());

-			}

-		}

-		return fAppendPosition;

-	}

-

-	/**

-	 * Implementation based on <code>getID</code>.

-	 */

-	public boolean equals(Object other) {

-		if (other != null && other.getClass() == getClass()) {

-			DocumentRangeNode tn= (DocumentRangeNode) other;

-			return fTypeCode == tn.fTypeCode && fID.equals(tn.fID);

-		}

-		return super.equals(other);

-	}

-

-	/**

-	 * Implementation based on <code>getID</code>.

-	 */

-	public int hashCode() {

-		return fID.hashCode();

-	}

-

-	/**

-	 * Find corresponding position

-	 */

-	private Position findCorrespondingPosition(DocumentRangeNode otherParent, DocumentRangeNode child) {

-

-		// we try to find a predecessor of left Node which exists on the right side

-

-		if (child != null && fChildren != null) {

-			int ix= otherParent.fChildren.indexOf(child);

-			if (ix >= 0) {

-

-				for (int i= ix - 1; i >= 0; i--) {

-					DocumentRangeNode c1= (DocumentRangeNode) otherParent.fChildren.get(i);

-					int i2= fChildren.indexOf(c1);

-					if (i2 >= 0) {

-						DocumentRangeNode c= (DocumentRangeNode) fChildren.get(i2);

-						//System.out.println("  found corresponding: " + i2 + " " + c);

-						Position p= c.fRange;

-

-						//try {

-						Position po= new Position(p.getOffset() + p.getLength() + 1, 0);

-						//c.fBaseDocument.addPosition(po);

-						return po;

-						//} catch (BadLocationException ex) {

-						//}

-						//break;

-					}

-				}

-

-				for (int i= ix; i < otherParent.fChildren.size(); i++) {

-					DocumentRangeNode c1= (DocumentRangeNode) otherParent.fChildren.get(i);

-					int i2= fChildren.indexOf(c1);

-					if (i2 >= 0) {

-						DocumentRangeNode c= (DocumentRangeNode) fChildren.get(i2);

-						//System.out.println("  found corresponding: " + i2 + " " + c);

-						Position p= c.fRange;

-						//try {

-						Position po= new Position(p.getOffset(), 0);

-						//c.fBaseDocument.addPosition(po);

-						return po;

-						//} catch (BadLocationException ex) {

-						//}

-						//break;

-					}

-				}

-

-			}

-		}

-		return getAppendPosition();

-	}

-

-	private void add(String s, DocumentRangeNode parent, DocumentRangeNode child) {

-

-		Position p= findCorrespondingPosition(parent, child);

-		if (p != null) {

-			try {

-				fBaseDocument.replace(p.getOffset(), p.getLength(), s);

-			} catch (BadLocationException ex) {

-				// ignore

-			}

-		}

-	}

-	

-	/* (non Javadoc)

-	 * see IStreamContentAccessor.getContents

-	 */

-	public InputStream getContents() {

-		String s;

-		try {

-			s= fBaseDocument.get(fRange.getOffset(), fRange.getLength());

-		} catch (BadLocationException ex) {

-			s= ""; //$NON-NLS-1$

-		}

-		return new ByteArrayInputStream(s.getBytes());

-	}

-

-	/* (non Javadoc)

-	 * see IEditableContent.isEditable

-	 */

-	public boolean isEditable() {

-		return true;

-	}

-		

-	/* (non Javadoc)

-	 * see IEditableContent.replace

-	 */

-	public ITypedElement replace(ITypedElement child, ITypedElement other) {

-

-		DocumentRangeNode src= null;

-		String srcContents= ""; //$NON-NLS-1$

-		

-		if (other != null) {

-			src= (DocumentRangeNode) child;

-			

-			if (other instanceof IStreamContentAccessor) {

-				try {

-					InputStream is= ((IStreamContentAccessor)other).getContents();

-					byte[] bytes= Utilities.readBytes(is);

-					srcContents= new String(bytes);

-				} catch(CoreException ex) {

-				}

-			}

-		}

-

-		if (child != null) { // there is a destination

-			

-//			if (child instanceof DocumentRangeNode) {

-//				DocumentRangeNode drn= (DocumentRangeNode) child;

-//

-//				IDocument doc= drn.getDocument();

-//				Position range= drn.getRange();

-//				try {

-//					doc.replace(range.getOffset(), range.getLength(), srcContents);

-//				} catch (BadLocationException ex) {

-//				}

-//			}

-		} else {

-			// no destination: we have to add the contents into the parent

-			add(srcContents, null /*srcParentNode*/, src);

-		}

-		return child;

-	}

-	

-	/* (non Javadoc)

-	 * see IEditableContent.setContent

-	 */

-	public void setContent(byte[] content) {

-//		fBaseDocument.set(new String(content));

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java
deleted file mode 100644
index badc216..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.swt.graphics.Image;

-

-/**

- * Interface for objects used as input to a two-way or three-way compare viewer.

- * It defines API for accessing the three sides for the compare,

- * and a name and image which is used when displaying the three way input

- * in the UI, for example, in a title bar.

- * <p>

- * Note: at most two sides of an <code>ICompareInput</code> can be <code>null</code>,

- * (as it is normal for additions or deletions) but not all three.

- * <p>

- * <code>ICompareInput</code> provides methods for registering

- * <code>ICompareInputChangeListener</code>s

- * that get informed if one (or more)

- * of the three sides of an <code>ICompareInput</code> object changes its value.

- * <p>

- * For example when accepting an incoming addition

- * the (non-<code>null</code>) left side of an <code>ICompareInput</code>

- * is copied to the right side by means of method <code>copy</code>.

- * This should trigger a call to <code>compareInputChanged</code> of registered

- * <code>ICompareInputChangeListener</code>s. 

- * <p>

- * Clients can implement this interface, or use the convenience implementation 

- * <code>DiffNode</code>.

- * </p>

- * 

- * @see StructureDiffViewer

- * @see org.eclipse.compare.contentmergeviewer.ContentMergeViewer

- * @see DiffNode

- */

-public interface ICompareInput {

-

-	/**

-	 * Returns name of input.

-	 * This name is displayed when this input is shown in a viewer.

-	 * In many cases this name is the name of one of the non-<code>null</code> sides or a combination

-	 * thereof.

-	 *

-	 * @return name of input

-	 */

-	String getName();

-	

-	/**

-	 * Returns an image representing this input.

-	 * This image is typically displayed when this input is shown in a viewer.

-	 * In many cases this image is the image of one of the non-<code>null</code> sides.

-	 *

-	 * @return image representing this input, or <code>null</code> if no icon should be shown

-	 */

-	Image getImage();

-

-	/**

-	 * Returns the kind of difference between the

-	 * three sides ancestor, left and right.

-	 * This field is only meaningful if the <code>ICompareInput</code>

-	 * is the result of another compare. In this case it is used

-	 * together with <code>getImage</code> to compose a icon

-	 * which reflects the kind of difference between the two or three elements.

-	 *

-	 * @return kind of difference (see <code>Differencer</code>)

-	 */

-	int getKind();

-	

-	/**

-	 * Returns the ancestor side of this input.

-	 * Returns <code>null</code> if this input has no ancestor

-	 * or in the two-way compare case.

-	 *

-	 * @return the ancestor of this input, or <code>null</code>

-	 */

-	ITypedElement getAncestor();

-	

-	/**

-	 * Returns the left side of this input.

-	 * Returns <code>null</code> if there is no left side (deletion or addition).

-	 *

-	 * @return the left side of this input, or <code>null</code>

-	 */

-	ITypedElement getLeft();

-	

-	/**

-	 * Returns the right side of this input.

-	 * Returns <code>null</code> if there is no right side (deletion or addition).

-	 *

-	 * @return the right side of this input, or <code>null</code>

-	 */

-	ITypedElement getRight();

-	

-	/**

-	 * Registers the given listener for notification.

-	 * If the identical listener is already registered the method has no effect.

-	 *

-	 * @param listener the listener to register for changes of this input

-	 */

-	void addCompareInputChangeListener(ICompareInputChangeListener listener);

-	

-	/**

-	 * Unregisters the given listener.

-	 * If the identical listener is not registered the method has no effect.

-	 *

-	 * @param listener the listener to unregister

-	 */

-	void removeCompareInputChangeListener(ICompareInputChangeListener listener);

-	

-	/**

-	 * Copy one side (source) to the other side (destination) depending on the 

-	 * value of <code>leftToRight</code>. This method is called from

-	 * a merge viewer if a corresponding action ("take left" or "take right")

-	 * has been pressed.

-	 * <p>

-	 * The implementation should handle the following cases:

-	 * <UL>

-	 * <LI>

-	 * if the source side is <code>null</code> the destination must be deleted,

-	 * <LI>

-	 * if the destination is <code>null</code> the destination must be created

-	 * and filled with the contents from the source,

-	 * <LI>

-	 * if both sides are non-<code>null</code> the contents of source must be copied to destination.

-	 * </UL>

-	 * In addition the implementation should send out notification to the registered

-	 * <code>ICompareInputChangeListener</code>.

-	 * 

-	 * @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

-	 */

-	void copy(boolean leftToRight);

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java
deleted file mode 100644
index ba8d967..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-/**

- * Listener that gets informed if one (or more)

- * of the three sides of an <code>ICompareInput</code> object changes its value.

- * <p>

- * For example when accepting an incoming addition

- * the (non-null) left side of an <code>ICompareInput</code>

- * is copied to the right side (which was <code>null</code>).

- * This triggers a call to <code>compareInputChanged</code> of registered

- * <code>ICompareInputChangeListener</code>. 

- * <p>

- * Note however, that listener are not informed if the content of one of the sides changes.

- * <p>

- * Clients may implement this interface. It is also implemented by viewers that take 

- * an <code>ICompareInput</code> as input.

- * </p>

- */

-public interface ICompareInputChangeListener {

-	

-	/**

-	 * Called whenever the value (not the content) of one or more of the three sides 

- 	 * of a <code>ICompareInput</code> has changed.

-	 *

-	 * @param source the <code>ICompareInput</code> that has changed

-	 */

-	void compareInputChanged(ICompareInput source);

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java
deleted file mode 100644
index c87f30c..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.util.Iterator;

-

-/**

- * <code>IDiffContainer</code> is a <code>IDiffElement</code> with children.

- * <p>

- * <code>IDiffContainer</code> are the inner nodes displayed

- * by the <code>DiffTreeViewer</code>.

- * <code>IDiffContainer</code> are typically created as the result of performing

- * a compare with the <code>Differencer</code>.

- * <p>

- * Clients may implement this interface, or use one of the standard implementations,

- * <code>DiffContainer</code> or <code>DiffNode</code>.

- *

- * @see Differencer

- * @see DiffTreeViewer

- */

-public interface IDiffContainer extends IDiffElement {

-

-	/**

-	 * Returns whether this container has at least one child.

-	 * In some cases this methods avoids having to call the

-	 * potential more costly <code>getChildren</code> method.

-	 * 

-	 * @return <code>true</code> if this container has at least one child 

-	 */

-	boolean hasChildren();

-

-	/**

-	 * Returns the children of this container.

-	 * If this container has no children an empty array is returned (not <code>null</code>).

-	 * 

-	 * @return the children of this container as an array

-	 */

-	IDiffElement[] getChildren();

-

-	/**

-	 * Adds the given child to this container.

-	 * If the child is already contained in this container, this method has no effect.

-	 *

-	 * @param child the child to be added to this container

-	 */

-	void add(IDiffElement child);

-	

-	/**

-	 * Removes the given child from this container.

-	 * If the container becomes empty it is removed from its container.

-	 * If the child is not contained in this container, this method has no effect.

-	 *

-	 * @param child the child to be removed from this container

-	 */

-	void removeToRoot(IDiffElement child);

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java
deleted file mode 100644
index 32e858a..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.compare.ITypedElement;

-

-/**

- * An <code>IDiffElement</code> is used in the <code>DiffTreeViewer</code>

- * to display the kind of change detected as the result of a two-way or three-way compare.

- * <p>

- * The base interface <code>ITypedElement</code> provides a name, a type, and an image.

- * <code>IDiffElement</code> adds API for maintaining a parent relationship.

- * <p>

- * <code>DiffTreeViewer</code> works on a tree of <code>IDiffElements</code>.

- * Leaf elements must implement the

- * <code>IDiffElement</code> interface, inner nodes the <code>IDiffContainer</code> interface.

- * <p>

- * <code>IDiffElement</code>s are typically created as the result of performing

- * a compare with the <code>Differencer</code>.

- * <p>

- * Clients may implement this interface, or use one of the standard implementations,

- * <code>DiffElement</code>, <code>DiffContainer</code>, or <code>DiffNode</code>.

- *

- * @see DiffTreeViewer

- * @see DiffElement

- * @see DiffContainer

- * @see DiffNode

- */

-public interface IDiffElement extends ITypedElement {

-	

-	/**

-	 * Returns the kind of difference as defined in <code>Differencer</code>.

-	 *

-	 * @return the kind of difference as defined in <code>Differencer</code>

-	 */

-	int getKind();

-

-	/**

-	 * Returns the parent of this element.

-	 * If the object is the root of a hierarchy <code>null</code> is returned.

-	 *

-	 * @return the parent of this element, or <code>null</code> if the element has no parent

-	 */

-	IDiffContainer getParent();

-

-	/**

-	 * Sets the parent of this element.

-	 *

-	 * @param parent the new parent of this element, or <code>null</code> if this

-	 *   element is to have no parent

-	 */

-	void setParent(IDiffContainer parent);

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java
deleted file mode 100644
index 6862653..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.util.Iterator;

-

-import org.eclipse.compare.ITypedElement;

-

-/**

- * Interface used to compare hierarchical structures.

- * It is used by the differencing engine.

- * <p>

- * Clients typically implement this interface in an adaptor class which 

- * wrappers the objects to be compared.

- *

- * @see org.eclipse.compare.ResourceNode

- * @see Differencer

- */

-public interface IStructureComparator {

-

-	/**

-	 * Returns an iterator for all children of this object or <code>null</code>

-	 * if there are no children.

-	 *

-	 * @return an array with all children of this object, or an empty array if there are no children

-	 */

-	Object[] getChildren();

-

-	/**

-	 * Returns whether some other object is "equal to" this one

-	 * with respect to a structural comparison. For example, when comparing

-	 * Java class methods, <code>equals</code> would return <code>true</code>

-	 * if two methods have the same signature (the argument names and the 

-	 * method body might differ).

-	 *

-	 * @param other the reference object with which to compare

-	 * @return <code>true</code> if this object is the same as the other argument; <code>false</code> otherwise

-	 * @see java.lang.Object#equals

-	 */

-	boolean equals(Object other);

-}

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java
deleted file mode 100644
index d3e9f3c..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.jface.text.IDocument;

-

-/**

- * For creating a hierarchical structure of <code>IStructureComparators</code> for a

- * given input object.

- * In addition, it provides methods for locating a path in the hierarchical structure

- * and to map a node of this structure back to the corresponding input object.

- * <p>

- * Structure creators are used in the following contexts:

- * <ul>

- * <li>

- * the <code>StructureDiffViewer</code> uses an <code>IStructureCreator</code> to

- * build two (or three) tree structures of its input elements (method <code>getStructure</code>).

- * These trees are then compared with each other by means of the differencing engine and displayed

- * with the <code>DiffTreeViewer</code>,

- * </li>

- * <li>

- * the <code>ReplaceWithEditionDialog</code> uses an <code>IStructureCreator</code>

- * to map a path back to a range of characters in the textual representation.

- * </li>

- * </ul>

- * A <code>IStructureCreator</code> provides methods for rewriting the tree produced by the differencing

- * engine to support "smart" structural differencing. E.g. certain patterns of pairs of "addition"

- * and "deletion" nodes can be detected as renames and merged into a single node.

- * </p>

- * <p>

- * Clients may implement this interface; there is no standard implementation.

- * </p>

- *

- * @see StructureDiffViewer

- * @see org.eclipse.compare.EditionSelectionDialog

- * @see Differencer

- */

-public interface IStructureCreator {

-

-	/**

-	 * Returns a descriptive name which can be used in the UI of the <code>StructureDiffViewer</code>.

-	 *

-	 * @return a descriptive name for this <code>IStructureCreator</code>

-	 */

-	String getName();

-

-	/**

-	 * Creates a tree structure consisting of <code>IStructureComparator</code>s

-	 * from the given object and returns its root object.

-	 * Implementing this method typically involves parsing the input object.

-	 * In case of an error (e.g. a parsing error) the value <code>null</code> is returned.

-	 *

-	 * @param input the object from which to create the tree of <code>IStructureComparator</code>

-	 * @return the root node of the structure or <code>null</code> in case of error

-	 */

-	IStructureComparator getStructure(Object input);

-

-	/**

-	 * Creates the single node specified by path from the given input object.

-	 * In case of an error (e.g. a parsing error) the value <code>null</code> is returned.

-	 * This method is similar to <code>getStructure</code> but in

-	 * contrast to <code>getStructure</code> only a single node without any children must be returned.

-	 * This method is used in the <code>ReplaceWithEditionDialog</code> to locate a sub element

-	 * (e.g. a method) within an input object (e.g. a file containing source code).

-	 * <p>

-	 * One (not optimized) approach to implement this method is calling <code>getStructure(input)</code>

-	 * to build the full tree, and then finding that node within the tree that is specified

-	 * by <code>path</code>.

-	 * <p>

-	 * The syntax of <code>path</code> is not specified, because it is treated by the compare subsystem

-	 * as an opaque entity and is not further interpreted. Clients using this functionality

-	 * will pass a value of <code>path</code> to the <code>selectEdition</code>

-	 * method of <code>ReplaceWithEditionDialog</code> and will receive this value unchanged

-	 * as an argument to <code>locate</code>.

-	 *

-	 * @param path specifies a sub object within the input object

-	 * @param input the object from which to create the <code>IStructureComparator</code>

-	 * @return the single node specified by <code>path</code> or <code>null</code>

-	 *

-	 * @see org.eclipse.compare.EditionSelectionDialog#selectEdition

-	 */

-	IStructureComparator locate(Object path, Object input);

-

-	/**

-	 * Returns the contents of the given node as a string for the purpose

-	 * of performing a content comparison only (that is the string will not be visible in the UI).

-	 * If <code>ignoreWhitespace</code> is <code>true</code> all character sequences considered

-	 * whitespace should be removed from the returned string.

-	 *

-	 * @param node the node for which to return a string representation

-	 * @param ignoreWhitespace if <code>true</code> the returned string should not contain whitespace

-	 * @return the string contents of the given node

-	 */

-	String getContents(Object node, boolean ignoreWhitespace);

-

-	/**

-	 * FIXME: need better name?

-	 * Called whenever a copy operation has been performed on a tree node.

-	 *

-	 * @param node the node for which to save the new content

-	 * @param input the object from which the structure tree was created in <code>getStructure</code>

-	 */

-	void save(IStructureComparator node, Object input);

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java
deleted file mode 100644
index 58f6065..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.swt.events.DisposeEvent;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.util.PropertyChangeEvent;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.*;

-

-

-/**

- * A diff tree viewer that can be configured with a <code>IStructureCreator</code>

- * to retrieve a hierarchical structure from the input object (an <code>ICompareInput</code>)

- * and perform a two-way or three-way compare on it.

- * <p>

- * This <code>DiffTreeViewer</code> supports the so called "smart" mode of the structure creator

- * by installing a button in the viewer's pane title bar.

- * <p>

- * This class may be instantiated; it is not intended to be subclassed outside

- * this package.

- * </p>

- *

- * @see IStructureCreator

- * @see ICompareInput

- */

-public class StructureDiffViewer extends DiffTreeViewer {

-		

-	private Differencer fDifferencer;

-	private boolean fThreeWay= false;

-	

-	private ITypedElement fAncestorInput;

-	private ITypedElement fLeftInput;

-	private ITypedElement fRightInput;

-	

-	private IStructureComparator fAncestorStructure;

-	private IStructureComparator fLeftStructure;

-	private IStructureComparator fRightStructure;

-	

-	private IStructureCreator fStructureCreator;

-	private IDiffContainer fRoot;

-	private IContentChangeListener fContentChangedListener;

-	private ICompareInputChangeListener fThreeWayInputChangedListener;

-	private CompareViewerSwitchingPane fParent;

-		

-	/**

-	 * Creates a new viewer for the given SWT tree control with the specified configuration.

-	 *

-	 * @param tree the tree control

-	 * @param configuration the configuration for this viewer

-	 */

-	public StructureDiffViewer(Tree tree, CompareConfiguration configuration) {

-		super(tree, configuration);

-		Composite c= tree.getParent();

-		if (c instanceof CompareViewerSwitchingPane)

-			fParent= (CompareViewerSwitchingPane) c;

-		initialize();

-	}

-	

-	/**

-	 * Creates a new viewer under the given SWT parent with the specified configuration.

-	 *

-	 * @param parent the SWT control under which to create the viewer

-	 * @param configuration the configuration for this viewer

-	 */

-	public StructureDiffViewer(Composite parent, CompareConfiguration configuration) {

-		super(parent, configuration);

-		if (parent instanceof CompareViewerSwitchingPane)

-			fParent= (CompareViewerSwitchingPane) parent;

-		initialize();

-	}

-	

-	private void initialize() {

-		

-		setAutoExpandLevel(3);

-		

-		fContentChangedListener= new IContentChangeListener() {

-			public void contentChanged(IContentChangeNotifier changed) {

-				StructureDiffViewer.this.contentChanged(changed);

-			}

-		};

-		fThreeWayInputChangedListener= new ICompareInputChangeListener() {

-			public void compareInputChanged(ICompareInput input) {

-				StructureDiffViewer.this.compareInputChanged(input);

-			}

-		};

-	}

-	

-	/**

-	 * Configures the <code>StructureDiffViewer</code> with a structure creator.

-	 * The structure creator is used to create a hierarchical structure

-	 * for each side of the viewer's input element of type <code>ICompareInput</code>.

-	 * <p>

-	 * If the structure creator's <code>canRewriteTree</code> returns <code>true</code>

-	 * the "smart" button in the viewer's pane control bar is enabled.

-	 *

-	 * @param structureCreator the new structure creator

-	 */

-	public void setStructureCreator(IStructureCreator structureCreator) {

-		if (fStructureCreator != structureCreator) {

-			fStructureCreator= structureCreator;

-			Control tree= getControl();

-			if (tree != null && !tree.isDisposed())

-				tree.setData(CompareUI.COMPARE_VIEWER_TITLE, getTitle());

-		}

-	}

-	

-	/**

-	 * Returns the structure creator or <code>null</code> if no

-	 * structure creator has been set with <code>setStructureCreator</code>.

-	 *

-	 * @return the structure creator or <code>null</code>

-	 */

-	public IStructureCreator getStructureCreator() {

-		return fStructureCreator;

-	}

-	

-	/**

-	 * Reimplemented to get the descriptive title for this viewer from the <code>IStructureCreator</code>.

-	 */

-	public String getTitle() {

-		if (fStructureCreator != null)

-			return fStructureCreator.getName();

-		return super.getTitle();

-	}

-	

-	/**

-	 * Overridden because the input of this viewer is not identical to the root of the tree.

-	 * The tree's root is a IDiffContainer that was returned from the method <code>diff</code>.

-	 * 

-	 * @return the root of the diff tree produced by method <code>diff</code>

-	 */

-	protected Object getRoot() {

-		return fRoot;

-	}

-	

-	/**

-	 * Overridden to create the comparable structures from the input object

-	 * and to feed them through the differencing engine. Note: for this viewer

-	 * the value from <code>getInput</code> is not identical to <code>getRoot</code>.

-	 */

-	protected void inputChanged(Object input, Object oldInput) {

-		if (input instanceof ICompareInput) {

-			compareInputChanged((ICompareInput) input);

-			if (input != oldInput)

-				navigate(true);

-		}

-	}

-	

-	/* (non Javadoc)

-	 * Overridden to unregister all listeners.

-	 */

-	protected void handleDispose(DisposeEvent event) {

-		

-		compareInputChanged(null);

-		

-		fContentChangedListener= null;

-		fThreeWayInputChangedListener= null;

-				

-		super.handleDispose(event);

-	}

-	

-	/**

-	 * Recreates the comparable structures for the input sides.

-	 */

-	protected void compareInputChanged(ICompareInput input) {

-		ITypedElement t= null;

-		boolean changed= false;

-		

-		if (input != null)

-			t= input.getAncestor();

-			

-		fThreeWay= (t != null);

-		

-		if (t != fAncestorInput) {

-			if (fAncestorInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fAncestorInput).removeContentChangeListener(fContentChangedListener);

-			fAncestorInput= t;

-			if (fAncestorInput != null) {

-				fAncestorStructure= fStructureCreator.getStructure(fAncestorInput);

-				changed= true;

-			} else

-				fAncestorStructure= null;

-			if (fAncestorInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fAncestorInput).addContentChangeListener(fContentChangedListener);

-		}

-		

-		if (input != null)

-			t= input.getLeft();

-		if (t != fLeftInput) {

-			if (fLeftInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fLeftInput).removeContentChangeListener(fContentChangedListener);

-			fLeftInput= t;

-			if (fLeftInput != null) {

-				fLeftStructure= fStructureCreator.getStructure(fLeftInput);

-				changed= true;

-			} else

-				fLeftStructure= null;

-			if (fLeftInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fLeftInput).addContentChangeListener(fContentChangedListener);

-		}

-		

-		if (input != null)

-			t= input.getRight();

-		if (t != fRightInput) {

-			if (fRightInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fRightInput).removeContentChangeListener(fContentChangedListener);

-			fRightInput= t;

-			if (fRightInput != null) {

-				fRightStructure= fStructureCreator.getStructure(fRightInput);

-				changed= true;

-			} else

-				fRightStructure= null;

-			if (fRightInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fRightInput).addContentChangeListener(fContentChangedListener);

-		}

-		

-		if (changed)

-			diff();

-	}

-	

-	/**

-	 * Calls <code>diff</code> whenever the byte contents changes.

-	 */

-	protected void contentChanged(IContentChangeNotifier changed) {

-		

-		if (fStructureCreator == null)

-			return;

-			

-		if (changed != null) {

-			if (changed == fAncestorInput) {

-				fAncestorStructure= fStructureCreator.getStructure(fAncestorInput);

-			} else if (changed == fLeftInput) {

-				fLeftStructure= fStructureCreator.getStructure(fLeftInput);

-			} else if (changed == fRightInput) {

-				fRightStructure= fStructureCreator.getStructure(fRightInput);

-			} else

-				return;

-		} else {

-			fAncestorStructure= fStructureCreator.getStructure(fAncestorInput);

-			fLeftStructure= fStructureCreator.getStructure(fLeftInput);

-			fRightStructure= fStructureCreator.getStructure(fRightInput);

-		}

-		

-		diff();

-	}

-

-	protected void preDiffHook(IStructureComparator ancestor, IStructureComparator left, IStructureComparator right) {

-		// we do nothing here

-	}

-	

-	/**

-	 * Runs the difference engine and refreshes the tree.

-	 */

-	protected void diff() {

-		

-		preDiffHook(fAncestorStructure, fLeftStructure, fRightStructure);

-							

-		String message= null;

-		

-		if ((fThreeWay && fAncestorStructure == null) || fLeftStructure == null || fRightStructure == null) {

-			// could not get structure of one (or more) of the legs

-			fRoot= null;

-			message= CompareMessages.getString("StructureDiffViewer.StructureError");	//$NON-NLS-1$

-			

-		} else {	// calculate difference of the two (or three) structures

-

-			if (fDifferencer == null)

-				fDifferencer= new Differencer() {

-					protected boolean contentsEqual(Object o1, Object o2) {

-						return StructureDiffViewer.this.contentsEqual(o1, o2);

-					}

-					protected Object visit(Object data, int result, Object ancestor, Object left, Object right) {

-						Object o= super.visit(data, result, ancestor, left, right);

-						if (fLeftIsLocal && o instanceof DiffNode)

-							((DiffNode)o).swapSides(fLeftIsLocal);

-						return o;

-					}

-				};

-			

-			fRoot= (IDiffContainer) fDifferencer.findDifferences(fThreeWay, null, null,

-					fAncestorStructure, fLeftStructure, fRightStructure);

-					

-			if (fRoot == null || fRoot.getChildren().length == 0) {

-				message= CompareMessages.getString("StructureDiffViewer.NoStructuralDifferences");	//$NON-NLS-1$

-			} else {

-				postDiffHook(fDifferencer, fRoot);

-			}

-		}

-		if (fParent != null)

-			fParent.setTitleArgument(message);

-			

-		refresh(getRoot());

-	}

-	

-	protected void postDiffHook(Differencer differencer, IDiffContainer root) {

-		// we do nothing here

-	}

-	

-	/**

-	 * Performs a byte compare on the given objects.

-	 * Called from the difference engine.

-	 * Returns <code>null</code> if no structure creator has been set.

-	 */

-	private boolean contentsEqual(Object o1, Object o2) {

-		if (fStructureCreator != null) {

-			boolean ignoreWhiteSpace= Utilities.getBoolean(getCompareConfiguration(), CompareConfiguration.IGNORE_WHITESPACE, false);		

-			String s1= fStructureCreator.getContents(o1, ignoreWhiteSpace);

-			String s2= fStructureCreator.getContents(o2, ignoreWhiteSpace);

-			if (s1 == null || s2 == null)

-				return false;

-			return s1.equals(s2);

-		}

-		return false;

-	}

-	

-	/**

-	 * Tracks property changes of the configuration object.

-	 * Clients may override to track their own property changes.

-	 * In this case they must call the inherited method.

-	 */

-	protected void propertyChange(PropertyChangeEvent event) {

-		String key= event.getProperty();

-		if (key.equals(CompareConfiguration.IGNORE_WHITESPACE))

-			diff();

-		else

-			super.propertyChange(event);

-	}

-		

-	/**

-	 * Overridden to call the <code>save</code> method on the structure creator after

-	 * nodes have been copied from one side to the other side of an 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

-	 */

-	protected void copySelected(boolean leftToRight) {

-		super.copySelected(leftToRight);

-		

-		if (fStructureCreator != null)

-			fStructureCreator.save(

-							leftToRight ? fRightStructure : fLeftStructure,

-							leftToRight ? fRightInput : fLeftInput);

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html b/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html
deleted file mode 100644
index b0cc1b3..0000000
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html
+++ /dev/null
@@ -1,50 +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="Author" content="IBM">

-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">

-   <title>Package-level Javadoc</title>

-</head>

-<body>

-Provides support for finding and displaying the differences

-between hierarchically structured data.

-<h2>

-Package Specification</h2>

-The class <tt>Differencer</tt> is a differencing engine for hierarchically

-structured data. It takes two or three inputs and performs a two-way or

-three-way compare on them.

-<p>If the input elements to the differencing engine implement the <tt>IStructureComparator</tt>

-interface the engine recursively applies itself&nbsp; to the children of

-the input element. Leaf elements must implement the <tt>IStreamContentAccessor</tt>

-interface (see package <tt>org.eclipse.compare</tt>) so that the

-differencer can perform a bytewise comparison on them.

-<p>By default the differencing engine returns the result of the compare

-as a tree of <tt>DiffNode</tt> objects. Every <tt>DiffNode</tt> describes

-the changes among the two or three inputs.

-<p>A tree of <tt>DiffNodes</tt> can be displayed in a <tt>DiffTreeViewer</tt>.

-The <tt>DiffTreeViewer</tt> requires that inner nodes of the tree implement

-the <tt>IDiffContainer</tt> interface and leafs the <tt>IDiffElement</tt>

-interface.

-<p>The typical steps to compare hierarchically structured data and to display

-the differences would be to:

-<ul>

-<li>

-map the input data into a tree of <tt>IStructureComparator</tt> and <tt>IStreamContentAccessor</tt>s,</li>

-

-<li>

-perform the compare operation by means of the <tt>Differencer</tt>, and</li>

-

-<li>

-feed the differencing result into the <tt>DiffTreeViewer</tt>.</li>

-

-</ul>

-The <tt>StructureDiffViewer</tt> is a specialized <tt>DiffTreeViewer</tt>

-that automates the three steps from above. It takes a single input object

-of type <tt>ICompareInput</tt> from which it retrieves the two or three

-input elements to compare. Then it uses a <tt>IStructureCreator</tt> to

-extract a tree of <tt>IStructureComparator</tt> and <tt>IStreamContentAccessor</tt>

-from them. These trees are then compared with the differencing engine and

-the result is displayed in the tree viewer.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/doc/hglegal.htm b/bundles/org.eclipse.compare/doc/hglegal.htm
deleted file mode 100644
index b071dbd..0000000
--- a/bundles/org.eclipse.compare/doc/hglegal.htm
+++ /dev/null
@@ -1,14 +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.73 [en] (Win98; U) [Netscape]">

-   <title>Legal Notices</title>

-</head>

-<body>

-

-<h3>

-<a NAME="Notices"></a>Notices</h3>

-(c) Copyright IBM Corp. 2000, 2001. All Rights Reserved.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/doc/ngibmcpy.gif b/bundles/org.eclipse.compare/doc/ngibmcpy.gif
deleted file mode 100644
index 360f8e9..0000000
--- a/bundles/org.eclipse.compare/doc/ngibmcpy.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/doc/org_eclipse_compare.html b/bundles/org.eclipse.compare/doc/org_eclipse_compare.html
deleted file mode 100644
index c0e152c..0000000
--- a/bundles/org.eclipse.compare/doc/org_eclipse_compare.html
+++ /dev/null
@@ -1,43 +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]">

-   <title>Compare Infrastructure Extension Points</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-IBM Eclipse Platform Compare</h1></center>

-This document lists all of the extension points that the compare plug-in

-makes available to tool developers.

-<p>All XML sub-elements defined in the individual extension point documents

-may appear more than once inside an extension element. For example, an

-<tt>org.eclipse.compare.contentMergeViewers</tt> extension may contain

-several instances of <tt>viewer</tt> elements. Although making one extension

-per sub-element is not technically incorrect, we recommend grouping for

-consistent style. It can also improve platform startup time because there

-will be fewer extensions to process.

-<br>

-<hr WIDTH="100%">

-<h1>

-Extension Points</h1>

-The following extension points can be used to extend the capabilities of

-the compare infrastructure:

-<ul>

-<li>

-<a href="org_eclipse_compare_contentMergeViewers.html">org.eclipse.compare.contentMergeViewers</a></li>

-

-<li>

-<a href="org_eclipse_compare_contentViewers.html">org.eclipse.compare.contentViewers</a></li>

-

-<li>

-<a href="org_eclipse_compare_structureMergeViewers.html">org.eclipse.compare.structureMergeViewers</a></li>

-

-<li>

-<a href="org_eclipse_compare_structureCreators.html">org.eclipse.compare.structureCreators</a></li>

-</ul>

-<a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html b/bundles/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html
deleted file mode 100644
index aebc43e..0000000
--- a/bundles/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html
+++ /dev/null
@@ -1,55 +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]">

-   <title>Compare Extension Points: contentMergeViewers</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-ContentMergeViewers</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.compare.contentMergeViewers

-<p><b><i>Description: </i></b>This extension point allows to plug in a

-compare/merge viewer for specific content types. The viewer must extend

-<tt>org.eclipse.jface.viewers.Viewer</tt>.

-<br>However since viewers don't have a default constructor the extension

-point must implement a factory object for viewers: the interface <tt>org.eclipse.compare.IViewerCreator</tt>.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT viewer EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST viewer</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-<ul>

-<li>

-<b>id</b> - a unique identifier that can be used to reference the viewer</li>

-

-<li>

-<b>class</b> - name of a class that implements a factory for the content

-merge viewer and implements <tt>org.eclipse.compare.IViewerCreator</tt></li>

-

-<li>

-<b>extensions </b>- a comma separated list of file extensions e.g . "java,

-gif"</li>

-</ul>

-<b><i>Examples:</i></b>

-<br>The following is an example of compare/merge viewer for text files

-(extension "txt"):

-<p>&lt;extension point = "org.eclipse.compare.contentMergeViewers">

-<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;viewer

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="org.eclipse.compare.contentmergeviewer.TextMergeViewer"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.eclipse.compare.internal.TextMergeViewerCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions="txt"

-<br>&nbsp;&nbsp;&nbsp; />

-<br>&lt;/extension>

-<p><b><i>Supplied Implementation:</i></b>

-<br>The Compare UI plugin defines content viewers for text, binary contents,

-and images.

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html b/bundles/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html
deleted file mode 100644
index 1a877ed..0000000
--- a/bundles/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html
+++ /dev/null
@@ -1,56 +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]">

-   <title>Compare Extension Points: contentViewers</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-ContentViewers</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.compare.contentViewers

-<p><b><i>Description: </i></b>This extension point allows to plug in a

-viewer for specific content types. These viewers are used in the EditionSelectionDialog

-when presenting an edition of a resource or a subsection thereof. The viewer

-must extend

-<tt>org.eclipse.jface.viewers.Viewer</tt> and must accept a

-viewer input of type <tt>IStreamContentAccessor</tt>.

-<br>However since viewers don't have a default constructor the extension

-point must implement a factory object for viewers: the interface <tt>org.eclipse.compare.IViewerCreator</tt>.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT viewer EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST viewer</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-<ul>

-<li>

-<b>id</b> - a unique identifier that can be used to reference the viewer</li>

-

-<li>

-<b>class</b> - name of a class that implements a factory for the content

-merge viewer and implements <tt>org.eclipse.compare.IViewerCreator</tt></li>

-

-<li>

-<b>extensions </b>- a comma separated list of file extensions e.g . "java,

-gif"</li>

-</ul>

-<b><i>Examples:</i></b>

-<br>The following is an example of a viewer for text files (extension "txt"):

-<p>&lt;extension point = "org.eclipse.compare.contentViewers">

-<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;viewer

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="org.eclipse.compare.internal.TextViewer"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.eclipse.compare.internal.TextViewerCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions="txt"

-<br>&nbsp;&nbsp;&nbsp; />

-<br>&lt;/extension>

-<p><b><i>Supplied Implementation:</i></b>

-<br>The Compare UI plugin defines content viewers for text and images.

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html b/bundles/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html
deleted file mode 100644
index d48dd73..0000000
--- a/bundles/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html
+++ /dev/null
@@ -1,53 +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]">

-   <title>Compare Extension Points: structureCreators</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-StructureCreators</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.compare.structureCreators

-<p><b><i>Description: </i></b>This extension point allows to plug in an

-object that produces a tree structure of <tt>IStructureComparator</tt>

-for a given content.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT structureCreator EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST structureCreator</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-<ul>

-<li>

-<b>id</b> - a unique identifier that can be used to reference the structure

-creator</li>

-

-<li>

-<b>class</b> - name of a class that implements the strcuture creator and

-implements <tt>org.eclipse.compare.structuremergeviewer.IStructureComparator</tt></li>

-

-<li>

-<b>extensions </b>- a comma separated list of file extensions e.g . "java,

-properties"</li>

-</ul>

-<b><i>Examples:</i></b>

-<br>The following is an example of a structure creator for java files (extension

-"java"):

-<p>&lt;extension point = "org.eclipse.compare.structureCreators">

-<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;structureCreator

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="org.eclipse.compare.JavaStructureCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.eclipse.compare.JavaStructureCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions="java"

-<br>&nbsp;&nbsp;&nbsp; />

-<br>&lt;/extension>

-<p><b><i>Supplied Implementation:</i></b>

-<br>The Compare UI plugin defines a structure creator for zip archives.

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html b/bundles/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html
deleted file mode 100644
index 187fc44..0000000
--- a/bundles/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html
+++ /dev/null
@@ -1,53 +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]">

-   <title>Compare Extension Points: structureMergeViewers</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-StructureMergeViewers</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.compare.structureMergeViewers

-<p><b><i>Description: </i></b>This extension point allows to plug in a

-compare/merge viewer for structured content. The viewer must extend <tt>org.eclipse.jface.viewers.Viewer</tt>.

-However since viewers don't have a default constructor the extension point

-must implement a factory object for viewers: the interface <tt>org.eclipse.compare.IViewerCreator</tt>.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT viewer EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST viewer</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-<ul>

-<li>

-<b>id</b> - a unique identifier that can be used to reference the viewer</li>

-

-<li>

-<b>class</b> - name of a class that implements a factory for the strcuture

-merge viewer and implements <tt>org.eclipse.compare.IViewerCreator</tt></li>

-

-<li>

-<b>extensions </b>- a comma separated list of file extensions e.g . "zip,

-jar"</li>

-</ul>

-<b><i>Examples:</i></b>

-<br>The following is an example of compare/merge viewer for zip files (extension

-"zip"):

-<p>&lt;extension point = "org.eclipse.compare.structureMergeViewers">

-<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;viewer

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="org.eclipse.compare.ZipCompareViewer"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.eclipse.compare.ZipCompareViewerCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions="zip"

-<br>&nbsp;&nbsp;&nbsp; />

-<br>&lt;/extension>

-<p><b><i>Supplied Implementation:</i></b>

-<br>The Compare UI plugin defines a structure compare viewer for zip archives.

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif b/bundles/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif
deleted file mode 100644
index 0088c97..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif b/bundles/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif
deleted file mode 100644
index 6c83c45..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif b/bundles/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif
deleted file mode 100644
index a3a444a..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif b/bundles/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif
deleted file mode 100644
index 706dc02..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif b/bundles/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif
deleted file mode 100644
index b95e26a..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/next_nav.gif b/bundles/org.eclipse.compare/icons/full/clcl16/next_nav.gif
deleted file mode 100644
index 8392f33..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/next_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/prev_nav.gif b/bundles/org.eclipse.compare/icons/full/clcl16/prev_nav.gif
deleted file mode 100644
index 9b278e6..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/prev_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif b/bundles/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif
deleted file mode 100644
index c2a47b6..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif b/bundles/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif
deleted file mode 100644
index 3aabbce..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif b/bundles/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif
deleted file mode 100644
index 2045dae..0000000
--- a/bundles/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif b/bundles/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif
deleted file mode 100644
index ecde52e..0000000
--- a/bundles/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif b/bundles/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif
deleted file mode 100644
index 097ecdd..0000000
--- a/bundles/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/cview16/compare_view.gif b/bundles/org.eclipse.compare/icons/full/cview16/compare_view.gif
deleted file mode 100644
index 41800a0..0000000
--- a/bundles/org.eclipse.compare/icons/full/cview16/compare_view.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif
deleted file mode 100644
index 6e00dee..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif
deleted file mode 100644
index cb11ac9..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif
deleted file mode 100644
index 202b041..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif
deleted file mode 100644
index 4e9a3eb..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif
deleted file mode 100644
index e84103f..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/next_nav.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/next_nav.gif
deleted file mode 100644
index 6cbeced..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/next_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif
deleted file mode 100644
index a3441a0..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif
deleted file mode 100644
index 6f55d90..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif
deleted file mode 100644
index 2a8541c..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif b/bundles/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif
deleted file mode 100644
index ecab864..0000000
--- a/bundles/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif b/bundles/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif
deleted file mode 100644
index c76fcc7..0000000
--- a/bundles/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif b/bundles/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif
deleted file mode 100644
index 55147cc..0000000
--- a/bundles/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif b/bundles/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif
deleted file mode 100644
index 3ce77c8..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif b/bundles/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif
deleted file mode 100644
index d9f5900..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif b/bundles/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif
deleted file mode 100644
index 61289f1..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif b/bundles/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif
deleted file mode 100644
index 4fdde61..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif b/bundles/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif
deleted file mode 100644
index feb14bf..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/next_nav.gif b/bundles/org.eclipse.compare/icons/full/elcl16/next_nav.gif
deleted file mode 100644
index 03b7af3..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/next_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/prev_nav.gif b/bundles/org.eclipse.compare/icons/full/elcl16/prev_nav.gif
deleted file mode 100644
index dd65c52..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/prev_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif b/bundles/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif
deleted file mode 100644
index e0a262e..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif b/bundles/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif
deleted file mode 100644
index 3e45390..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif b/bundles/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif
deleted file mode 100644
index 4c25322..0000000
--- a/bundles/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/etool16/conflict_edit.gif b/bundles/org.eclipse.compare/icons/full/etool16/conflict_edit.gif
deleted file mode 100644
index b4451ec..0000000
--- a/bundles/org.eclipse.compare/icons/full/etool16/conflict_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif b/bundles/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif
deleted file mode 100644
index f816c9e..0000000
--- a/bundles/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/eview16/compare_view.gif b/bundles/org.eclipse.compare/icons/full/eview16/compare_view.gif
deleted file mode 100644
index 1030b6e..0000000
--- a/bundles/org.eclipse.compare/icons/full/eview16/compare_view.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/obj16/day_obj.gif b/bundles/org.eclipse.compare/icons/full/obj16/day_obj.gif
deleted file mode 100644
index 96aae05..0000000
--- a/bundles/org.eclipse.compare/icons/full/obj16/day_obj.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/obj16/resource_obj.gif b/bundles/org.eclipse.compare/icons/full/obj16/resource_obj.gif
deleted file mode 100644
index d1e679e..0000000
--- a/bundles/org.eclipse.compare/icons/full/obj16/resource_obj.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/add_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/add_ov.gif
deleted file mode 100644
index 2a81156..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/add_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/chg_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/chg_ov.gif
deleted file mode 100644
index 67b25c4..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/chg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif
deleted file mode 100644
index e049755..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif
deleted file mode 100644
index 020fc54..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif
deleted file mode 100644
index 39ed511..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/del_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/del_ov.gif
deleted file mode 100644
index 675c20f..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/del_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/error_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/error_ov.gif
deleted file mode 100644
index 95e4db6..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/error_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif
deleted file mode 100644
index 0dc3ea8..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif
deleted file mode 100644
index f719405..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/indel_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/indel_ov.gif
deleted file mode 100644
index 3e107d2..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/indel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif
deleted file mode 100644
index 780da98..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif
deleted file mode 100644
index 4f6a316..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif
deleted file mode 100644
index ab48981..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif
deleted file mode 100644
index 14ba011..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif
deleted file mode 100644
index 0aca3c4..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif
deleted file mode 100644
index c377537..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif
deleted file mode 100644
index 11c2d5d..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif
deleted file mode 100644
index 704d706..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif b/bundles/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif
deleted file mode 100644
index 95ec301..0000000
--- a/bundles/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugin.properties b/bundles/org.eclipse.compare/plugin.properties
deleted file mode 100644
index cdfca29..0000000
--- a/bundles/org.eclipse.compare/plugin.properties
+++ /dev/null
@@ -1,111 +0,0 @@
-#########################################

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-#########################################

-#

-# Resource strings for Compare Plug-in

-#

-pluginName= Compare Support

-

-#

-# Extension point names

-#

-structureCreators= Structure Creator

-structureMergeViewers= Structure Merge Viewer

-contentMergeViewers= Content Merge Viewer

-contentViewers= Content Viewer

-

-#

-# CompareUIPlugin

-#

-CompareUIPlugin.dialogTitle=Compare

-CompareUIPlugin.noActiveWorkbenchPage=Can't find active workbench page

-CompareUIPlugin.compareFailed=Compare Failed

-CompareUIPlugin.openEditorError=Problems Opening Editor

-CompareUIPlugin.noDifferences=There are no differences between the selected inputs.

-

-#

-# Compare Editor

-#

-defaultCompareEditor.name= Default Compare Editor

-CompareEditor.saveError.title= Save Error

-CompareEditor.cantSaveError= Can''t save contents ({0})

-CompareEditor.invalidInput=Invalid Input: Must be CompareEditorInput

-

-#

-# Context menu & actions

-#

-CompareWithMenu.label= Comp&are With

-

-CompareWithEachOtherAction.label= &Each Other

-CompareWithEachOtherAction.tooltip= Compare the Selected Resources

-

-CompareWithPatchAction.label= Patch...

-CompareWithPatchAction.tooltip= Compare the Selected Resource with a Patch

-

-CompareWithHistoryAction.label= &Local History...

-CompareWithHistoryAction.tooltip= Compare the Selected Resource with Local History

-

-ReplaceWithMenu.label= Rep&lace With

-

-ReplaceFromHistoryAction.label= &Local History...

-ReplaceFromHistoryAction.tooltip= Replace the Selected Resource with Local History

-

-ReplaceWithPreviousFromHistoryAction.label= &Previous From Local History

-ReplaceWithPreviousFromHistoryAction.tooltip= Replace the Selected Resource with the Previous from Local History

-

-#

-# Preference Page

-#

-ComparePreferencePage.name= Compare Viewers

-ComparePreferences.initiallyShowAncestorPane.label= Show A&ncestor Pane Initially

-ComparePreferences.showPseudoConflicts.label= Show &Pseudo Conflicts

-ComparePreferences.synchronizeScrolling.label= Synchronize &Scrolling Between Panes in Compare/Merge Viewers

-ComparePreferences.textFont.label= Text Font:

-

-#

-# Toolbar actions

-#

-action.IgnoreWhiteSpace.label=Ignore White Space

-action.IgnoreWhiteSpace.tooltip=Ignore White Space Where Applicable

-action.IgnoreWhiteSpace.image=etool16/ignorews_edit.gif

-

-action.Next.label=Next Difference

-action.Next.tooltip=Go To Next Difference  Ctrl+E

-action.Next.image=elcl16/next_nav.gif

-

-action.Previous.label=Previous Difference

-action.Previous.tooltip=Go To Previous Difference  Ctrl+Shift+E

-action.Previous.image=elcl16/prev_nav.gif

-

-#

-# Built in Structure Creators

-#

-ZipStructureCreator.name=Zip Archive Compare

-

-#

-# Compare Dialog

-#

-CompareDialog.commit.label=Commit

-CompareDialog.saveErrorTitle=Save Error 

-CompareDialog.saveErrorMessage=Can't save

-

-#

-# Compare With Each Other

-#

-ResourceCompare.taskName=Operation in Progress...

-ResourceCompare.twoWay.title=Compare ({0}-{1})

-ResourceCompare.threeWay.title=Compare ({0}-{1}-{2})

-

-#

-# DiffTreeViewer & DiffNodes

-#

-DiffTreeViewer.title= Structure Compare

-DiffNode.noName= <no name>

-DiffNode.nameFormat= {0} / {1}

-

-#

-# Differencing engine

-#

-Differencer.progressFormat= Comparing {0}

-

diff --git a/bundles/org.eclipse.compare/plugin.xml b/bundles/org.eclipse.compare/plugin.xml
deleted file mode 100644
index e6a811f..0000000
--- a/bundles/org.eclipse.compare/plugin.xml
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-

-<!-- ======================================================================= -->

-<!-- Compare UI Plugin                                                       -->

-<!-- ======================================================================= -->

-

-<plugin

-	name="%pluginName"

-	id="org.eclipse.compare"

-	version="1.0"

-	provider-name="Object Technology International, Inc."

-	class="org.eclipse.compare.internal.CompareUIPlugin">

-

-	<requires>

-      <import plugin="org.eclipse.ui"/>

-      <import plugin="org.eclipse.core.resources"/>

-	</requires>

-

-	<runtime>

-		<library name="compare.jar" >

-			<export name="*"/>

-		</library>

-	</runtime>

-		   

-<!-- Compare extension point definitions -->

-

-	<extension-point

-		name="%structureCreators"

-		id="structureCreators"/>

-		

-	<extension-point

-		name="%structureMergeViewers"

-		id="structureMergeViewers"/>

-		

-	<extension-point

-		name="%contentMergeViewers"

-		id="contentMergeViewers"/>

-

-	<extension-point

-		name="%contentViewers"

-		id="contentViewers"/>

-

-<!-- Extensions -->

-

-	<extension point="org.eclipse.core.resources.markers"

-		id="rejectedPatchMarker" name="RejectedPatchMarker">

-		<super type="org.eclipse.core.resources.taskmarker"/>

-		<persistent value="true"/>

-	</extension>

-

-	<extension point="org.eclipse.ui.editors">

-    	<editor id="org.eclipse.compare.CompareEditor"

-      		name="%defaultCompareEditor.name"

- 			icon="icons/full/cview16/compare_view.gif"     	  

-      		class="org.eclipse.compare.internal.CompareEditor"

-			contributorClass="org.eclipse.compare.internal.CompareEditorContributor">

-    	</editor>

-	</extension>

-

-	<extension

-		point="org.eclipse.ui.preferencePages">

-		<page name="%ComparePreferencePage.name"

-			id="org.eclipse.compare.internal.ComparePreferencePage"

-			class="org.eclipse.compare.internal.ComparePreferencePage"

-			category= "org.eclipse.ui.preferencePages.Workbench">

-		</page>	

-	</extension>

-

-	<extension point="org.eclipse.ui.popupMenus">

-	

-		<objectContribution

-			id="org.eclipse.compare.CompareAction"

-			objectClass="org.eclipse.core.resources.IResource" adaptable="true">

-			<menu

-				id="replaceWithMenu"

-				path="additions"

-				label="%ReplaceWithMenu.label">

-				<separator name="replaceWithGroup"/>

-			</menu>

-			<menu

-				id="compareWithMenu"

-				path="additions"

-				label="%CompareWithMenu.label">

-				<separator name="compareWithGroup"/>

-			</menu>

-			<action

-				id="compareWithEachOther"

-				label="%CompareWithEachOtherAction.label"

-				tooltip="%CompareWithEachOtherAction.tooltip"

-				menubarPath="compareWithMenu/compareWithGroup"

-				enablesFor="2+"

-				class="org.eclipse.compare.internal.CompareAction">

-			</action>

-			<action

-				id="compareWithPatch"

-				label="%CompareWithPatchAction.label"

-				tooltip="%CompareWithPatchAction.tooltip"

-				menubarPath="compareWithMenu/compareWithGroup"

-				enablesFor="1"

-				class="org.eclipse.compare.internal.patch.CompareWithPatchAction">

-			</action>

-		</objectContribution>

-		

-		<objectContribution

-			id="org.eclipse.compare.ReplaceWithEditionAction"

-			objectClass="org.eclipse.core.resources.IFile" adaptable="true">

-			<menu

-				id="replaceWithMenu"

-				path="additions"

-				label="%ReplaceWithMenu.label">

-				<separator name="replaceWithGroup"/>

-			</menu>

-			<action

-				id="replaceFromHistory"

-				label="%ReplaceFromHistoryAction.label"

-				tooltip="%ReplaceFromHistoryAction.tooltip"

-				menubarPath="replaceWithMenu/replaceWithGroup"

-				enablesFor="1"

-				class="org.eclipse.compare.internal.ReplaceWithEditionAction">

-			</action>

-			<action

-				id="replaceWithPreviousFromHistory"

-				label="%ReplaceWithPreviousFromHistoryAction.label"

-				tooltip="%ReplaceWithPreviousFromHistoryAction.tooltip"

-				menubarPath="replaceWithMenu/replaceWithGroup"

-				enablesFor="1"

-				class="org.eclipse.compare.internal.ReplaceWithPreviousEditionAction">

-			</action>

-		</objectContribution>

-		

-		<objectContribution

-			id="org.eclipse.compare.CompareWithEditionAction"

-			objectClass="org.eclipse.core.resources.IFile" adaptable="true">

-			<menu

-				id="compareWithMenu"

-				path="additions"

-				label="%CompareWithMenu.label">

-				<separator name="compareWithGroup"/>

-			</menu>

-			<action

-				id="compareWithHistory"

-				label="%CompareWithHistoryAction.label"

-				tooltip="%CompareWithHistoryAction.tooltip"

-				menubarPath="compareWithMenu/compareWithGroup"

-				enablesFor="1"

-				class="org.eclipse.compare.internal.CompareWithEditionAction">

-			</action>

-		</objectContribution>

-			

-	</extension>

-

-	<extension point="org.eclipse.compare.structureCreators">

-		<structureCreator

-			extensions="zip"

-			class="org.eclipse.compare.ZipFileStructureCreator">

-		</structureCreator>

-	</extension>

-	

-	<extension point="org.eclipse.compare.contentMergeViewers">

-		<viewer

-			extensions="class,exe,dll,binary,zip,jar"

-			class="org.eclipse.compare.internal.BinaryCompareViewerCreator">

-		</viewer>

-		<viewer

-			extensions="txt"

-			class="org.eclipse.compare.internal.TextMergeViewerCreator">

-		</viewer>

-		<viewer

-			extensions="gif,jpg"

-			class="org.eclipse.compare.internal.ImageMergeViewerCreator">

-		</viewer>

-	</extension>

-	

-	<extension point="org.eclipse.compare.contentViewers">

-		<viewer

-			extensions="txt"

-			class="org.eclipse.compare.internal.TextViewerCreator">

-		</viewer>

-	</extension>

-

-</plugin>

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/.classpath b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/.classpath
deleted file mode 100644
index ce863b7..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/.classpath
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="src" path="compare"/>
-    <classpathentry kind="src" path="/org.eclipse.core.boot"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
-    <classpathentry kind="src" path="/org.eclipse.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.core.resources"/>
-    <classpathentry exported="true" kind="lib" path="compare.jar" sourcepath="/org.eclipse.compare/comparesrc.zip"/>
-    <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
-    <classpathentry kind="src" path="/org.eclipse.swt"/>
-    <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/.cvsignore b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/.cvsignore
deleted file mode 100644
index 092357e..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/.vcm_meta b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/.vcm_meta
deleted file mode 100644
index f6264c0..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/.vcm_meta
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<project-description>

-	<nature id="org.eclipse.jdt.core.javanature"/>

-	<reference project-name="org.eclipse.core.boot"/>

-	<reference project-name="org.eclipse.ui"/>

-	<reference project-name="org.eclipse.core.runtime"/>

-	<reference project-name="org.eclipse.core.resources"/>

-	<reference project-name="org.eclipse.swt"/>

-	<builder name="org.eclipse.jdt.core.javabuilder">

-	</builder>

-</project-description>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/about.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/about.html
deleted file mode 100644
index 768324e..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>

-<head>

-<title>About</title>

-<style type="text/css">

-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}

-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}

-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}

-code { font-family: "Courier New", Courier, mono; font-size: 10pt}

-sup { font-family: arial,helvetica,geneva; font-size: 10px}

-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}

-li { font-family: arial, helvetica, geneva; font-size: 10pt}

-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}

-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect(   ); margin-top: 5mm; margin-left: 3mm}

-</style>

-</head>

-<body lang="EN-US" link="blue" vlink="purple">

-<table border="0" cellspacing="5" cellpadding="2" width="100%" >

-  <tr> 

-    <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>

-  </tr>

-  <tr> 

-    <td> 

-<p>11th December, 2001</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

-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> &quot;CPL&quot;.  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>

-</td></tr></table>

-</body>

-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/build.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/build.properties
deleted file mode 100644
index c32a501..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-source.compare.jar = compare/

-bin.includes = icons/,\

-               plugin.xml,\

-               *.jar,\

-               plugin.properties,\

-               notice.html,\

-               about.html

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
deleted file mode 100644
index e70b5e1..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
+++ /dev/null
@@ -1,544 +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 February ??th 2002

-

-<h2>

-What's new in this drop</h2>

-Patch: for every rejected file a task marker is added

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9540">#9540</a>: Compare with patch: it should not be possible to check items that could not be applied<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9532">#9532</a>: Compare with patch: next disabled although clipboard specified<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input February 12th 2002

-

-<h2>

-What's new in this drop</h2>

-The patch wizard no longer opens a Compare Editor but applies the

-patch directly to the workspace. This will be the default.

-In the future the old behavior of opening the Compare Editor will be

-an additional option when finishing the wizard.

-<br>

-Patch wizard has a 'Reverse' option for applying a "reversed" patch.

-This option can be used to 'undo' a patch.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9153">#9153</a>: NPE when closing synchronize view<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9331">#9331</a>: NPE during compare with stream version<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6346">#6346</a>: Problems with Patch<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6727">#6727</a>: Patch: *.rej file must be saved in workspace<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7358">#7358</a>: Internal Error in Compare with Patch with new files<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input February 5th 2002

-

-<h2>

-What's new in this drop</h2>

-The structure compare pane opens when a resource is selected.

-In previous version a double click was required.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5063">#5063</a>: Should not have to double-click to open Structure Compare<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2602">#2602</a>: Compare FW accessibility issues (1GK79UB)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2707">#2707</a>: Merge viewer should ask for save before releasing (1GI9JXS)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2772">#2772</a>: DCR: Automatic structure compare (1GJ6EUY)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=3829">#3829</a>: Smart rename button enabled when no smartness is available (1GEUVHN)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=9089">#9089</a>: Local history - Selecting item in structured compare has no effect<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 29th 2002

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6271">#6271</a>: Can't tell which file is which in Compare browser<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2519">#2519</a>: next/prev arrows active when only one difference in compare (1GFIQX3)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=8363">#8363</a>: NPE comparing two resources in the navigator.<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2501">#2501</a>: Empty menu in compare browser (1GFBQKE)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2854">#2854</a>: Compare: Save code path problematic (1GJYGAX)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=8574">#8574</a>: Not structure compare in compare with local history<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 23th 2002

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=8089">#8089</a>: Replace from local history: parse error<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 22th 2002

-

-<h2>

-What's new in this drop</h2>

-Fixed an inconsistency in the binary compare viewer:

-info message didn't match +/-icon in the resource compare pane.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=3859">#3859</a>: replace from history does not work for elements with error (1GEYIZ6)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6177">#6177</a>: Double click action dangerous in 'Restore from Local History'<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7821">#7821</a>: Team 2.0 CVS synchronze bug <no-name> dirs..<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2773">#2773</a>: Java structure compare should give better indication when no changes (1GJ6ENE)<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 15th 2002

-

-<h2>

-What's new in this drop</h2>

-Fixed a problem in DiffNode.getName()and the DiffTreeViewer's label provider

-where the left and right half of a DiffNode label would be reversed because

-the "leftIsLocal" property of a CompareConfiguration wasn't obeyed.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=1893">#1893</a>: Compare Viewer doesn't scroll to last line (1GBB34N)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5839">#5839</a>: Usability: Initial diff is sometimes not horizontally aligned<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5325">#5325</a>: Compare always scroll the text pane to the extreme limit<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7048">#7048</a>: First element not selected<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2548">#2548</a>: Project compare should open viewing selected file (1GFMRP6)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2938">#2938</a>: Replace from local history should show busy cursor (1GKU0P3)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7594">#7594</a>: Menu entry "Replace with Previous" shouldn't have a "..."<br>

-Workaround added for:<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=7320">#7320</a>: Next diff scrolls when going into current diff<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input January 8th 2002

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-Added methods to CompareUI plugin for adding and removing aliases

-for the file extension to StructureCompareViewer mapping

-(addStructureViewerAlias, removeStructureViewerAlias).

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6828">#6828</a>: Support with replace with previous<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2396">#2396</a>: Save in compare editors needs progress bar (1GEYF58)<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5271">#5271</a>: JARs compared as source in release browser<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5121">#5121</a>: Replace with Previous (from local history)<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input December 11th 2001

-

-<h2>

-What's new in this drop</h2>

-Keyboard shortcuts for 'Goto next Difference' and 'Goto previous Difference'

-changed to Control-E and Control-Shift-E.<br>

-Better NLS support.<br>

-Updated file "about.html".

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input December 4th 2001

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=4381">#4381</a>: Replace from local histroy - workspace element included <br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse Build Input November 27th 2001

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=6298">#6298</a>: Replace with Local History: Workbench -> Workspace<br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5238">#5238</a>: Compare fails if takes more than 20 seconds<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 210, November 12th, 2001

-

-<h2>

-What's new in this drop</h2>

-First cut for 'rejected hunk' support.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-new classes CompareViewerPane and CompareViewerSwitchingPane<br>

-

-<h3>

-Other highlights</h3>

-Improved Patch wizard.<br>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5723">#5723</a>: Apply Patch dialog has no radio selection<br>

-

-<h2>

-Problem reports closed</h2>

-

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 207, November 1st, 2001

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5334">#5334: Internal errors using patch tool</a><br>

-<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5150">#5150: Compare with patch cannot read VCM's CVS patch file</a><br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 204, October 12th, 2001

-

-<h2>

-What's new in this drop</h2>

-First cut of patch support.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 202, September 27th, 2001

-

-<h2>

-What's new in this drop</h2>

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-1GKKUA5: ITPUI:WINNT - Severe: memory leak in sync view<br>

-1GKKGGS: ITPJUI:WIN2000 - (136) compares zips as source<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 201, September 21st, 2001

-

-<h2>

-What's new in this drop</h2>

-removed direction icon in TextMergeViewer for two-way compare

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-1GJURWJ: ITPUI:WIN2000 - Hebrew + Japanese: compare view defaults to binary<br>

-1GK0388: ITPJCORE:WIN2000 - replace with local history: selecting (workspace) deletes source<br>

-1GITG2V: ITPUI:WIN2000 - Comparing html files uses binary compare<br>

-1GJW2TP: ITPJUI:WIN2000 - java compare: why beep every time?<br>

-

-<h2>

-Problem reports closed</h2>

-

-<h1>

-<hr WIDTH="100%"></h1>

-Eclipse SDK Build 200, September 13th, 2001

-

-<h2>

-What's new in this drop</h2>

-If not specified otherwise Compare viewer font is taken from workbench text font<br>

-The shortcut for "Goto Next/Previous Difference" is Ctrl-D/Ctrl-Shift-D

-to avoid a clash with Ctrl-P of the Print command.

-

-<h3>

-API changes</h3>

-

-<h3>

-API Additions</h3>

-new method EditionSelectionDialog.setHideIdenticalEntries(boolean)<br>

-new method EditionSelectionDialog.setTargetIsRight(boolean)<br>

-new method EditionSelectionDialog.setAddMode(boolean)<br>

-new method CompareEditorInput.saveChanges(...)<br>

-new method TextMergeViewer.createLineComparator(IDocument document, IRegion region, boolean ignoreWhiteSpace)<br>

-

-<h3>

-Other highlights</h3>

-

-<h2>

-Known deficiencies</h2>

-

-<h2>

-Problem reports fixed</h2>

-1GFMLFB: ITPUI:WIN2000 - files that are out of sync with the file system appear as empty<br>

-1GG0ELM: ITPVCM:ALL - Local history displayed some of Today's items as Yesterday<br>

-1GGNKHN: ITPJUI:ALL - No progress during replace with local history<br>

-1GF2JNI: ITPUI:ALL - (minor)Compare failed title should be title case<br>

-1GHBPA1: ITPVCM:WINNT - Compare - next change arrow switches to wrong file<br>

-1GGQQH3: ITPJUI:WINNT - Compare hightlights a non-change instead of the change<br>

-1GI5DN9: ITPUI:WIN2000 - Conflicting token deletions don't show up in text compare viewer<br>

-1GI3KUR: ITPJUI:WIN2000 - Compare: double-click in versions list closes view<br>

-1GFFR4B: ITPUI:WIN98 - local history is misleading<br>

-1GBM0IL: ITPUI:WINNT - CompareEditorInput#save should throw CoreException<br>

-1GI99LE: ITPUI:ALL - Compare viewer does not show last line when horizontal scroll bar is present<br>

-1GBB34N: ITPJUI:WIN2000 - Compare Viewer doesn't scroll to last line<br>

-1GGZ8DO: ITPJUI:WIN - MergeViewer invalid selection range<br>

-1GIIBHM: ITPUI:WIN2000 - Problems when comparing zip files<br>

-1GIKKOZ: ITPUI:ALL - alt copyright text in html doc needs update<br>

-1GIURNB: ITPUI:ALL - property file of EditionSelectionDialog contains configuration options<br>

-1GIUS6L: ITPUI:ALL - TextMergeViewer uses deprecated Thread.stop()<br>

-1GI3HDZ: ITPJUI:ALL - Compare: conflicts with no ancestor does not show differences<br>

-1GEUX0D: ITPJUI:ALL - not state aware toolbar button in compare<br>

-

-<h2>

-Problem reports closed</h2>

-1GF9Y9C: ITPUI:WIN2000 - DCR: only get ancestor pane contents if pane is visible<br>

-

-<br>&nbsp;

-<a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corporation 2000" BORDER=0 height=12 width=195></a>

-<br>&nbsp;

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare.jar b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare.jar
deleted file mode 100644
index 83bc3a2..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java
deleted file mode 100644
index d64b122..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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() {

-	}

-		

-	/* (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) {

-			}

-		}

-		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/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
deleted file mode 100644
index 35d4147..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
+++ /dev/null
@@ -1,405 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.

-	 */

-	public static final String IGNORE_WHITESPACE= "IGNORE_WHITESPACE"; //$NON-NLS-1$

-	/**

-	 * Name of the show pseudo conflicts property.

-	 */

-	public static final String SHOW_PSEUDO_CONFLICTS= "SHOW_PSEUDO_CONFLICTS"; //$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$

-		

-//		ImageDescriptor tmp= fgImages[Differencer.ADDITION];

-//		fgImages[Differencer.ADDITION]= fgImages[Differencer.DELETION];

-//		fgImages[Differencer.DELETION]= tmp;

-	}

-

-	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.

-	 */

-	public CompareConfiguration() {

-		

-		setProperty("LEFT_IS_LOCAL", new Boolean(fLeftIsLocal)); //$NON-NLS-1$

-		

-		IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-		if (ps != null) {

-			boolean b= ps.getBoolean(ComparePreferencePage.INITIALLY_SHOW_ANCESTOR_PANE);

-			setProperty(ComparePreferencePage.INITIALLY_SHOW_ANCESTOR_PANE, new Boolean(b));

-		}

-	}

-

-	/**

-	 * 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

-	 */

-	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() {

-	}

-

-	/**

-	 * 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 propertyName the name of the property to set

-	 * @param value 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 propertyName 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/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
deleted file mode 100644
index efd6e33..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
+++ /dev/null
@@ -1,727 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare; 

-

-import java.lang.reflect.InvocationTargetException;

-

-import java.util.List;

-import java.util.ArrayList;

-import java.util.ResourceBundle;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.graphics.Point;

-import org.eclipse.swt.widgets.*;

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.core.resources.IResource;

-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.swt.custom.BusyIndicator;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.resource.ImageDescriptor;

-

-import org.eclipse.compare.contentmergeviewer.ContentMergeViewer;

-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 interface 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 {

-	

-	

-	/**

-	 * The name of the "dirty" property.

-	 */

-	public static final String DIRTY_STATE= "DIRTY_STATE"; //$NON-NLS-1$

-		

-	private static final String COMPARE_EDITOR_IMAGE_NAME= "cview16/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 ISelection fSelection2;

-	private Object fInput;

-	private String fTitle;

-	private ListenerList fListenerList= new ListenerList();

-	private CompareNavigator fNavigator;

-	private boolean fDirty= false;

-	private IPropertyChangeListener fDirtyStateListener;

-

-	private IgnoreWhiteSpaceAction fIgnoreWhitespace;

-	private ShowPseudoConflicts fShowPseudoConflicts;

-	

-	boolean fStructureCompareOnSingleClick= 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);

-		

-		ResourceBundle bundle= CompareUIPlugin.getResourceBundle();

-		fIgnoreWhitespace= new IgnoreWhiteSpaceAction(bundle, configuration);

-		fShowPseudoConflicts= new ShowPseudoConflicts(bundle, configuration);

-		

-		fDirtyStateListener= new IPropertyChangeListener() {

-			public void propertyChange(PropertyChangeEvent e) {

-				if (Utilities.getValue(e, false))

-					setDirty(true);

-			}

-		};

-	}

-	

-	private boolean structureCompareOnSingleClick() {

-		return fStructureCompareOnSingleClick;

-	}

-		

-	/* (non Javadoc)

-	 * see IAdaptable.getAdapter

-	 */

-	public Object getAdapter(Class adapter) {

-		if (CompareNavigator.class.equals(adapter)) {

-			if (fNavigator == null)

-				fNavigator= new CompareNavigator(

-					new CompareViewerSwitchingPane[] {

-						fStructureInputPane,

-						fStructurePane1,

-						fStructurePane2,

-						fContentInputPane

-					}

-				);

-			return fNavigator;

-		}

-		return null;

-	}

-	

-	/* (non Javadoc)

-	 * see IEditorInput.getImageDescriptor

-	 */

-	public ImageDescriptor getImageDescriptor() {

-		return null;

-	}

-	

-	/* (non Javadoc)

-	 * see IEditorInput.getToolTipText

-	 */

-	public String getToolTipText() {

-		return fTitle;

-	}

-	

-	/* (non Javadoc)

-	 * see IEditorInput.getName

-	 */

-	public String getName() {

-		return fTitle;

-	}

-			

-	/**

-	 * 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() {

-		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>.

-	 *

-	 * @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);

-			

-		final Splitter h= new Splitter(fComposite, SWT.HORIZONTAL);

-

-		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);

-				

-		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;

-			}

-		};

-		fComposite.setVisible(h, false);

-		fComposite.setVisible(fContentInputPane, true);

-		

-		fComposite.setWeights(new int[] { 30, 70 });

-		

-		fComposite.layout();

-

-		// setup the wiring for top left pane

-		fStructureInputPane.addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent e) {

-					feed1(e.getSelection());

-				}

-			}

-		);

-		

-		if (!structureCompareOnSingleClick()) {

-			fStructureInputPane.addDoubleClickListener(

-				new IDoubleClickListener() {

-					public void doubleClick(DoubleClickEvent e) {

-						feedDefault1(e.getSelection());

-					}

-				}

-			);

-		}

-

-		// setup the wiring for second pane

-		fStructurePane1.addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent e) {

-					feed2(e.getSelection());

-				}

-			}

-		);

-

-		// setup the wiring for third pane

-		fStructurePane2.addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent e) {

-					feed3(e.getSelection());

-				}

-			}

-		);

-		

-		// now deal with activation

-		Listener activationListener= new Listener() {

-			public void handleEvent(Event event) {

-				if (event.widget instanceof CompareViewerSwitchingPane) {

-					fFocusPane= (CompareViewerSwitchingPane) event.widget;

-				}

-			}

-		};

-		fStructureInputPane.addListener(SWT.Activate, activationListener);

-		fStructurePane1.addListener(SWT.Activate, activationListener);

-		fStructurePane2.addListener(SWT.Activate, activationListener);

-		fContentInputPane.addListener(SWT.Activate, activationListener);

-	

-		if (fInput instanceof ICompareInput) {

-			ICompareInput input2= (ICompareInput) fInput;

-			fStructureInputPane.setInput(input2);

-			feed1(fStructureInputPane.getSelection());

-		}

-		

-		fComposite.setData("Nav", //$NON-NLS-1$

-			new CompareViewerSwitchingPane[] {

-				fStructureInputPane,

-				fStructurePane1,

-				fStructurePane2,

-				fContentInputPane

-			}

-		);

-	

-		return fComposite;

-	}

-	

-	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);

-						if (structureCompareOnSingleClick()) {

-							fStructurePane1.setInput(input);

-							//if (fStructurePane1.isEmpty())

-								fContentInputPane.setInput(input);

-						} else {

-							fContentInputPane.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>

-	 *

-	 * @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 CompareUIPlugin.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>

-	 *

-	 * @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 v= CompareUIPlugin.findContentViewer(oldViewer, input, parent, fCompareConfiguration);

-		

-		if (v instanceof IPropertyChangeNotifier) {

-			final IPropertyChangeNotifier dsp= (IPropertyChangeNotifier) v;

-

-			dsp.addPropertyChangeListener(fDirtyStateListener);

-			

-			Control c= v.getControl();

-			c.addDisposeListener(

-				new DisposeListener() {

-					public void widgetDisposed(DisposeEvent e) {

-						dsp.removePropertyChangeListener(fDirtyStateListener);

-					}

-				}

-			);

-		}

-		

-		return v;

-	}

-	

-	/**

-	 * 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;

-	}

-		

-	/**

-	 * 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) {

-		if (dirty != fDirty) {

-			boolean old= fDirty;

-			fDirty= dirty;

-			Utilities.firePropertyChange(fListenerList, this, DIRTY_STATE, new Boolean(old), new Boolean(fDirty));

-		}

-	}

-	

-	/* (non Javadoc)

-	 * see IPropertyChangeNotifier.addListener

-	 */

-	public void addPropertyChangeListener(IPropertyChangeListener listener) {

-		fListenerList.add(listener);

-	}

-

-	/* (non Javadoc)

-	 * see IPropertyChangeNotifier.removeListener

-	 */

-	public void removePropertyChangeListener(IPropertyChangeListener listener) {

-		fListenerList.remove(listener);

-	}

-

-	/**

-	 * Save any unsaved changes.

-	 * Empty implementation.

-	 * Subclasses must override to save any changes.

-	 *

-	 * @param progressMonitor an <code>IProgressMonitor</code> that the implementation of save may use to show progress

-	 * @deprecated Override method saveChanges instead.

-	 */

-	public void save(IProgressMonitor pm) {

-	}

-	

-	/**

-	 * Save any unsaved changes.

-	 * Subclasses must override to save any changes.

-	 * This implementation tries to flush changes in all viewers by

-	 * calling <code>setInput</code> on them.

-	 *

-	 * @param progressMonitor an <code>IProgressMonitor</code> that the implementation of save may use to show progress

-	 */

-	public void saveChanges(IProgressMonitor pm) throws CoreException {

-		

-		// flush changes in any dirty viewer

-		flushViewer(fStructureInputPane);

-		flushViewer(fStructurePane1);

-		flushViewer(fStructurePane2);

-		flushViewer(fContentInputPane);

-

-		save(pm);

-	}

-	

-	private static void flushViewer(CompareViewerSwitchingPane pane) {

-		if (pane != null) {

-			Viewer v= pane.getViewer();

-			if (v != null) {

-				

-				// since we have already asked the user whether he wants to save

-				// changes, we disable the confirmation alert in

-				// ContentMergeViewer.inputChanged

-				if (v instanceof ContentMergeViewer)

-					((ContentMergeViewer)v).setConfirmSave(false);

-

-				Object input= pane.getInput();

-				v.setInput(input);

-			}

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java
deleted file mode 100644
index 5a39d9d..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.ui.plugin.AbstractUIPlugin;

-

-import org.eclipse.compare.internal.CompareUIPlugin;

-import org.eclipse.compare.internal.IStructureCreatorDescriptor;

-import org.eclipse.compare.structuremergeviewer.ICompareInput;

-import org.eclipse.compare.structuremergeviewer.IStructureCreator;

-

-

-/**

- * 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 {

-	

-	/** Image descriptors for the 'Next' tool bar button. */

-	public static final ImageDescriptor DESC_DTOOL_NEXT= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.DTOOL_NEXT);

-	public static final ImageDescriptor DESC_CTOOL_NEXT= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.CTOOL_NEXT);

-	public static final ImageDescriptor DESC_ETOOL_NEXT= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.ETOOL_NEXT);

-	

-	/** Image descriptors for the 'Previous' tool bar button. */

-	public static final ImageDescriptor DESC_DTOOL_PREV= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.DTOOL_PREV);

-	public static final ImageDescriptor DESC_CTOOL_PREV= CompareUIPlugin.getImageDescriptor(CompareUIPlugin.CTOOL_PREV);

-	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$

-	

-	/* (non Javadoc)

-	 * non inatiatiable!

-	 */

-	private CompareUI() {

-	}

-	

-	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.getResourceBundle();

-	}

-	

-	/**

-	 * Performs the comparison described by the given input and opens a

-	 * compare editor on the result.

-	 *

-	 * @param input the input on which to open the compare editor

-	 */

-	public static void openCompareEditor(CompareEditorInput input) {

-		CompareUIPlugin plugin= CompareUIPlugin.getDefault();

-		if (plugin != null)

-			plugin.openCompareEditor(input);

-	}

-			

-	/**

-	 * 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);

-	}

-		

-	/**

-	 * 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.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.findContentViewer(oldViewer, input, parent, configuration);

-	}

-		

-	public static void addStructureViewerAlias(String type, String alias) {

-		CompareUIPlugin.addStructureViewerAlias(type, alias);

-	}

-	

-	public static void removeAllStructureViewerAliases(String type) {

-		CompareUIPlugin.removeAllStructureViewerAliases(type);

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java
deleted file mode 100644
index 3106b11..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.widgets.*;

-

-import org.eclipse.jface.action.ToolBarManager;

-

-import org.eclipse.compare.internal.Splitter;

-

-/**

- * 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>.

- */

-public class CompareViewerPane extends ViewForm {

-	

-	private ToolBarManager fToolBarManager;

-

-

-	public CompareViewerPane(Composite parent, int style) {

-		super(parent, style);

-		

-		marginWidth= 0;

-		marginHeight= 0;

-		

-		CLabel label= new CLabel(this, SWT.NONE);

-		setTopLeft(label);

-		

-		MouseAdapter ml= new MouseAdapter() {

-			public void mouseDoubleClick(MouseEvent e) {

-				Control parent= getParent();

-				if (parent instanceof Splitter)

-					((Splitter)parent).setMaximizedControl(CompareViewerPane.this);

-			}

-		};	

-				

-		addMouseListener(ml);

-		label.addMouseListener(ml);	

-	}

-	

-	public void setText(String label) {

-		CLabel cl= (CLabel) getTopLeft();

-		cl.setText(label);		

-	}

-	

-	public void setImage(Image image) {

-		CLabel cl= (CLabel) getTopLeft();

-		cl.setImage(image);

-	}

-	

-	/**

-	 * Returns a <code>ToolBarManager</code> if the given parent is a <code>CompareViewerPane</code>.

-	 */

-	public static ToolBarManager getToolBarManager(Composite parent) {

-		if (parent instanceof CompareViewerPane) {

-			CompareViewerPane pane= (CompareViewerPane) parent;

-			return pane.getToolBarManager();

-		}

-		return null;

-	}

-

-	/**

-	 * Clear tool items in <code>CompareViewerPane</code>'s control bar.

-	 */

-	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/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java
deleted file mode 100644
index 42717db..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-import java.text.MessageFormat;

-

-import org.eclipse.swt.SWT;

-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> which supports viewer switching.

- * <p>

- * Clients must implement the viewer switching strategy by implementing

- * <code>getViewer</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.

- */

-public abstract class CompareViewerSwitchingPane extends CompareViewerPane

-				implements ISelectionChangedListener, ISelectionProvider, IDoubleClickListener {

-	

-	private Viewer fViewer;

-	private Object fInput;

-	private ListenerList fSelectionListeners= new ListenerList();

-	private ListenerList fOpenListeners= new ListenerList();

-	private boolean fControlVisibility= false;

-	private String fTitle;

-	private String fTitleArgument;

-

-

-	/**

-	 * Creates a <code>CompareViewerSwitchingPane</code> as a child of the given parent and with the

-	 * specified SWT style bits.

-	 */

-	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.

-	 */

-	public CompareViewerSwitchingPane(Composite parent, int style, boolean visibility) {

-		super(parent, style);

-

-		fControlVisibility= visibility;

-		

-		setViewer(new NullViewer(this));

-		

-		CompareNavigator.hookNavigation(this);

-

-		addDisposeListener(

-			new DisposeListener() {

-				public void widgetDisposed(DisposeEvent e) {

-					if (fViewer instanceof ISelectionProvider)

-						((ISelectionProvider) fViewer).removeSelectionChangedListener(CompareViewerSwitchingPane.this);

-					if (fViewer instanceof StructuredViewer)

-						 ((StructuredViewer) fViewer).removeDoubleClickListener(CompareViewerSwitchingPane.this);

-					fViewer= null;

-					fInput= null;

-					fSelectionListeners= null;

-				}

-			}

-		);

-	}

-	

-	/**

-	 * Returns the current viewer.

-	 */

-	public Viewer getViewer() {

-		return fViewer;

-	}

-	

-	/**

-	 * Sets the current viewer.

-	 */

-	private void setViewer(Viewer newViewer) {

-		

-		if (newViewer == fViewer)

-			return;

-				

-		boolean oldEmpty= isEmpty();

-

-		if (fViewer != null) {

-			

-			if (fViewer instanceof ISelectionProvider)

-				 ((ISelectionProvider) fViewer).removeSelectionChangedListener(this);

-				 

-			if (fViewer instanceof StructuredViewer)

-				((StructuredViewer)fViewer).removeDoubleClickListener(this);

-

-			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();

-

-			if (fViewer instanceof ISelectionProvider)

-				 ((ISelectionProvider) fViewer).addSelectionChangedListener(this);

-			if (fViewer instanceof StructuredViewer)

-				((StructuredViewer)fViewer).addDoubleClickListener(this);

-

-			if (oldEmpty != newEmpty) {	// relayout my container

-				Composite parent= getParent();

-				if (parent instanceof Splitter)

-					((Splitter)parent).setVisible(this, fControlVisibility ? !newEmpty : true);

-			}

-				

-			layout(true);

-		}

-	}

-

-	/**

-	 * Returns <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) {

-		fOpenListeners.add(l);

-	}

-

-	public void removeDoubleClickListener(IDoubleClickListener l) {

-		fOpenListeners.remove(l);

-	}

-

-	public void doubleClick(DoubleClickEvent event) {

-		Object[] listeners= fOpenListeners.getListeners();

-		for (int i= 0; i < listeners.length; i++)

-			((IDoubleClickListener) listeners[i]).doubleClick(event);

-	}

-

-	public ISelection getSelection() {

-		if (fViewer instanceof ISelectionProvider)

-			return ((ISelectionProvider) fViewer).getSelection();

-		return null;

-	}

-

-	public void setSelection(ISelection s) {

-		if (fViewer instanceof ISelectionProvider)

-			 ((ISelectionProvider) 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;

-	}

-		

-	/**

-	 * If the old viewer had focus, new setInput tries to set

-	 * focus on new viewer too.

-	 */ 

-	public void setInput(Object input) {

-

-		if (fInput == input)

-			return;

-			

-		boolean hadFocus= hasFocus2();

-		

-		try {

-			if (fViewer != null)

-				fViewer.setInput(null);	// force save before switching viewer

-		} catch (ViewerSwitchingCancelled ex) {

-			return;

-		}

-

-		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();

-	}

-	

-	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$

-		}

-	}

-

-	public Object getInput() {

-		return fInput;

-	}

-

-	abstract protected Viewer getViewer(Viewer oldViewer, Object input);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
deleted file mode 100644
index 9123305..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
+++ /dev/null
@@ -1,1040 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-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.io.InputStream;

-import java.text.*;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.graphics.Point;

-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.dialogs.Dialog;

-import org.eclipse.jface.resource.ImageDescriptor;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.util.Assert;

-import org.eclipse.jface.dialogs.IDialogConstants;

-

-import org.eclipse.core.resources.IFile;

-import org.eclipse.core.resources.IFileState;

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.compare.internal.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.compare.*;

-

-/**

- * 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 Dialog {

-		

-	/**

-	 * 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 {

-							InputStream is= sca.getContents();

-							if (is != null)

-								fContent= Utilities.readString(is);

-						} catch (CoreException ex) {

-						}

-					}

-				}

-				if (fContent == null)

-					fContent= ""; //$NON-NLS-1$

-			}

-			return fContent;

-		}

-		

-		/**

-		 * Compares content of item.

-		 */

-		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;

-	/** 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;

-	

-	/**

-	 * 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;

-	/** The editions of the current selected member */

-	private List fCurrentEditions;

-	private Thread fThread;

-	private ResourceBundle fBundle;

-	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);

-		setShellStyle(SWT.CLOSE | SWT.APPLICATION_MODAL | SWT.RESIZE);

-		

-		fBundle= bundle;

-	

-		fCompareConfiguration= new CompareConfiguration();

-		fCompareConfiguration.setLeftEditable(false);

-		fCompareConfiguration.setRightEditable(false);

-				

-		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();

-		iconName= Utilities.getString(fBundle, "timeIcon", "obj16/resource_obj.gif"); //$NON-NLS-1$ //$NON-NLS-2$

-		id= CompareUIPlugin.getImageDescriptor(iconName);

-		if (id != null)

-			fTimeImage= id.createImage();

-	}

-		

-	public void setEditionTitleArgument(String titleArgument) {

-		fTitleArg= titleArgument;

-	}

-	

-	public void setEditionTitleImage(Image titleImage) {

-		fTitleImage= titleImage;

-	}

-	

-	/**

-	 * Select the previous edition.

-	 *

-	 * @param target the input object against which the editions are compared; must not be <code>null</code>

-	 * @param editions the list of editions (element type: <code>ITypedElement</code>s)

-	 * @param path 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 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, 0, count-1);

-			

-		// find StructureCreator if ppath is not null

-		IStructureCreator structureCreator= null;

-		if (ppath != null) {

-			String type= target.getType();

-			IStructureCreatorDescriptor scd= CompareUIPlugin.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 (! 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 editions the list of editions (element type: <code>ITypedElement</code>s)

-	 * @param path 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, 0, count-1);

-			

-		// find StructureCreator if ppath is not null

-		IStructureCreator structureCreator= null;

-		if (ppath != null) {

-			String type= target.getType();

-			IStructureCreatorDescriptor scd= CompareUIPlugin.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)

-				fCompareConfiguration.setRightLabel(targetLabel);

-			else

-				fCompareConfiguration.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.

-	 */

-	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.

-	 */

-	public void setTargetIsRight(boolean isRight) {

-		fTargetIsRight= isRight;

-	}

-		

-	/**

-	 * Controls whether the EditionSelectionDialog is in 'add' mode

-	 * or 'replace' mode (the default).

-	 *

-	 * @param addMode if true dialog is in 'add' mode.

-	 */

-	public void setAddMode(boolean addMode) {

-		fAddMode= addMode;

-	}

-	

-	/**

-	 * Controls whether the EditionSelectionDialog is in 'compare' mode

-	 * or 'add/replace' (the default) mode. 

-	 *

-	 * @param addMode if true dialog is in 'add' mode.

-	 */

-	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 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 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 });

-	}

-	

-	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

-  	 */

-	protected Image getEditionImage(ITypedElement selectedEdition, ITypedElement item) {

-		if (selectedEdition instanceof ResourceNode)

-			return selectedEdition.getImage();

-		if (selectedEdition instanceof HistoryItem)

-			return fTimeImage;

-		return null;

-	}

-	

-	/* (non Javadoc)

-	 * Returns the size initialized with the constructor.

-	 */

-	protected Point getInitialSize() {

-		Point size= new Point(Utilities.getInteger(fBundle, "width", 0), //$NON-NLS-1$

-					Utilities.getInteger(fBundle, "height", 0)); //$NON-NLS-1$

-		

-		Shell shell= getParentShell();

-		if (shell != null) {

-			Point parentSize= shell.getSize();

-			if (size.x <= 0)

-				size.x= parentSize.x-300;

-			if (size.y <= 0)

-				size.y= parentSize.y-200;

-		}

-		if (size.x < 700)

-			size.x= 700;

-		if (size.y < 500)

-			size.y= 500;

-		return size;

-	}

-

- 	/* (non Javadoc)

- 	 * Creates SWT control tree.

- 	 */

-	protected synchronized Control createDialogArea(Composite parent) {

-		

-		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 (fDateImage != null)

-						fDateImage.dispose();

-					if (fTimeImage != null)

-						fTimeImage.dispose();

-				}

-			}

-		);

-		

-		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$

-			fMemberTable= new Table(fMemberPane, SWT.H_SCROLL + SWT.V_SCROLL);

-			fMemberTable.addSelectionListener(

-				new SelectionAdapter() {

-					public void widgetSelected(SelectionEvent e) {

-						handleMemberSelect(e.item);

-					}

-				}

-			);

-			

-			fMemberPane.setContent(fMemberTable);

-			

-			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 CompareUIPlugin.findStructureViewer(oldViewer, (ICompareInput)input, this, fCompareConfiguration);

-						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.NONE) {

-			protected Viewer getViewer(Viewer oldViewer, Object input) {

-				return CompareUIPlugin.findContentViewer(oldViewer, input, this, fCompareConfiguration);	

-			}

-		};

-		vsplitter.setWeights(new int[] { 30, 70 });

-				

-		return vsplitter;

-	}

-	

-	/* (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.

-	 */

-	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 void handleDefaultSelected() {

-//		if (fSelectedItem != null)

-//			okPressed();

-//	}

-	

-	private static void internalSort(IModificationDate[] keys, int left, int right) { 

-	

-		int original_left= left;

-		int original_right= right;

-		

-		IModificationDate mid= keys[(left + right) / 2]; 

-		do { 

-			while (keys[left].getModificationDate() > mid.getModificationDate())

-				left++; 

-			

-			while (mid.getModificationDate() > keys[right].getModificationDate())

-				right--; 

-		

-			if (left <= right) { 

-				IModificationDate tmp= keys[left]; 

-				keys[left]= keys[right]; 

-				keys[right]= tmp;			

-				left++; 

-				right--; 

-			} 

-		} while (left <= right);

-		

-		if (original_left < right)

-			internalSort(keys, original_left, right); 

-		

-		if (left < original_right)

-			internalSort(keys, left, original_right); 

-	}

-	

-	/**

-	 * 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) {

-					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();

-		

-		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= (ITypedElement)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);

-			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);

-		if (first) {

-			fEditionTree.setSelection(new TreeItem[] {ti});

-			if (!fAddMode)

-				fEditionTree.setFocus();

-			feedInput(ti);

-		}

-		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) {

-				setInput(fSelectedItem);

-				fContentPane.setText(editionLabel);

-				fContentPane.setImage(editionImage);

-			} else {

-				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)

-			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/plugins/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java
deleted file mode 100644
index 98ddbb7..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-import java.io.InputStream;

-import java.io.BufferedInputStream;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.core.resources.IFileState;

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.compare.*;

-

-/**

- * 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 IStreamContentAccessor, ITypedElement, IModificationDate {

-	

-	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());

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java
deleted file mode 100644
index 095f52f..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java
deleted file mode 100644
index bc62b5a..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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/plugins/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java
deleted file mode 100644
index 0af2c91..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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 a child,

-	 * - remove a child,

-	 * - copy the contents of a child

-	 * 

-	 * What to do is encoded in the two arguments as follows:

-	 * add:	child == null		other != null

-	 * remove:	child != null		other == null

-	 * copy:	child != null		other != null

-	 */

-	ITypedElement replace(ITypedElement child, ITypedElement other);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java
deleted file mode 100644
index 98f9364..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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/plugins/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java
deleted file mode 100644
index 447f227..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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/plugins/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java
deleted file mode 100644
index fee4741..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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/plugins/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
deleted file mode 100644
index e914a57..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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. 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.

-	 */

-	public static final String TEXT_TYPE= "txt"; //$NON-NLS-1$

-

-	/**

-	 * Type for an element whose actual type could not

-	 * be determined.

-	 */

-	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/plugins/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java
deleted file mode 100644
index c6f60e7..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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/plugins/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
deleted file mode 100644
index 6c488a1..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-import java.io.*;

-import java.util.ArrayList;

-import java.util.Iterator;

-

-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.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 IStructureComparator, ITypedElement, IEditableContent, IModificationDate {

-			

-	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.

-	 */

-	/* (non Javadoc)

-	 * see IStructureComparator.equals

-	 */

-	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.

-	 */

-	/* (non Javadoc)

-	 * see IStructureComparator.hashCode

-	 */

-	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) {

-				}

-			}

-		}

-		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)

-			return new BufferedInputStream(((IStorage)fResource).getContents());

-		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;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java
deleted file mode 100644
index 902d5dc..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare;

-

-import java.io.*;

-import java.util.Iterator;

-import java.util.HashMap;

-import java.util.zip.*;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.compare.internal.Utilities;

-

-

-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) {

-				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) {

-				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;

-

-	public ZipFileStructureCreator() {

-		this(Utilities.getString("ZipStructureCreator.name")); //$NON-NLS-1$

-	}

-	

-	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) {

-			}

-		}

-

-		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) {

-			}

-		}

-

-		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.

-	 */

-	public boolean canSave() {

-		return false;

-	}

-

-	/**

-	 * Throws <code>AssertionFailedException</code> since we cannot update a zip archive.

-	 */

-	public void save(IStructureComparator structure, Object input) {

-		Assert.isTrue(false); // Cannot update zip archive

-	}

-	

-	public IStructureComparator locate(Object path, Object source) {

-		return null;

-	}

-	

-	public boolean canRewriteTree() {

-		return false;

-	}

-	

-	public void rewriteTree(Differencer diff, IDiffContainer root) {

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
deleted file mode 100644
index 987d42c..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
+++ /dev/null
@@ -1,912 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.jface.util.*;

-import org.eclipse.jface.action.*;

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.resource.ImageDescriptor;

-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.contentmergeviewer.IMergeViewerContentProvider;

-import org.eclipse.compare.contentmergeviewer.TextMergeViewer;

-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 {

-	

-	class SaveAction extends MergeViewerAction {

-		

-		private boolean fLeft;

-		

-		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;

-		

-		public Resizer(Control c, int dir) {

-			fDirection= dir;

-			fControl= c;

-			fControl.addMouseListener(this);

-			fLiveResize= !(fControl instanceof Sash);

-			

-			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;

-			fControl.addMouseMoveListener(this);

-		}

-		

-		public void mouseUp(MouseEvent e) {

-			fControl.removeMouseMoveListener(this);

-			if (!fLiveResize)

-				resize(e);

-		}

-		

-		public void mouseMove(MouseEvent e) {

-			if (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;

-

-	// 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;

-	//---- end

-	

-	/**

-	 * Creates a new content merge viewer and initializes with a resource bundle and a

-	 * configuration.

-	 *

-	 * @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);

-			}

-		};

-		

-		fPropertyChangeListener= new IPropertyChangeListener() {

-			public void propertyChange(PropertyChangeEvent event) {

-				ContentMergeViewer.this.propertyChange(event);

-			}

-		};

-		

-		fCompareConfiguration= cc;

-		if (fCompareConfiguration != null)

-			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) {

-	}

-

-	/**

-	 * 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>.

-	 */

-	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.

-	 */

-	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 s, boolean reveal) {

-	}

-

-	/* package */ void propertyChange(PropertyChangeEvent event) {

-		

-		String key= event.getProperty();

-

-		if (key.equals(ANCESTOR_ENABLED)) {

-			fAncestorEnabled= Utilities.getBoolean(getCompareConfiguration(), ANCESTOR_ENABLED, fAncestorEnabled);

-			fComposite.layout(true);

-			return;

-		}

-	}

-	

-	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 retrieves the content from the three sides by calling the methods

-	 * <code>getAncestorContent</code>, <code>getLeftContent</code>,

-	 * and <code>getRightContent</code> on the content provider.

-	 * The values returned from these calls are passed to the hook method <code>updateContent</code>.

-	 * </p>

-	 *

-	 * @param input the new input of this viewer, or <code>null</code> if none

-	 * @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);

-		

-		// 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,

-						IDialogConstants.CANCEL_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);

-		}

-			

-		if (input != oldInput)

-			if (input instanceof ICompareInput)

-				((ICompareInput)input).addCompareInputChangeListener(fCompareInputChangeListener);

-		

-		setLeftDirty(false);

-		setRightDirty(false);

-

-		if (input != oldInput)

-			internalRefresh(input);

-	}

-	

-	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= CompareViewerSwitchingPane.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);

-						

-		ToolBarManager tbm= CompareViewerSwitchingPane.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$

-			}

-			

-			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$

-			}

-			

-			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) {

-		

-		Object input= getInput();	

-		if (input instanceof ICompareInput)

-			((ICompareInput)input).removeCompareInputChangeListener(fCompareInputChangeListener);

-		

-		if (fCompareConfiguration != null)

-			fCompareConfiguration.removePropertyChangeListener(fPropertyChangeListener);

-

-		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;

-		}

-		

-		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 modified content back to input elements via the content provider.

-	 */

-	/* package */ void saveContent(Object oldInput) {

-				

-		// write back modified contents

-		IMergeViewerContentProvider content= (IMergeViewerContentProvider) getContentProvider();

-		

-		if (fCompareConfiguration.isLeftEditable() && fLeftSaveAction.isEnabled()) {

-			byte[] bytes= getContents(true);

-			setLeftDirty(false);

-			content.saveLeftContent(oldInput, bytes);

-		}

-		

-		if (fCompareConfiguration.isRightEditable() && fRightSaveAction.isEnabled()) {

-			byte[] bytes= getContents(false);

-			setRightDirty(false);

-			content.saveRightContent(oldInput, bytes);

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java
deleted file mode 100644
index 1f7d6d2..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package org.eclipse.compare.contentmergeviewer;

-

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.core.runtime.IProgressMonitor;

-import java.lang.reflect.InvocationTargetException;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.operation.ModalContext;

-import org.eclipse.jface.dialogs.ProgressMonitorDialog;

-

-

-class DelayedProgressMonitor implements IProgressMonitor {

-	

-	ProgressMonitorDialog fProgressDialog;

-	IProgressMonitor fRealProgressMonitor;

-	String fTaskName;

-	String fSubTaskName;

-	int fTotalWork;

-	int fWorked;

-	boolean fCancelable;

-	Shell fShell;

-	int fTime;

-	

-	

-	DelayedProgressMonitor(Shell shell) {

-		fShell= shell;

-	}

-

-	/*

-	 * @see IProgressMonitor#beginTask(String, int)

-	 */

-	public void beginTask(String name, int totalWork) {

-		fTaskName= name;

-		fTotalWork= totalWork;

-		fTime= 0;

-	}

-

-	/*

-	 * @see IProgressMonitor#done()

-	 */

-	public void done() {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.done();

-	}

-

-	/*

-	 * @see IProgressMonitor#internalWorked(double)

-	 */

-	public void internalWorked(double work) {

-		if (fRealProgressMonitor != null) {

-			fRealProgressMonitor.internalWorked(work);

-		}

-	}

-	

-	private void checkTimeout() {

-		if (fRealProgressMonitor == null) {

-			

-			//if (fTime++ < 100)

-			//	return;

-			

-			fProgressDialog= new ProgressMonitorDialog(fShell);

-			fProgressDialog.setCancelable(true);

-			fProgressDialog.open();

-			fRealProgressMonitor= fProgressDialog.getProgressMonitor();

-			fRealProgressMonitor.beginTask(fTaskName, fTotalWork);

-			if (fSubTaskName != null)

-				fRealProgressMonitor.subTask(fSubTaskName);

-			fRealProgressMonitor.worked(fWorked);

-		}

-	}

-

-	/*

-	 * @see IProgressMonitor#isCanceled()

-	 */

-	public boolean isCanceled() {

-		checkTimeout();

-		if (fRealProgressMonitor != null)

-			return fRealProgressMonitor.isCanceled();

-		return false;

-	}

-

-	/*

-	 * @see IProgressMonitor#setCanceled(boolean)

-	 */

-	public void setCanceled(boolean value) {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.setCanceled(value);

-		else

-			fCancelable= value;

-	}

-

-	/*

-	 * @see IProgressMonitor#setTaskName(String)

-	 */

-	public void setTaskName(String name) {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.setTaskName(name);

-		else

-			fTaskName= name;

-	}

-

-	/*

-	 * @see IProgressMonitor#subTask(String)

-	 */

-	public void subTask(String name) {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.subTask(name);

-		else

-			fSubTaskName= name;

-	}

-

-	/*

-	 * @see IProgressMonitor#worked(int)

-	 */

-	public void worked(int work) {

-		if (fRealProgressMonitor != null)

-			fRealProgressMonitor.internalWorked(work);

-		else {

-			fWorked+= work;

-			checkTimeout();

-		}

-	}

-	

-	public static void run(Shell shell, boolean fork, boolean cancelable, IRunnableWithProgress runnable)

-						throws InvocationTargetException, InterruptedException {

-		

-		DelayedProgressMonitor pm= new DelayedProgressMonitor(shell);

-		pm.checkTimeout();

-		try {

-			ModalContext.run(runnable, fork, pm, shell.getDisplay());

-		} finally {

-			if (pm.fProgressDialog != null)

-				pm.fProgressDialog.close();

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java
deleted file mode 100644
index a176323..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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 {

-	

-	/**

-	 * 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/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java
deleted file mode 100644
index 2f75e91..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.

-	 *

-	 * @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/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java
deleted file mode 100644
index 9035817..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
deleted file mode 100644
index 9d894a9..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
+++ /dev/null
@@ -1,2706 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-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.io.InputStream;

-import java.io.IOException;

-import java.text.MessageFormat;

-import java.lang.InterruptedException;

-

-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.FontData;

-import org.eclipse.swt.graphics.Font;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.*;

-import org.eclipse.swt.custom.*;

-

-import org.eclipse.jface.action.*;

-import org.eclipse.jface.text.*;

-import org.eclipse.jface.text.source.SourceViewer;

-import org.eclipse.jface.util.PropertyChangeEvent;

-import org.eclipse.jface.util.IPropertyChangeListener;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.preference.IPreferenceStore;

-import org.eclipse.jface.preference.PreferenceConverter;

-import org.eclipse.jface.dialogs.MessageDialog;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.ui.texteditor.IUpdate;

-import org.eclipse.ui.IActionBars;

-import org.eclipse.ui.IWorkbenchActionConstants;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.MergeSourceViewer;

-import org.eclipse.compare.internal.BufferedCanvas;

-import org.eclipse.compare.internal.Utilities;

-import org.eclipse.compare.internal.TokenComparator;

-import org.eclipse.compare.internal.ChangePropertyAction;

-import org.eclipse.compare.internal.CompareEditor;

-import org.eclipse.compare.internal.DocLineComparator;

-import org.eclipse.compare.internal.ComparePreferencePage;

-import org.eclipse.compare.internal.CompareUIPlugin;

-import org.eclipse.compare.internal.MergeViewerAction;

-import org.eclipse.compare.internal.INavigatable;

-import org.eclipse.compare.internal.CompareNavigator;

-import org.eclipse.compare.internal.TimeoutContext;

-import org.eclipse.compare.rangedifferencer.*;

-import org.eclipse.compare.structuremergeviewer.Differencer;

-

-/**

- * 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 String[] GLOBAL_ACTIONS= {

-		IWorkbenchActionConstants.UNDO,

-		IWorkbenchActionConstants.REDO,

-		IWorkbenchActionConstants.CUT,

-		IWorkbenchActionConstants.COPY,

-		IWorkbenchActionConstants.PASTE,

-		IWorkbenchActionConstants.DELETE,

-		IWorkbenchActionConstants.SELECT_ALL,

-	};

-	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,

-	};

-		

-	private static final String MY_UPDATER= "my_updater"; //$NON-NLS-1$

-	

-	private static final String SYNC_SCROLLING= "SYNC_SCROLLING"; //$NON-NLS-1$

-	

-	private static final String TEXT_FONT= ComparePreferencePage.TEXT_FONT;

-	

-	private static final String BUNDLE_NAME= "org.eclipse.compare.contentmergeviewer.TextMergeViewerResources"; //$NON-NLS-1$

-		

-	// constants

-	/** Width of left and right vertical bar */

-	private static final int MARGIN_WIDTH= 10;

-	/** Width of center bar */

-	private static final int CENTER_WIDTH= 40;

-	/** */

-	private static final int LW= 1;

-	/** Provide more merge controls in CompareViewerPane toolbar */

-	private static final boolean USE_MORE_CONTROLS= true;

-	/** Selects between smartTokenDiff and mergingTokenDiff */

-	private static final boolean USE_MERGING_TOKEN_DIFF= false;

-	/** if DEAD_STEP is true navigation with the next/previous buttons needs an extra step 

-	when wrapping around the beginning or end */

-	private static final boolean DEAD_STEP= false;

-	/** When calculating differences show Progress after this timeout (in milliseconds) */

-	private static final int TIMEOUT= 2000;

-		

-	// 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 to use

-	private static final RGB INCOMING= new RGB(100, 100, 200);

-	private static final RGB INCOMING_FILL= new RGB(230, 230, 240);

-	private static final RGB SELECTED_INCOMING= new RGB(0, 0, 255);

-	private static final RGB SELECTED_INCOMING_FILL= new RGB(255, 255, 255);

-	

-	private static final RGB CONFLICT= new RGB(200, 100, 100);

-	private static final RGB CONFLICT_FILL= new RGB(240, 230, 230);

-	private static final RGB SELECTED_CONFLICT= new RGB(255, 0, 0);

-	private static final RGB SELECTED_CONFLICT_FILL= new RGB(255, 255, 255);

-	

-	private static final RGB OUTGOING= new RGB(100, 100, 100);

-	private static final RGB OUTGOING_FILL= new RGB(230, 230, 230);

-	private static final RGB SELECTED_OUTGOING= new RGB(0, 0, 0);

-	private static final RGB SELECTED_OUTGOING_FILL= new RGB(255, 255, 255);

-	

-//	private static final RGB INCOMING= new RGB(230, 230, 240);

-//	private static final RGB INCOMING_FILL= new RGB(250, 250, 255);

-//	private static final RGB SELECTED_INCOMING= new RGB(0, 0, 255);

-//	private static final RGB SELECTED_INCOMING_FILL= new RGB(255, 255, 255);

-//	

-//	private static final RGB CONFLICT= new RGB(240, 230, 230);

-//	private static final RGB CONFLICT_FILL= new RGB(255, 250, 250);

-//	private static final RGB SELECTED_CONFLICT= new RGB(255, 0, 0);

-//	private static final RGB SELECTED_CONFLICT_FILL= new RGB(255, 255, 255);

-//	

-//	private static final RGB OUTGOING= new RGB(230, 230, 230);

-//	private static final RGB OUTGOING_FILL= new RGB(250, 250, 250);

-//	private static final RGB SELECTED_OUTGOING= new RGB(0, 0, 0);

-//	private static final RGB SELECTED_OUTGOING_FILL= new RGB(255, 255, 255);

-

-	private IDocumentListener fDocumentListener;

-	

-	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 MergeSourceViewer fAncestor;

-	private MergeSourceViewer fLeft;

-	private MergeSourceViewer fRight;

-	

-	private int fLeftLineCount;

-	private int fRightLineCount;

-	

-	private boolean fLeftContentsChanged;

-	private boolean fRightContentsChanged;

-

-	private boolean fInScrolling;

-	

-	private int fPts[]= new int[8];	// scratch area for polygon drawing

-	

-	//PR1GI3HDZ

-	private boolean fIgnoreAncestor= false;

-	private ActionContributionItem fIgnoreAncestorItem;

-	//end PR1GI3HDZ

-

-	private ActionContributionItem fNextItem;	// goto next difference

-	private ActionContributionItem fPreviousItem;	// goto previous difference

-	private ActionContributionItem fCopyDiffLeftToRightItem;

-	private ActionContributionItem fCopyDiffRightToLeftItem;

-	

-	private boolean fSynchronizedScrolling= true;

-	

-	private MergeSourceViewer fFocusPart;

-	

-	private boolean fSubDoc= true;

-	private IPositionUpdater fPositionUpdater;

-	private boolean fIsMotif;	

-

-	// SWT widgets

-	private BufferedCanvas fAncestorCanvas;

-	private BufferedCanvas fLeftCanvas;

-	private BufferedCanvas fRightCanvas;

-	private Canvas fScrollCanvas;

-	private ScrollBar fVScrollBar;

-		

-	// SWT resources to be disposed

-	private Map fColors;

-	private Font fFont;

-

-

-	/**

-	 * 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;

-

-		/**

-		 * Create Diff from two ranges and an optional parent diff.

-		 */

-		Diff(Diff parent, int dir, IDocument ancestorDoc, int ancestorStart, int ancestorEnd,

-							 IDocument leftDoc, int leftStart, int leftEnd,

-							 IDocument rightDoc, int rightStart, int rightEnd) {

-			fParent= parent != null ? parent : this;

-			fDirection= dir;

-			

-			fLeftPos= createPosition(leftDoc, leftStart, leftEnd);

-			fRightPos= createPosition(rightDoc, rightStart, rightEnd);

-			if (ancestorDoc != null)

-				fAncestorPos= createPosition(ancestorDoc, ancestorStart, ancestorEnd);

-		}

-		

-		String changeType() {

-			boolean leftEmpty= fLeftPos.length == 0;

-			boolean rightEmpty= fRightPos.length == 0;

-			

-			if (fDirection == RangeDifference.LEFT) {

-				if (!leftEmpty && rightEmpty)

-					return "addition";

-				if (leftEmpty && !rightEmpty)

-					return "deletion";

-			} else {

-				if (leftEmpty && !rightEmpty)

-					return "addition";

-				if (!leftEmpty && rightEmpty)

-					return "deletion";

-			}

-			return "change";

-		}

-		

-		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, int start, int end) {

-			try {

-				int dl= doc.getLength();

-				int l= end-start;

-				if (start+l > dl)

-					l= dl-start;

-					

-				Position p= null;

-				try {

-					p= new Position(start, l);

-				} catch (RuntimeException ex) {

-					//System.out.println("Diff.createPosition: " + start + " " + l);

-				}

-				

-				try {

-					doc.addPosition(MY_UPDATER, p);

-				} catch (BadPositionCategoryException ex) {

-				}

-				return p;

-			} catch (BadLocationException ee) {

-				//System.out.println("Diff.createPosition: " + start + " " + end);

-			}

-			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;

-		}

-

-		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 contains(MergeSourceViewer w, int start, int end) {

-			Position h= getPosition(w);

-			if (h != null) {

-				int offset= h.getOffset();

-				if (start >= offset) {

-					int endPos= offset+h.getLength();

-					if (end < endPos)

-						return true;

-					if (endPos == w.getDocument().getLength())

-						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);

-		}

-	}

-

-	//---- 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);

-		

-		String platform= SWT.getPlatform();

-		fIsMotif= "motif".equals(platform); //$NON-NLS-1$

-		

-		if (fIsMotif)

-			fMarginWidth= 0;

-				

-		IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-		if (ps != null) {

-			fPreferenceChangeListener= new IPropertyChangeListener() {

-				public void propertyChange(PropertyChangeEvent event) {

-					TextMergeViewer.this.propertyChange(event);

-				}

-			};

-			ps.addPropertyChangeListener(fPreferenceChangeListener);

-			

-			updateFont(ps, parent);

-			fLeftIsLocal= Utilities.getBoolean(configuration, "LEFT_IS_LOCAL", false); //$NON-NLS-1$

-			fSynchronizedScrolling= ps.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);

-		}

-		

-		fDocumentListener= new IDocumentListener() {

-			

-			public void documentAboutToBeChanged(DocumentEvent e) {

-			}

-			

-			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);

-	}

-	

-	private void updateFont(IPreferenceStore ps, Control c) {

-		

-		Font oldFont= fFont;

-		

-		FontData fontData= null;

-		if (ps.contains(TEXT_FONT) && !ps.isDefault(TEXT_FONT))

-			fontData= PreferenceConverter.getFontData(ps, TEXT_FONT);

-		else

-			fontData= PreferenceConverter.getDefaultFontData(ps, TEXT_FONT);

-		if (fontData != null) {

-			fFont= new Font(c.getDisplay(), fontData);

-			

-			if (fAncestor != null)

-				fAncestor.setFont(fFont);

-			if (fLeft != null)

-				fLeft.setFont(fFont);

-			if (fRight != null)

-				fRight.setFont(fFont);

-				

-			if (oldFont != null)

-				oldFont.dispose();

-		}

-	}

-	

-	/**

-	 * 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) {

-	}

-				

-	/**

-	 * 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.

-	 *

-	 * @return a ITokenComparator which is used for a second level token compare.

-	 */

-	protected ITokenComparator createTokenComparator(String s) {

-		return new TokenComparator(s);

-	}

-	

-	/**

-	 * 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.

-	 */

-	protected void handleDispose(DisposeEvent event) {

-		

-		if (fPreferenceChangeListener != null) {

-			IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-			if (ps != null)

-				ps.removePropertyChangeListener(fPreferenceChangeListener);

-			fPreferenceChangeListener= null;

-		}

-		

-		fLeftCanvas= null;

-		fRightCanvas= null;

-		fVScrollBar= 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();

-			}

-		}

-		

-		if (fFont != null) {

-			fFont.dispose();

-			fFont= 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) {

-		

-		// 1st row

-		if (fMarginWidth > 0) {

-			fAncestorCanvas= new BufferedCanvas(composite, SWT.NONE) {

-				public void doPaint(GC gc) {

-					paintSides(gc, fAncestor, fAncestorCanvas, false);

-				}

-			};

-		}

-									

-		fAncestor= createPart(composite);

-		fAncestor.setEditable(false);

-		

-		// 2nd row

-		if (fMarginWidth > 0) {

-			fLeftCanvas= new BufferedCanvas(composite, SWT.NONE) {

-				public void doPaint(GC gc) {

-					paintSides(gc, fLeft, fLeftCanvas, 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);

-		

-		if (fMarginWidth > 0) {

-			fRightCanvas= new BufferedCanvas(composite, SWT.NONE) {

-				public void doPaint(GC gc) {

-					paintSides(gc, fRight, fRightCanvas, fSynchronizedScrolling);

-				}

-			};

-		}

-		

-		fScrollCanvas= new Canvas(composite, SWT.V_SCROLL);

-		Rectangle trim= fScrollCanvas.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) {

-					scrollVertical(((ScrollBar)e.widget).getSelection(), null);

-				}

-			}

-		);

-	}

-	

-	/**

-	 * 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

-	}

-	

-	/**

-	 * 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);

-				}

-			};

-			CompareNavigator.hookNavigation(canvas);

-			new Resizer(canvas, HORIZONTAL);

-			return canvas;

-		}

-		return super.createCenter(parent);

-	}

-	

-	/**

-	 * 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);

-					CompareNavigator.handleNavigationKeys(e);

-				}

-			}

-		);

-		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);

-				}

-			}

-		);

-		

-		if (fFont != null)

-			te.setFont(fFont);

-		

-		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]);

-				actionBars.setGlobalActionHandler(GLOBAL_ACTIONS[i], action);

-			}

-			actionBars.updateActionBars();

-		}

-	}

-

-	/**

-	 * 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);

-

-		// clear stuff

-		fCurrentDiff= null;

-	 	fChangeDiffs= null;

-		fAllDiffs= null;

-		

-		fLeftContentsChanged= false;

-		fRightContentsChanged= false;

-		

-		CompareConfiguration cc= getCompareConfiguration();

-		IMergeViewerContentProvider cp= getMergeContentProvider();

-		

-		boolean rightEditable= cc.isRightEditable() && cp.isRightEditable(getInput());

-		boolean leftEditable= cc.isLeftEditable() && cp.isLeftEditable(getInput());

-		

-		fRight.setEditable(rightEditable);

-		fLeft.setEditable(leftEditable);

-																			

-		// set new documents

-		setDocument(fLeft, left);

-		fLeftLineCount= fLeft.getLineCount();

-

-		setDocument(fRight, right);

-		fRightLineCount= fRight.getLineCount();

-		

-		setDocument(fAncestor, ancestor);

-		

-		doDiff();

-				

-		invalidateLines();

-		updateVScrollBar();

-		

-		if (!emptyInput && !fComposite.isDisposed()) {

-			// delay so that StyledText widget gets a chance to resize itself

-			// (otherwise selectFirstDiff would not know its visible area)

-			fComposite.getDisplay().asyncExec(

-				new Runnable() {

-					public void run() {

-						selectFirstDiff();

-					}

-				}

-			);

-		}

-	}

-	

-	private void updateDiffBackground(Diff diff) {

-		

-		if (diff == null || diff.fIsToken)

-			return;

-			

-		if (fShowCurrentOnly && !isCurrentDiff(diff))

-			return;

-						

-		Color c= getColor(getFillColor(diff));

-		if (c == null)

-			return;

-			

-		if (isThreeWay())

-			fAncestor.setLineBackground(diff.fAncestorPos, c);

-		fLeft.setLineBackground(diff.fLeftPos, c);

-		fRight.setLineBackground(diff.fRightPos, c);

-	}

-	

-	private void unsetDocument(MergeSourceViewer tp) {

-		IDocument oldDoc= tp.getDocument();

-		if (oldDoc != null) {	// deinstall old positions

-			if (fPositionUpdater != null)

-				oldDoc.removePositionUpdater(fPositionUpdater);

-			try {

-				oldDoc.removePositionCategory(MY_UPDATER);

-			} catch (BadPositionCategoryException ex) {

-			}

-		}

-	}

-	

-	boolean isCurrentDiff(Diff diff) {

-		if (diff == null)

-			return false;

-		if (diff == fCurrentDiff)

-			return true;

-		if (fCurrentDiff != null && fCurrentDiff.fParent == diff)

-			return true;

-		return false;

-	}

-	

-	/**

-	 * Called whenver one of the documents changes.

-	 * Sets the dirty state of this viewer and updates the lines.

-	 * Implements IDocumentListener.

-	 */

-	private void documentChanged(DocumentEvent e) {

-		

-		IDocument doc= e.getDocument();

-		

-		if (doc == fLeft.getDocument()) {

-			fLeftContentsChanged= true;

-			setLeftDirty(true);

-		} else if (doc == fRight.getDocument()) {

-			setRightDirty(true);

-			fRightContentsChanged= true;

-		}

-

-		updateLines(doc);

-	}

-	

-	/**

-	 * Returns true if a new Document could be installed.

-	 */

-	private boolean setDocument(MergeSourceViewer tp, Object o) {

-		

-		if (tp == null)

-			return false;

-				

-		IDocument newDoc= null;

-		

-		if (o instanceof IDocumentRange) {

-			newDoc= ((IDocumentRange)o).getDocument();

-

-		} else if (o instanceof Document) {

-			newDoc= (Document) o;

-			

-		} else if (o instanceof IStreamContentAccessor) {

-			IStreamContentAccessor sca= (IStreamContentAccessor) o;

-			if (sca != null) {

-				String s= null;

-				

-				try {

-					s= Utilities.readString(sca.getContents());

-				} catch (CoreException ex) {

-				}

-

-				newDoc= new Document(s != null ? s : ""); //$NON-NLS-1$

-				IDocumentPartitioner partitioner= getDocumentPartitioner();

-				if (partitioner != null) {

-					newDoc.setDocumentPartitioner(partitioner);

-					partitioner.connect(newDoc);

-				}

-			}

-		}

-

-		boolean enabled= true;

-		if (newDoc == null) {

-			newDoc= new Document(""); //$NON-NLS-1$

-			enabled= false;

-		}

-		

-		IDocument oldDoc= tp.getDocument();

-		

-		unsetDocument(tp);

-		

-		if (newDoc != null) {

-			newDoc.addPositionCategory(MY_UPDATER);

-			if (fPositionUpdater == null)

-				fPositionUpdater= new DefaultPositionUpdater(MY_UPDATER);

-			newDoc.addPositionUpdater(fPositionUpdater);

-		}

-		

-		if (newDoc != oldDoc) {	// new document

-			

-			// deinstall old document

-			if (oldDoc != null)

-				oldDoc.removeDocumentListener(fDocumentListener);

-			

-			// install new document

-			if (newDoc != null) {

-						

-				Position range= null;

-				if (o instanceof IDocumentRange)

-					range= ((IDocumentRange) o).getRange();

-					

-				tp.setRegion(range);

-				if (fSubDoc) {

-					if (range != null) {

-						IRegion r= normalizeDocumentRegion(newDoc, toRegion(range));

-						tp.setDocument(newDoc, r.getOffset(), r.getLength());

-					} else

-						tp.setDocument(newDoc);

-				} else

-					tp.setDocument(newDoc);

-								

-				newDoc.addDocumentListener(fDocumentListener);

-			}

-			

-		} else {	// just different range

-			

-			Position range= null;

-			if (o instanceof IDocumentRange)

-				range= ((IDocumentRange) o).getRange();

-				

-			tp.setRegion(range);

-			if (fSubDoc) {

-				if (range != null) {

-					IRegion r= normalizeDocumentRegion(tp.getDocument(), toRegion(range));

-					tp.setVisibleRegion(r.getOffset(), r.getLength());

-				}

-			}			

-		}

-		

-		tp.setEnabled(enabled);

-

-		return enabled;

-	}

-	

-	/**

-	 * Returns the contents of the underlying document as an array of bytes.

-	 * 

-	 * @param left if <code>true</code> the contents of the left side is returned; otherwise the right side

-	 * @return the contents of the left or right document

-	 */

-	protected byte[] getContents(boolean left) {

-		

-		if (left) {

-			//if (fLeftContentsChanged)	// TRY

-				return fLeft.getDocument().get().getBytes();

-		} else {

-			//if (fRightContentsChanged)	// TRY

-				return fRight.getDocument().get().getBytes();

-		}

-		//return null;

-	}

-				

-	private IRegion normalizeDocumentRegion(IDocument doc, IRegion region) {

-		

-		if (region == null || doc == null)

-			return region;

-			

-		int maxLength= doc.getLength();

-		

-		int start= region.getOffset();

-		if (start < 0)

-			start= 0;

-		else if (start > maxLength)

-			start= maxLength;

-			

-		int length= region.getLength();

-		if (length < 0)

-			length= 0;

-		else if (start + length > maxLength)

-			length= maxLength - start;

-			

-		return new Region(start, length);

-	}

-		

-	protected final void handleResizeAncestor(int x, int y, int width, int height) {

-		if (width > 0) {

-			Rectangle trim= fLeft.getTextWidget().computeTrim(0, 0, 0, 0);

-			int scrollbarHeight= trim.height;

-			if (Utilities.okToUse(fAncestorCanvas))

-				fAncestorCanvas.setVisible(true);

-			if (fAncestor.isControlOkToUse())

-				fAncestor.getTextWidget().setVisible(true);

-			

-			if (fAncestorCanvas != null) {

-				fAncestorCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);

-				x+= fMarginWidth;

-				width-= fMarginWidth;

-			}

-			fAncestor.getTextWidget().setBounds(x, y, width, height);

-		} else {

-			if (Utilities.okToUse(fAncestorCanvas))

-				fAncestorCanvas.setVisible(false);

-			if (fAncestor.isControlOkToUse()) {

-				StyledText t= fAncestor.getTextWidget();

-				t.setVisible(false);

-				t.setBounds(0, 0, 0, 0);

-				if (fFocusPart == fAncestor) {

-					fFocusPart= fLeft;

-					fFocusPart.getTextWidget().setFocus();

-				}

-			}

-		}

-	}

-

-	/**

-	 * Lays out everything.

-	 */

-  	protected final void handleResizeLeftRight(int x, int y, int width1, int centerWidth, int width2,  int height) {

-  				

-		Rectangle trim= fLeft.getTextWidget().computeTrim(0, 0, 0, 0);

-		int scrollbarHeight= trim.height;

-		Composite composite= (Composite) getControl();

-

-		int leftTextWidth= width1;

-		if (fLeftCanvas != null) {

-			fLeftCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);

-			x+= fMarginWidth;

-			leftTextWidth-= fMarginWidth;

-		}

-		

-		fLeft.getTextWidget().setBounds(x, y, leftTextWidth, height);

-		x+= leftTextWidth;

-		

-		if (fCenter == null || fCenter.isDisposed())

-			fCenter= createCenter(composite);

-		fCenter.setBounds(x, y, centerWidth, height-scrollbarHeight);

-		x+= centerWidth;

-		

-		if (!fSynchronizedScrolling) {	// canvas is to the left of text

-			if (fRightCanvas != null) {

-				fRightCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);

-				fRightCanvas.redraw();

-				x+= fMarginWidth;

-			}

-			// we draw the canvas to the left of the text widget

-		}

-		

-		int scrollbarWidth= 0;

-		if (fSynchronizedScrolling && fScrollCanvas != null)

-			scrollbarWidth= fScrollCanvas.computeTrim(0, 0, 0, 0).width;

-		int rightTextWidth= width2-scrollbarWidth;

-		if (fRightCanvas != null)

-			rightTextWidth-= fMarginWidth;

-		fRight.getTextWidget().setBounds(x, y, rightTextWidth, height);

-		x+= rightTextWidth;

-			

-		if (fSynchronizedScrolling) {

-			if (fRightCanvas != null) {	// canvas is to the right of the text

-				fRightCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);

-				x+= fMarginWidth;

-			}

-			if (fScrollCanvas != null)

-				fScrollCanvas.setBounds(x, y, scrollbarWidth, height-scrollbarHeight);

-		}

-		

-		// doesn't work since TextEditors don't have their correct size yet.

-		updateVScrollBar(); 

-	}

-							

-	/**

-	 * Track selection changes to update the current Diff.

-	 */

-	private void handleSelectionChanged(MergeSourceViewer tw) {

-		Point p= tw.getSelectedRange();

-		Diff d= findDiff(tw, p.x, p.x+p.y);

-		updateStatus(d);

-		setCurrentDiff(d, false);	// don't select or reveal

-	}

-

-	private static IRegion toRegion(Position position) {

-		if (position != null)

-			return new Region(position.getOffset(), position.getLength());

-		return null;

-	}

-	

-	//---- the differencing

-	

-	private static int maxWork(IRangeComparator a, IRangeComparator l, IRangeComparator r) {

-		int ln= l.getRangeCount();

-		int rn= r.getRangeCount();

-		if (a != null) {

-			int an= a.getRangeCount();

-			return (2 * Math.max(an, ln)) + (2 * Math.max(an, rn));

-		}

-		return 2 * Math.max(ln, rn);

-	}

-	

-	/**

-	 * Perform a two level 2- or 3-way diff.

-	 * The first level is based on line comparison, the second level on token comparison.

-	 */

-	private void doDiff() {

-						

-		fAllDiffs= new ArrayList();

-		fChangeDiffs= new ArrayList();

-		fCurrentDiff= null;

-		

-		IDocument aDoc= null;

-		IDocument lDoc= fLeft.getDocument();

-		IDocument rDoc= fRight.getDocument();

-		if (lDoc == null || rDoc == null)

-			return;

-			

-		Position aRegion= null;

-		Position lRegion= fLeft.getRegion();

-		Position rRegion= fRight.getRegion();

-				

-		boolean threeWay= isThreeWay();

-		

-		if (threeWay && !fIgnoreAncestor) {

-			aDoc= fAncestor.getDocument();

-			aRegion= fAncestor.getRegion();

-		}

-		

-		fAncestor.resetLineBackground();

-		fLeft.resetLineBackground();

-		fRight.resetLineBackground();

-		

-		boolean ignoreWhiteSpace= Utilities.getBoolean(getCompareConfiguration(), CompareConfiguration.IGNORE_WHITESPACE, false);		

-		

-		DocLineComparator sright= new DocLineComparator(rDoc, toRegion(rRegion), ignoreWhiteSpace);

-		DocLineComparator sleft= new DocLineComparator(lDoc, toRegion(lRegion), ignoreWhiteSpace);

-		DocLineComparator sancestor= null;

-		if (aDoc != null)

-			sancestor= new DocLineComparator(aDoc, toRegion(aRegion), ignoreWhiteSpace);

-			

-		if (!fSubDoc && rRegion != null && lRegion != null) {

-			// we have to add a diff for the ignored lines

-			

-			int astart= 0;

-			int as= 0;

-			if (aRegion != null) {

-				astart= aRegion.getOffset();

-				as= Math.max(0, astart-1);

-			}

-			int ys= Math.max(0, lRegion.getOffset()-1);

-			int ms= Math.max(0, rRegion.getOffset()-1);

-			

-			if (as > 0 || ys > 0 || ms > 0) {

-				Diff diff= new Diff(null, RangeDifference.NOCHANGE,

-					aDoc, 0, astart,

-					lDoc, 0, lRegion.getOffset(),

-					rDoc, 0, rRegion.getOffset());

-				fAllDiffs.add(diff);

-			}

-		}

-		

-		final ResourceBundle bundle= getResourceBundle();

-			

-		final Object[] result= new Object[1];

-		final DocLineComparator sa= sancestor, sl= sleft, sr= sright;

-		IRunnableWithProgress runnable= new IRunnableWithProgress() {

-			public void run(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {

-				String progressTitle= Utilities.getString(bundle, "compareProgressTask.title"); //$NON-NLS-1$

-				monitor.beginTask(progressTitle, maxWork(sa, sl, sr));

-				try {

-					result[0]= RangeDifferencer.findRanges(monitor, sa, sl, sr);

-				} catch (OutOfMemoryError ex) {

-					System.gc();

-					throw new InvocationTargetException(ex);

-				}

-				if (monitor.isCanceled())	{ // cancelled

-					throw new InterruptedException();

-				}

-				monitor.done();

-			}

-		};

-		

-		RangeDifference[] e= null;

-		try {

-			TimeoutContext.run(true, TIMEOUT, getControl().getShell(), runnable);

-			e= (RangeDifference[]) result[0];

-		} catch (InvocationTargetException ex) {

-			String title= Utilities.getString(bundle, "tooComplexError.title"); //$NON-NLS-1$

-			String format= Utilities.getString(bundle, "tooComplexError.format"); //$NON-NLS-1$

-			String msg= MessageFormat.format(format, new Object[] { Integer.toString(TIMEOUT/1000) } );

-			MessageDialog.openError(fComposite.getShell(), title, msg);

-			e= null;

-		} catch (InterruptedException ex) {

-			// 

-		}

-					

-		if (e == null) {

-			// we create a NOCHANGE range for the whole document

-			Diff diff= new Diff(null, RangeDifference.NOCHANGE,

-				aDoc, 0, aDoc != null ? aDoc.getLength() : 0,

-				lDoc, 0, lDoc.getLength(),

-				rDoc, 0, rDoc.getLength());	

-				

-			fAllDiffs.add(diff);

-		} else {

-			for (int i= 0; i < e.length; i++) {

-				String a= null, s= null, d= null;

-				RangeDifference es= e[i];

-				

-				int kind= es.kind();

-				

-				int ancestorStart= 0;

-				int ancestorEnd= 0;

-				if (sancestor != null) {

-					ancestorStart= sancestor.getTokenStart(es.ancestorStart());

-					ancestorEnd= getTokenEnd2(sancestor, es.ancestorStart(), es.ancestorLength());

-				}

-				

-				int leftStart= sleft.getTokenStart(es.leftStart());

-				int leftEnd= getTokenEnd2(sleft, es.leftStart(), es.leftLength());

-				

-				int rightStart= sright.getTokenStart(es.rightStart());

-				int rightEnd= getTokenEnd2(sright, es.rightStart(), es.rightLength());

-				

-				Diff diff= new Diff(null, kind,

-					aDoc, ancestorStart, ancestorEnd,

-					lDoc, leftStart, leftEnd,

-					rDoc, rightStart, rightEnd);	

-				

-				fAllDiffs.add(diff);	// remember all range diffs for scrolling

-		

-				if (ignoreWhiteSpace) {

-					if (sancestor != null)

-						a= extract2(aDoc, sancestor, es.ancestorStart(), es.ancestorLength());

-					s= extract2(lDoc, sleft, es.leftStart(), es.leftLength());

-					d= extract2(rDoc, sright, es.rightStart(), es.rightLength());

-				

-					if ((a == null || a.trim().length() == 0) && s.trim().length() == 0 && d.trim().length() == 0)

-						continue;

-				}

-		

-				if (kind != RangeDifference.NOCHANGE && kind != RangeDifference.ANCESTOR) {

-					fChangeDiffs.add(diff);	// here we remember only the real diffs

-					updateDiffBackground(diff);

-		

-					if (s == null)

-						s= extract2(lDoc, sleft, es.leftStart(), es.leftLength());

-					if (d == null)

-						d= extract2(rDoc, sright, es.rightStart(), es.rightLength());

-					

-					if (s.length() > 0 && d.length() > 0) {

-						if (a == null && sancestor != null)

-							a= extract2(aDoc, sancestor, es.ancestorStart(), es.ancestorLength());

-						if (USE_MERGING_TOKEN_DIFF)

-							mergingTokenDiff(diff, aDoc, a, rDoc, d, lDoc, s);

-						else

-							simpleTokenDiff(diff, aDoc, a, rDoc, d, lDoc, s);

-					}

-				}

-			}

-		}

-		

-		if (!fSubDoc && rRegion != null && lRegion != null) {

-			// we have to add a diff for the ignored lines

-			

-			int aEnd= 0;

-			int aLen= 0;

-			if (aRegion != null && aDoc != null) {

-				aEnd= aRegion.getOffset()+aRegion.getLength();

-				aLen= aDoc.getLength();

-			}

-			Diff diff= new Diff(null, RangeDifference.NOCHANGE,

-				aDoc, aEnd, aLen,

-				lDoc, lRegion.getOffset()+lRegion.getLength(), lDoc.getLength(),

-				rDoc, rRegion.getOffset()+rRegion.getLength(), rDoc.getLength());

-			fAllDiffs.add(diff);

-		}

-	}

-	

-	private int getTokenEnd(ITokenComparator tc, int start, int count) {

-		if (count <= 0)

-			return tc.getTokenStart(start);

-		int index= start + count - 1;

-		return tc.getTokenStart(index) + tc.getTokenLength(index);

-	}

-	

-	private static int getTokenEnd2(ITokenComparator tc, int start, int length) {

-		return tc.getTokenStart(start + length);

-	}

-

-	/**

-	 * Returns the content of lines in the specified range as a String.

-	 * This includes the line separators.

-	 *

-	 * @param doc the document from which to extract the characters

-	 * @param start index of first line

-	 * @param length number of lines

-	 * @return the contents of the specified line range as a String

-	 */

-	private String extract2(IDocument doc, ITokenComparator tc, int start, int length) {

-		int count= tc.getRangeCount();

-		if (length > 0 && count > 0) {

-			

-//			

-//			int startPos= tc.getTokenStart(start);

-//			int endPos= startPos;

-//			

-//			if (length > 1)

-//				endPos= tc.getTokenStart(start + (length-1));

-//			endPos+= tc.getTokenLength(start + (length-1));

-//				

-

-			int startPos= tc.getTokenStart(start);

-			int endPos;

-			

-			if (length == 1) {

-				endPos= startPos + tc.getTokenLength(start);

-			} else {

-				endPos= tc.getTokenStart(start + length);

-			}

-

-			try {

-				return doc.get(startPos, endPos - startPos);

-			} catch (BadLocationException e) {

-			}

-

-		}

-		return ""; //$NON-NLS-1$

-	}

-

-	/**

-	 * Performs a token based 3-way diff on the character range specified by the given baseDiff.

-	 */

-	private void simpleTokenDiff(final Diff baseDiff,

-				IDocument ancestorDoc, String a,

-				IDocument rightDoc, String d,

-				IDocument leftDoc, String s) {

-

-		int ancestorStart= 0;

-		ITokenComparator sa= null;

-		if (ancestorDoc != null) {

-			ancestorStart= baseDiff.fAncestorPos.getOffset();

-			sa= createTokenComparator(a);

-		}

-		

-		int rightStart= baseDiff.fRightPos.getOffset();	

-		ITokenComparator sm= createTokenComparator(d);

-		

-		int leftStart= baseDiff.fLeftPos.getOffset();

-		ITokenComparator sy= createTokenComparator(s);

-		

-		RangeDifference[] e= RangeDifferencer.findRanges(sa, sy, sm);

-		for (int i= 0; i < e.length; i++) {

-			RangeDifference es= e[i];

-			int kind= es.kind();

-			if (kind != RangeDifference.NOCHANGE) {

-				

-				int ancestorStart2= ancestorStart;

-				int ancestorEnd2= ancestorStart;

-				if (ancestorDoc != null) {

-					ancestorStart2 += sa.getTokenStart(es.ancestorStart());

-					ancestorEnd2 += getTokenEnd(sa, es.ancestorStart(), es.ancestorLength());

-				}

-				

-				int leftStart2= leftStart + sy.getTokenStart(es.leftStart());

-				int leftEnd2= leftStart + getTokenEnd(sy, es.leftStart(), es.leftLength());

-				

-				int rightStart2= rightStart + sm.getTokenStart(es.rightStart());

-				int rightEnd2= rightStart + getTokenEnd(sm, es.rightStart(), es.rightLength());

-				

-				Diff diff= new Diff(baseDiff, kind,

-						ancestorDoc, ancestorStart2, ancestorEnd2,

-						leftDoc, leftStart2, leftEnd2,

-						rightDoc, rightStart2, rightEnd2);

-				diff.fIsToken= true;

-				// add to base Diff

-				baseDiff.add(diff);

-			}

-		}

-	}

-	

-	/**

-	 * Performs a "smart" token based 3-way diff on the character range specified by the given baseDiff.

-	 * It is "smart" because it tries to minimize the number of token diffs by merging them.

-	 */

-	private void mergingTokenDiff(Diff baseDiff, 

-				IDocument ancestorDoc, String a,

-				IDocument rightDoc, String d,

-				IDocument leftDoc, String s) {

-		ITokenComparator sa= null;

-		int ancestorStart= 0;

-		if (ancestorDoc != null) {

-			sa= createTokenComparator(a);

-			ancestorStart= baseDiff.fAncestorPos.getOffset();

-		}

-		

-		int rightStart= baseDiff.fRightPos.getOffset();	

-		ITokenComparator sm= createTokenComparator(d);

-		

-		int leftStart= baseDiff.fLeftPos.getOffset();

-		ITokenComparator sy= createTokenComparator(s);

-		

-		RangeDifference[] r= RangeDifferencer.findRanges(sa, sy, sm);

-		for (int i= 0; i < r.length; i++) {

-			RangeDifference  es= r[i];

-			// determine range of diffs in one line

-			int start= i;

-			int leftLine= -1;

-			int rightLine= -1;

-			try {

-				leftLine= leftDoc.getLineOfOffset(leftStart+sy.getTokenStart(es.leftStart()));

-				rightLine= rightDoc.getLineOfOffset(rightStart+sm.getTokenStart(es.rightStart()));

-			} catch (BadLocationException e) {

-			}

-			i++;

-			for (; i < r.length; i++) {

-				es= r[i];

-				try {

-					if (leftLine != leftDoc.getLineOfOffset(leftStart+sy.getTokenStart(es.leftStart())))

-						break;

-					if (rightLine != rightDoc.getLineOfOffset(rightStart+sm.getTokenStart(es.rightStart())))

-						break;

-				} catch (BadLocationException e) {

-				}

-			}

-			int end= i;

-			

-			// find first diff from left

-			RangeDifference first= null;

-			for (int ii= start; ii < end; ii++) {

-				es= r[ii];

-				int kind= es.kind();

-				if (kind != RangeDifference.NOCHANGE && kind != RangeDifference.ANCESTOR) {

-					first= es;

-					break;

-				}

-			}

-			

-			// find first diff from mine

-			RangeDifference last= null;

-			for (int ii= end-1; ii >= start; ii--) {

-				es= r[ii];

-				int kind= es.kind();

-				if (kind != RangeDifference.NOCHANGE && kind != RangeDifference.ANCESTOR) {

-					last= es;

-					break;

-				}

-			}

-			

-			if (first != null && last != null) {

-				

-				int ancestorStart2= 0;

-				int ancestorEnd2= 0;

-				if (ancestorDoc != null) {

-					ancestorStart2= ancestorStart+sa.getTokenStart(first.ancestorStart());

-					ancestorEnd2= ancestorStart+getTokenEnd(sa, last.ancestorStart(), last.ancestorLength());

-				}

-				

-				int leftStart2= leftStart+sy.getTokenStart(first.leftStart());

-				int leftEnd2= leftStart+getTokenEnd(sy, last.leftStart(), last.leftLength());

-				

-				int rightStart2= rightStart+sm.getTokenStart(first.rightStart());

-				int rightEnd2= rightStart+getTokenEnd(sm, last.rightStart(), last.rightLength());

-				Diff diff= new Diff(baseDiff, first.kind(),

-							ancestorDoc, ancestorStart2, ancestorEnd2+1,

-							leftDoc, leftStart2, leftEnd2+1,

-							rightDoc, rightStart2, rightEnd2+1);	

-				diff.fIsToken= true;

-				baseDiff.add(diff);

-			}

-		}

-	}

-	

-	//---- update UI stuff

-	

-	private void updateControls() {

-		

-		boolean leftToRight= false;

-		boolean rightToLeft= false;

-		

-		updateStatus(fCurrentDiff);

-

-		if (fCurrentDiff != null) {

-			IMergeViewerContentProvider cp= getMergeContentProvider();

-			if (cp != null) {

-				rightToLeft= cp.isLeftEditable(getInput());

-				leftToRight= cp.isRightEditable(getInput());

-			}			

-		}

-		

-		if (fDirectionLabel != null) {

-			if (fCurrentDiff != null && isThreeWay() && !fIgnoreAncestor) {

-				fDirectionLabel.setImage(fCurrentDiff.getImage());

-			} else {

-				fDirectionLabel.setImage(null);

-			}

-		}

-		

-		if (fCopyDiffLeftToRightItem != null)			

-			((Action)fCopyDiffLeftToRightItem.getAction()).setEnabled(leftToRight);

-		if (fCopyDiffRightToLeftItem != null)

-			((Action)fCopyDiffRightToLeftItem.getAction()).setEnabled(rightToLeft);

-			

-		boolean enableNavigation= false;

-		if (fCurrentDiff == null && fChangeDiffs != null && fChangeDiffs.size() > 0)

-			enableNavigation= true;

-		else if (fChangeDiffs != null && fChangeDiffs.size() > 1)

-			enableNavigation= true;

-		else if (fCurrentDiff != null && fCurrentDiff.fDiffs != null)

-			enableNavigation= true;

-		else if (fCurrentDiff != null && fCurrentDiff.fIsToken)

-			enableNavigation= true;

-		

-		if (fNextItem != null) {

-			IAction a= fNextItem.getAction();

-			a.setEnabled(enableNavigation);

-		}

-		if (fPreviousItem != null) {

-			IAction a= fPreviousItem.getAction();

-			a.setEnabled(enableNavigation);

-		}	

-	}

-

-	private void updateStatus(Diff diff) {

-		

-		IActionBars bars= Utilities.findActionBars(fComposite);

-		if (bars == null)

-			return;

-		IStatusLineManager slm= bars.getStatusLineManager();

-		if (slm == null)

-			return;

-					

-		String diffDescription;

-		

-		if (diff == null) {

-			diffDescription= ", no diff";

-		} else {

-			

-			if (diff.fIsToken)		// we don't show special info for token diffs

-				diff= diff.fParent;

-		

-			String format= ", {0} #{1} (Left: {2}, Right: {3})";

-			diffDescription= MessageFormat.format(format, 

-				new String[] {

-					getDiffType(diff),						// 0: diff type

-					getDiffNumber(diff),					// 1: diff number

-					getDiffRange(fLeft, diff.fLeftPos),		// 2: left start line

-					getDiffRange(fRight, diff.fRightPos)	// 3: left end line

-				}

-			);

-		}

-		

-		String format= "Left: {0}, Right: {1}{2}";

-		String s= MessageFormat.format(format, 

-			new String[] {

-				getCursorPosition(fLeft),	// 0: left cursor

-				getCursorPosition(fRight),	// 1: right column

-				diffDescription				// 2: diff description

-			}

-		);

-	

-		slm.setMessage(s);

-	}

-	

-	private String getDiffType(Diff diff) {

-		String s= "";

-		switch(diff.fDirection) {

-		case RangeDifference.LEFT:

-			s= "outgoing";

-			break;

-		case RangeDifference.RIGHT:

-			s= "incoming";

-			break;

-		case RangeDifference.CONFLICT:

-			s= "conflicting";

-			break;

-		}

-		s+= " " + diff.changeType();

-		return s;

-	}

-	

-	private String getDiffNumber(Diff diff) {

-		// find the diff's number

-		int diffNumber= 0;

-		if (fChangeDiffs != null) {

-			Iterator e= fChangeDiffs.iterator();

-			while (e.hasNext()) {

-				Diff d= (Diff) e.next();

-				diffNumber++;

-				if (d == diff)

-					break;

-			}

-		}

-		return Integer.toString(diffNumber);

-	}

-	

-	private String getDiffRange(MergeSourceViewer v, Position pos) {

-		Point p= v.getLineRange(pos, new Point(0, 0));

-		int startLine= p.x+1;

-		int endLine= p.x+p.y;

-		if (endLine < startLine)

-			return "before line " + startLine;

-		return startLine + " : " + endLine;

-	}

-	

-	/**

-	 * Returns a description of the cursor position.

-	 * 

-	 * @return a description of the cursor position

-	 */

-	private String getCursorPosition(MergeSourceViewer v) {

-		if (v != null) {

-			StyledText styledText= v.getTextWidget();

-			

-			IDocument document= v.getDocument();

-			if (document != null) {

-				int offset= v.getVisibleRegion().getOffset();

-				int caret= offset + styledText.getCaretOffset();

-				

-				try {

-					

-					int line=document.getLineOfOffset(caret);

-					

-					int lineOffset= document.getLineOffset(line);

-					int occurrences= 0;

-					for (int i= lineOffset; i < caret; i++)

-						if ('\t' == document.getChar(i))

-							++ occurrences;

-							

-					int tabWidth= styledText.getTabs();

-					int column= caret - lineOffset + (tabWidth -1) * occurrences;

-					

-					return ((line + 1) + " : " + (column + 1));

-					

-				} catch (BadLocationException x) {

-				}

-			}

-		}

-		return "??";	

-	}

-

-	protected void updateHeader() {

-		

-		super.updateHeader();

-				

-		updateControls();

-	}

-

-	/**

-	 * Creates the two items for copying a difference range from one side to the other 

-	 * and adds them to the given toolbar manager.

-	 */

-	protected void createToolItems(ToolBarManager tbm) {

-		

-		final String ignoreAncestorActionKey= "action.IgnoreAncestor.";	//$NON-NLS-1$

-		Action ignoreAncestorAction= new Action() {

-			public void run() {

-				setIgnoreAncestor(! fIgnoreAncestor);

-				Utilities.initToggleAction(this, getResourceBundle(), ignoreAncestorActionKey, fIgnoreAncestor);

-			}

-		};

-		ignoreAncestorAction.setChecked(fIgnoreAncestor);

-		Utilities.initAction(ignoreAncestorAction, getResourceBundle(), ignoreAncestorActionKey);

-		Utilities.initToggleAction(ignoreAncestorAction, getResourceBundle(), ignoreAncestorActionKey, fIgnoreAncestor);

-		

-		fIgnoreAncestorItem= new ActionContributionItem(ignoreAncestorAction);

-		fIgnoreAncestorItem.setVisible(false);

-		tbm.appendToGroup("modes", fIgnoreAncestorItem); //$NON-NLS-1$

-

-		tbm.add(new Separator());

-					

-		Action a= new Action() {

-			public void run() {

-				navigate(true, true, true);

-			}

-		};

-		Utilities.initAction(a, getResourceBundle(), "action.NextDiff."); //$NON-NLS-1$

-		fNextItem= new ActionContributionItem(a);

-		tbm.appendToGroup("navigation", fNextItem); //$NON-NLS-1$

-		

-		a= new Action() {

-			public void run() {

-				navigate(false, true, true);

-			}

-		};

-		Utilities.initAction(a, getResourceBundle(), "action.PrevDiff."); //$NON-NLS-1$

-		fPreviousItem= new ActionContributionItem(a);

-		tbm.appendToGroup("navigation", fPreviousItem); //$NON-NLS-1$

-

-		

-		CompareConfiguration cc= getCompareConfiguration();

-		

-		if (cc.isRightEditable()) {

-			a= new Action() {

-				public void run() {

-					copyDiffLeftToRight();

-				}

-			};

-			Utilities.initAction(a, getResourceBundle(), "action.CopyDiffLeftToRight."); //$NON-NLS-1$

-			fCopyDiffLeftToRightItem= new ActionContributionItem(a);

-			tbm.appendToGroup("merge", fCopyDiffLeftToRightItem); //$NON-NLS-1$

-		}

-		

-		if (cc.isLeftEditable()) {

-			a= new Action() {

-				public void run() {

-					copyDiffRightToLeft();

-				}

-			};

-			Utilities.initAction(a, getResourceBundle(), "action.CopyDiffRightToLeft."); //$NON-NLS-1$

-			fCopyDiffRightToLeftItem= new ActionContributionItem(a);

-			tbm.appendToGroup("merge", fCopyDiffRightToLeftItem); //$NON-NLS-1$

-		}

-	}

-	

-	/* package */ void propertyChange(PropertyChangeEvent event) {

-		

-		String key= event.getProperty();

-		

-		if (key.equals(CompareConfiguration.IGNORE_WHITESPACE)) {

-			// clear stuff

-			fCurrentDiff= null;

-		 	fChangeDiffs= null;

-			fAllDiffs= null;

-					

-			doDiff();

-					

-			updateControls();

-			invalidateLines();

-			updateVScrollBar();

-			

-			selectFirstDiff();

-			

-		} else if (key.equals(TEXT_FONT)) {

-			IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-			if (ps != null) {

-				updateFont(ps, fComposite);

-				invalidateLines();

-			}

-				

-		} else if (key.equals(ComparePreferencePage.SYNCHRONIZE_SCROLLING)) {

-			

-			IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-			

-			boolean b= ps.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);

-			if (b != fSynchronizedScrolling)

-				toggleSynchMode();

-		

-		} else

-			super.propertyChange(event);

-	}

-	

-	private void setIgnoreAncestor(boolean ignore) {

-		if (ignore != fIgnoreAncestor) {

-			fIgnoreAncestor= ignore;

-			setAncestorVisibility(false, !fIgnoreAncestor);

-		

-			// clear stuff

-			fCurrentDiff= null;

-		 	fChangeDiffs= null;

-			fAllDiffs= null;

-					

-			doDiff();

-					

-			invalidateLines();

-			updateVScrollBar();

-			

-			selectFirstDiff();

-		}

-	}

-	

-	private void selectFirstDiff() {

-		

-		if (fLeft == null || fRight == null) {

-			return;

-		}

-		if (fLeft.getDocument() == null || fRight.getDocument() == null) {

-			return;

-		}

-		

-		Diff firstDiff= null;

-		if (CompareNavigator.getDirection(fComposite))

-			firstDiff= findNext(fRight, fChangeDiffs, -1, -1, false);

-		else

-			firstDiff= findPrev(fRight, fChangeDiffs, 9999999, 9999999, false);

-		setCurrentDiff(firstDiff, true);

-	}

-	

-	private void toggleSynchMode() {

-		fSynchronizedScrolling= ! fSynchronizedScrolling;

-		

-		scrollVertical(0, null);

-		

-		// throw away central control (Sash or Canvas)

-		Control center= getCenter();

-		if (center != null && !center.isDisposed())

-			center.dispose();

-		

-		fLeft.getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);

-		fRight.getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);

-

-		fComposite.layout(true);

-	}

-					

-	protected void updateToolItems() {

-					

-		if (fIgnoreAncestorItem != null)

-			fIgnoreAncestorItem.setVisible(isThreeWay());

-		

-		super.updateToolItems();

-	}

-	

-	//---- painting lines

-	

-	/**

-	 * 

-	 */

-	private void updateLines(IDocument d) {

-

-		boolean left= false;

-		boolean right= false;

-		

-		// FIXME: this optimization is incorrect because

-		// it doesn't take replace operations into account where

-		// the old and new line count does not differ

-		if (d == fLeft.getDocument()) {

-			int l= fLeft.getLineCount();

-			left= fLeftLineCount != l;

-			fLeftLineCount= l;

-		} else if (d == fRight.getDocument()) {

-			int l= fRight.getLineCount();

-			right= fRightLineCount != l;

-			fRightLineCount= l;

-		}

-		

-		if (left || right) {

-			

-			if (left) {

-				if (fLeftCanvas != null)

-					fLeftCanvas.redraw();

-			} else {

-				if (fRightCanvas != null)

-					fRightCanvas.redraw();

-			}

-			Control center= getCenter();

-			if (center != null)

-				center.redraw();

-

-			updateVScrollBar();

-		}

-	}

-	

-	private void invalidateLines() {

-		if (isThreeWay()) {

-			if (Utilities.okToUse(fAncestorCanvas))

-				fAncestorCanvas.redraw();

-			if (fAncestor.isControlOkToUse())

-				fAncestor.getTextWidget().redraw();

-		}

-		

-		if (Utilities.okToUse(fLeftCanvas))

-			fLeftCanvas.redraw();

-			

-		if (fLeft.isControlOkToUse())

-			fLeft.getTextWidget().redraw();

-			

-		if (Utilities.okToUse(getCenter()))

-			getCenter().redraw();

-			

-		if (fRight.isControlOkToUse())

-			fRight.getTextWidget().redraw();

-			

-		if (Utilities.okToUse(fRightCanvas))

-			fRightCanvas.redraw();

-	}

-	

-	private void paintCenter(Canvas canvas, GC g) {

-		

-		if (! fSynchronizedScrolling)

-			return;

-

-		int lineHeight= fLeft.getTextWidget().getLineHeight();			

-		int visibleHeight= fRight.getViewportHeight();

-

-		Point size= canvas.getSize();

-		int x= 0;

-		int w= size.x;

-				

-		g.setBackground(canvas.getBackground());

-		g.fillRectangle(x+1, 0, w-2, size.y);

-		

-		if (!fIsMotif) {

-			// draw thin line between center ruler and both texts

-			g.setBackground(canvas.getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));

-			g.fillRectangle(0, 0, 1, size.y);

-			g.fillRectangle(w-1, 0, 1, size.y);

-		}

-			

-		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;

-	

-				fPts[0]= x;	fPts[1]= ly;	fPts[2]= w;	fPts[3]= ry;

-				fPts[6]= x;	fPts[7]= ly+lh;	fPts[4]= w;	fPts[5]= ry+rh;

-							

-				g.setBackground(getColor(getFillColor(diff)));

-				g.fillPolygon(fPts);

-	

-				g.setLineWidth(LW);

-				g.setForeground(getColor(getStrokeColor(diff)));

-				g.drawLine(fPts[0], fPts[1], fPts[2], fPts[3]);

-				g.drawLine(fPts[6], fPts[7], fPts[4], fPts[5]);

-			}

-		}

-	}

-	

-	private void paintSides(GC g, MergeSourceViewer tp, Canvas canvas, boolean right) {

-

-		int lineHeight= tp.getTextWidget().getLineHeight();

-		int visibleHeight= tp.getViewportHeight();

-

-		Point size= canvas.getSize();

-		int x= 0;

-		int w= fMarginWidth;

-			

-		g.setBackground(canvas.getBackground());

-		g.fillRectangle(x, 0, w, size.y);

-

-		if (!fIsMotif) {

-			// draw thin line between ruler and text

-			g.setBackground(canvas.getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));

-			if (right)

-				g.fillRectangle(0, 0, 1, size.y);

-			else

-				g.fillRectangle(size.x-1, 0, 1, size.y);

-		}

-

-		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;

-					

-				g.setBackground(getColor(getFillColor(diff)));

-				if (right)

-					g.fillRectangle(x, y, w-5, h);

-				else

-					g.fillRectangle(x+5, y, w-3, h);

-	

-				g.setBackground(getColor(getStrokeColor(diff)));

-				if (right) {

-					g.fillRectangle(x, y-1, w-4, LW);

-					g.fillRectangle(x+5, y, LW, h);

-					g.fillRectangle(x, y+h-1, w-4, LW);

-				} else {

-					g.fillRectangle(x+3, y-1, w-3, LW);

-					g.fillRectangle(x+3, y, LW, h);

-					g.fillRectangle(x+3, y+h-1, w-3, LW);

-				}

-			}

-		}

-	}

-	

-	private void paint(PaintEvent event, MergeSourceViewer tp) {

-		

-		if (fChangeDiffs == null)

-			return;

-

-		Control canvas= (Control) event.widget;

-		GC g= event.gc;

-		

-		int lineHeight= tp.getTextWidget().getLineHeight();			

-		int w= canvas.getSize().x;

-		int shift= tp.getVerticalScrollOffset() + (2-LW);

-		int maxh= event.y+event.height; 	// visibleHeight

-		

-		//if (fIsMotif)

-			shift+= fTopInset;

-				

-		Point range= new Point(0, 0);

-				

-		Iterator e= fChangeDiffs.iterator();	

-		while (e.hasNext()) {

-			Diff diff= (Diff) e.next();

-			if (diff.isDeleted())

-				continue;

-			

-			if (fShowCurrentOnly && !isCurrentDiff(diff))

-				continue;

-

-			tp.getLineRange(diff.getPosition(tp), range);

-			int y= (range.x * lineHeight) + shift;

-			int h= range.y * lineHeight;

-			

-			if (y+h < event.y)

-				continue;

-			if (y > maxh)

-				break;

-			

-			g.setBackground(getColor(getStrokeColor(diff)));

-			g.fillRectangle(0, y-1, w, LW);

-			g.fillRectangle(0, y+h-1, w, LW);

-		}

-	}

-

-	private RGB getFillColor(Diff diff) {

-		boolean selected= fCurrentDiff != null && fCurrentDiff.fParent == diff;

-		

-		if (isThreeWay() && !fIgnoreAncestor) {

-			switch (diff.fDirection) {

-			case RangeDifference.RIGHT:

-				if (fLeftIsLocal)

-					return selected ? SELECTED_INCOMING_FILL : INCOMING_FILL;

-				return selected ? SELECTED_OUTGOING_FILL : OUTGOING_FILL;

-			case RangeDifference.ANCESTOR:

-				return selected ? SELECTED_CONFLICT_FILL : CONFLICT_FILL;

-			case RangeDifference.LEFT:

-				if (fLeftIsLocal)

-					return selected ? SELECTED_OUTGOING_FILL : OUTGOING_FILL;

-				return selected ? SELECTED_INCOMING_FILL : INCOMING_FILL;

-			case RangeDifference.CONFLICT:

-				return selected ? SELECTED_CONFLICT_FILL : CONFLICT_FILL;

-			}

-			return null;

-		}

-		return selected ? SELECTED_OUTGOING_FILL : OUTGOING_FILL;

-	}

-	

-	private RGB getStrokeColor(Diff diff) {

-		boolean selected= fCurrentDiff != null && fCurrentDiff.fParent == diff;

-		

-		if (isThreeWay() && !fIgnoreAncestor) {

-			switch (diff.fDirection) {

-			case RangeDifference.RIGHT:

-				if (fLeftIsLocal)

-					return selected ? SELECTED_INCOMING : INCOMING;

-				return selected ? SELECTED_OUTGOING : OUTGOING;

-			case RangeDifference.ANCESTOR:

-				return selected ? SELECTED_CONFLICT : CONFLICT;

-			case RangeDifference.LEFT:

-				if (fLeftIsLocal)

-					return selected ? SELECTED_OUTGOING : OUTGOING;

-				return selected ? SELECTED_INCOMING : INCOMING;

-			case RangeDifference.CONFLICT:

-				return selected ? SELECTED_CONFLICT : CONFLICT;

-			}

-			return null;

-		}

-		return selected ? SELECTED_OUTGOING : OUTGOING;

-	}

-	

-	private Color getColor(RGB rgb) {

-		if (rgb == null)

-			return null;

-		if (fColors == null)

-			fColors= new HashMap(20);

-		Color c= (Color) fColors.get(rgb);

-		if (c == null) {

-			c= new Color(fComposite.getDisplay(), rgb);

-			fColors.put(rgb, c);

-		}

-		return c;

-	}

-	

-	//---- Navigating and resolving Diffs

-	

-	private boolean navigate(boolean down, boolean wrap, boolean deep) {

-

-		Diff diff= null;

-		

-		for (;;) {

-			

-			if (fChangeDiffs != null) {

-				MergeSourceViewer part= fFocusPart;

-				if (part == null)

-					part= fRight;

-				

-				if (part != null) {

-					Point s= part.getSelectedRange();

-					if (down)

-						diff= findNext(part, fChangeDiffs, s.x, s.x+s.y, deep);

-					else

-						diff= findPrev(part, fChangeDiffs, s.x, s.x+s.y, deep);					

-				}		

-			}

-		

-			if (diff == null) {

-				if (wrap) {

-					Control c= getControl();

-					if (Utilities.okToUse(c))

-						c.getDisplay().beep();

-					if (DEAD_STEP)

-						return true;

-					if (fChangeDiffs.size() > 0) {

-						if (down)

-							diff= (Diff) fChangeDiffs.get(0);

-						else

-							diff= (Diff) fChangeDiffs.get(fChangeDiffs.size()-1);

-					}

-				} else

-					return true;

-			}

-			

-			setCurrentDiff(diff, true);

-			

-			if (diff != null && diff.fDirection == RangeDifference.ANCESTOR

-									&& !getAncestorEnabled())

-				continue;

-				

-			break;

-		}

-

-		return false;

-	}	

-		

-	/**

-	 * Find the Diff that overlaps with the given TextPart's text range.

-	 * If the range doesn't overlap with any range <code>null</code>

-	 * is returned.

-	 */

-	private Diff findDiff(MergeSourceViewer tp, int rangeStart, int rangeEnd) {

-		if (fChangeDiffs != null) {

-			Iterator e= fChangeDiffs.iterator();

-			while (e.hasNext()) {

-				Diff diff= (Diff) e.next();

-				if (diff.contains(tp, rangeStart, rangeEnd))

-					return diff;

-			}

-		}

-		return null;

-	}

-	

-	private static Diff findNext(MergeSourceViewer tp, List v, int start, int end, boolean deep) {

-		for (int i= 0; i < v.size(); i++) {

-			Diff diff= (Diff) v.get(i);

-			Position p= diff.getPosition(tp);

-			if (p != null) {

-				int startOffset= p.getOffset();

-				if (end < startOffset)  // <=

-					return diff;

-				if (deep && diff.fDiffs != null) {

-					Diff d= null;

-					int endOffset= startOffset + p.getLength();

-					if (start == startOffset && (end == endOffset || end == endOffset-1)) {

-						d= findNext(tp, diff.fDiffs, start-1, start-1, deep);

-					} else if (end < endOffset) {

-						d= findNext(tp, diff.fDiffs, start, end, deep);

-					}

-					if (d != null)

-						return d;

-				}

-			}

-		}

-		return null;

-	}

-	

-	private static Diff findPrev(MergeSourceViewer tp, List v, int start, int end, boolean deep) {

-		for (int i= v.size()-1; i >= 0; i--) {

-			Diff diff= (Diff) v.get(i);

-			Position p= diff.getPosition(tp);

-			if (p != null) {

-				int startOffset= p.getOffset();

-				int endOffset= startOffset + p.getLength();

-				if (start > endOffset)

-					return diff;

-				if (deep && diff.fDiffs != null) {

-					Diff d= null;

-					if (start == startOffset && end == endOffset) {

-						d= findPrev(tp, diff.fDiffs, end, end, deep);

-					} else if (start >= startOffset) {

-						d= findPrev(tp, diff.fDiffs, start, end, deep);

-					}

-					if (d != null)

-						return d;

-				}

-			}

-		}

-		return null;

-	}

-		

-	/*

-	 * Set the currently active Diff and update the toolbars controls and lines.

-	 * If <code>revealAndSelect</code> is <code>true</code> the Diff is revealed and

-	 * selected in both TextParts.

-	 */

-	private void setCurrentDiff(Diff d, boolean revealAndSelect) {

-

-		if (d == fCurrentDiff)

-			return;

-						

-		Diff oldDiff= fCurrentDiff;

-					

-		if (d != null && revealAndSelect) {

-			

-			// before we set fCurrentDiff we change the selection

-			// so that the paint code uses the old background colors

-			// otherwise selection isn't drawn correctly

-			if (isThreeWay() && !fIgnoreAncestor)

-				fAncestor.setSelection(d.fAncestorPos);

-			fLeft.setSelection(d.fLeftPos);

-			fRight.setSelection(d.fRightPos);

-			

-			// now switch diffs

-			fCurrentDiff= d;

-			revealDiff(d, d.fIsToken);

-		} else {

-			fCurrentDiff= d;

-		}

-		

-		Diff d1= oldDiff != null ? oldDiff.fParent : null;

-		Diff d2= fCurrentDiff != null ? fCurrentDiff.fParent : null;

-		if (d1 != d2) {

-			updateDiffBackground(d1);

-			updateDiffBackground(d2);

-		}

-		

-		updateControls();

-		invalidateLines();

-	}

-	

-	/**

-	 * Smart determines whether 

-	 */

-	private void revealDiff(Diff d, boolean smart) {

-		

-		boolean ancestorIsVisible= false;

-		boolean leftIsVisible= false;

-		boolean rightIsVisible= false;

-

-		if (smart) {

-			Point region= new Point(0, 0);

-			// find the starting line of the diff in all text widgets

-			int ls= fLeft.getLineRange(d.fLeftPos, region).x;

-			int rs= fRight.getLineRange(d.fRightPos, region).x;

-			

-			if (isThreeWay() && !fIgnoreAncestor) {

-				int as= fAncestor.getLineRange(d.fAncestorPos, region).x;

-				if (as >= fAncestor.getTopIndex() && as <= fAncestor.getBottomIndex())

-					ancestorIsVisible= true;

-			}

-

-			if (ls >= fLeft.getTopIndex() && ls <= fLeft.getBottomIndex())

-				leftIsVisible= true;

-

-			if (rs >= fRight.getTopIndex() && rs <= fRight.getBottomIndex())

-				rightIsVisible= true;

-		}

-

-		// vertical scrolling

-		if (!leftIsVisible || !rightIsVisible) {

-			int vpos= 0;

-			

-			MergeSourceViewer allButThis= null;

-			if (leftIsVisible) {

-				vpos= realToVirtualPosition(fLeft, fLeft.getTopIndex());

-				allButThis= fLeft;

-			} else if (rightIsVisible) {

-				vpos= realToVirtualPosition(fRight, fRight.getTopIndex());

-				allButThis= fRight;

-			} else if (ancestorIsVisible) {

-				vpos= realToVirtualPosition(fAncestor, fAncestor.getTopIndex());

-				allButThis= fAncestor;

-			} else {

-				if (fAllDiffs != null) {

-					Iterator e= fAllDiffs.iterator();

-					for (int i= 0; e.hasNext(); i++) {

-						Diff diff= (Diff) e.next();

-						if (diff == d)

-							break;

-						vpos+= diff.getMaxDiffHeight(fShowAncestor);

-					}

-				}

-				vpos-= fRight.getViewportLines()/4;

-				if (vpos < 0)

-					vpos= 0;

-			}

-							

-			scrollVertical(vpos, allButThis);

-			if (fVScrollBar != null)

-				fVScrollBar.setSelection(vpos);

-		}

-		

-		// horizontal scrolling

-		if (d.fIsToken) {

-			// we only scroll horizontally for token diffs

-			reveal(fAncestor, d.fAncestorPos);

-			reveal(fLeft, d.fLeftPos);

-			reveal(fRight, d.fRightPos);

-		} else {

-			// in all other cases we reset the horizontal offset

-			hscroll(fAncestor);

-			hscroll(fLeft);

-			hscroll(fRight);

-		}

-	}

-	

-	private static void reveal(MergeSourceViewer v, Position p) {

-		if (v != null && p != null) {

-			StyledText st= v.getTextWidget();

-			if (st != null) {

-				Rectangle r= st.getClientArea();

-				if (!r.isEmpty())	// workaround for #7320: Next diff scrolls when going into current diff 

-					v.revealRange(p.offset, p.length);

-			}

-		}

-	}

-	

-	private static void hscroll(MergeSourceViewer v) {

-		if (v != null) {

-			StyledText st= v.getTextWidget();

-			if (st != null)

-				st.setHorizontalIndex(0);

-		}

-	}

-	

-	//--------------------------------------------------------------------------------

-	

-	protected void copy(boolean leftToRight) {

-		if (leftToRight) {

-			if (fLeft.getEnabled()) {

-				// copy text

-				String text= fLeft.getTextWidget().getText();

-				fRight.getTextWidget().setText(text);

-				fRight.setEnabled(true);

-			} else {

-				// delete

-				fRight.getTextWidget().setText(""); //$NON-NLS-1$

-				fRight.setEnabled(false);

-			}

-			fRightLineCount= fRight.getLineCount();

-			setRightDirty(true);

-			fRightContentsChanged= false;

-		} else {

-			if (fRight.getEnabled()) {

-				// copy text

-				String text= fRight.getTextWidget().getText();

-				fLeft.getTextWidget().setText(text);

-				fLeft.setEnabled(true);

-			} else {

-				// delete

-				fLeft.getTextWidget().setText(""); //$NON-NLS-1$

-				fLeft.setEnabled(false);

-			}

-			fLeftLineCount= fLeft.getLineCount();

-			setLeftDirty(true);

-			fLeftContentsChanged= false;

-		}

-		doDiff();

-		invalidateLines();

-		updateVScrollBar();

-		selectFirstDiff();

-	}

-

-	private void copyDiffLeftToRight() {

-		copy(fCurrentDiff, true, false, false);

-	}

-

-	private void copyDiffRightToLeft() {

-		copy(fCurrentDiff, false, false, false);

-	}

-		

-	private void copy(Diff diff, boolean leftToRight, boolean both, boolean gotoNext) {

-		

-		if (diff != null && !diff.isResolved()) {

-

-			Position fromPos= null;

-			Position toPos= null;

-			IDocument fromDoc= null;

-			IDocument toDoc= null;

-

-			if (leftToRight) {

-				fRight.setEnabled(true);

-				fromPos= diff.fLeftPos;

-				toPos= diff.fRightPos;

-				fromDoc= fLeft.getDocument();

-				toDoc= fRight.getDocument();

-			} else {

-				fLeft.setEnabled(true);

-				fromPos= diff.fRightPos;

-				toPos= diff.fLeftPos;

-				fromDoc= fRight.getDocument();

-				toDoc= fLeft.getDocument();

-			}

-			

-			if (fromDoc != null) {

-				

-				int fromStart= fromPos.getOffset();

-				int fromLen= fromPos.getLength();

-				

-				int toStart= toPos.getOffset();

-				int toLen= toPos.getLength();

-

-				try {

-					String s= null;

-											

-					switch (diff.fDirection) {

-					case RangeDifference.RIGHT:

-					case RangeDifference.LEFT:

-						s= fromDoc.get(fromStart, fromLen);

-						break;

-					case RangeDifference.ANCESTOR:

-						break;

-					case RangeDifference.CONFLICT:

-						s= fromDoc.get(fromStart, fromLen);

-						if (both)

-							s+= toDoc.get(toStart, toLen);

-						break;

-					}

-					if (s != null) {

-						toDoc.replace(toStart, toLen, s);						

-						toPos.setOffset(toStart);

-						toPos.setLength(s.length());

-					}	

-				

-				} catch (BadLocationException e) {

-				}

-			}

-		

-			diff.setResolved(true);

-

-			if (gotoNext) {

-				navigate(true, true, true);

-			} else {

-				revealDiff(diff, true);

-				updateControls();

-			}

-		}

-	}

-

-	//---- scrolling

-

-	/**

-	 * Calculates virtual height (in lines) of views by adding the maximum of corresponding diffs.

-	 */

-	private int getVirtualHeight() {

-		int h= 1;

-		if (fAllDiffs != null) {

-			Iterator e= fAllDiffs.iterator();

-			for (int i= 0; e.hasNext(); i++) {

-				Diff diff= (Diff) e.next();

-				h+= diff.getMaxDiffHeight(fShowAncestor);

-			}

-		}

-		return h;

-	}

-	

-	/**

-	 * The height of the TextEditors in lines.

-	 */

-	private int getViewportHeight() {

-		StyledText te= fLeft.getTextWidget();

-		

-		int vh= te.getClientArea().height;

-		if (vh == 0) {

-			Rectangle trim= te.computeTrim(0, 0, 0, 0);

-			int scrollbarHeight= trim.height;

-			

-			int headerHeight= getHeaderHeight();

-	

-			Composite composite= (Composite) getControl();

-			Rectangle r= composite.getClientArea();

-							

-			vh= r.height-headerHeight-scrollbarHeight;

-		}															

-

-		return vh / te.getLineHeight();

-	}

-	

-	/**

-	 * Returns the virtual position for the given view position.

-	 */

-	private int realToVirtualPosition(MergeSourceViewer w, int vpos) {

-

-		if (! fSynchronizedScrolling || fAllDiffs == null)

-			return vpos;

-				

-		int viewPos= 0;		// real view position

-		int virtualPos= 0;	// virtual position

-		Point region= new Point(0, 0);

-		

-		Iterator e= fAllDiffs.iterator();

-		while (e.hasNext()) {

-			Diff diff= (Diff) e.next();

-			Position pos= diff.getPosition(w);

-			w.getLineRange(pos, region);

-			int realHeight= region.y;

-			int virtualHeight= diff.getMaxDiffHeight(fShowAncestor);

-			if (vpos <= viewPos + realHeight) {	// OK, found!

-				vpos-= viewPos;	// make relative to this slot

-				// now scale position within this slot to virtual slot

-				if (realHeight <= 0)

-					vpos= 0;

-				else

-					vpos= (vpos*virtualHeight)/realHeight;

-				return virtualPos+vpos;

-			}

-			viewPos+= realHeight;

-			virtualPos+= virtualHeight;

-		}

-		return virtualPos;

-	}

-		

-	private void scrollVertical(int virtualPos, MergeSourceViewer allBut) {

-				

-		if (virtualPos < 0)

-			virtualPos= virtualPos;

-		

-		if (fSynchronizedScrolling) {

-			int s= 0;

-			

-			if (true) {

-				s= getVirtualHeight() - virtualPos;

-				int height= fRight.getViewportLines()/4;

-				if (s < 0)

-					s= 0;

-				if (s > height)

-					s= height;

-			}

-	

-			fInScrolling= true;

-					

-			if (isThreeWay() && allBut != fAncestor) {

-				int y= virtualToRealPosition(fAncestor, virtualPos+s)-s;

-				fAncestor.vscroll(y);

-			}

-	

-			if (allBut != fLeft) {

-				int y= virtualToRealPosition(fLeft, virtualPos+s)-s;

-				fLeft.vscroll(y);

-			}

-	

-			if (allBut != fRight) {

-				int y= virtualToRealPosition(fRight, virtualPos+s)-s;

-				fRight.vscroll(y);

-			}

-			

-			fInScrolling= false;

-			

-			if (isThreeWay() && fAncestorCanvas != null)

-				fAncestorCanvas.repaint();

-			

-			if (fLeftCanvas != null)

-				fLeftCanvas.repaint();

-			

-			Control center= getCenter();

-			if (center instanceof BufferedCanvas)

-				((BufferedCanvas)center).repaint();

-			

-			if (fRightCanvas != null)

-				fRightCanvas.repaint();

-		} else {

-			if (allBut == fAncestor && fAncestorCanvas != null && isThreeWay())

-				fAncestorCanvas.repaint();

-		

-			if (allBut == fLeft && fLeftCanvas != null)

-				fLeftCanvas.repaint();

-			

-			if (allBut == fRight && fRightCanvas != null)

-				fRightCanvas.repaint();

-		}

-	}

-		

-	/**

-	 * Updates Scrollbars with viewports.

-	 */

-	private void syncViewport(MergeSourceViewer w) {

-		

-		if (fInScrolling)

-			return;

-

-		int ix= w.getTopIndex();

-		int ix2= w.getDocumentRegionOffset();

-		

-		int viewPosition= realToVirtualPosition(w, ix-ix2);

-				

-		scrollVertical(viewPosition, w);	// scroll all but the given views

-		

-		if (fVScrollBar != null) {

-			int value= Math.max(0, Math.min(viewPosition, getVirtualHeight() - getViewportHeight()));

-			fVScrollBar.setSelection(value);

-		}

-	}

-

-	/**

-	 */

-	private void updateVScrollBar() {

-		

-		if (Utilities.okToUse(fVScrollBar) && fSynchronizedScrolling) {

-			int virtualHeight= getVirtualHeight();

-			int viewPortHeight= getViewportHeight();

-			int pageIncrement= viewPortHeight-1;

-			int thumb= (viewPortHeight > virtualHeight) ? virtualHeight : viewPortHeight;

-						

-			fVScrollBar.setPageIncrement(pageIncrement);

-			fVScrollBar.setMaximum(virtualHeight);

-			fVScrollBar.setThumb(thumb);

-		}			

-	}

-	

-	/**

-	 * maps given virtual position into a real view position of this view.

-	 */

-	private int virtualToRealPosition(MergeSourceViewer part, int v) {

-			

-		if (! fSynchronizedScrolling || fAllDiffs == null)

-			return v;

-					

-		int virtualPos= 0;

-		int viewPos= 0;

-		Point region= new Point(0, 0);

-		

-		Iterator e= fAllDiffs.iterator();

-		while (e.hasNext()) {

-			Diff diff= (Diff) e.next();

-			Position pos= diff.getPosition(part);

-			int viewHeight= part.getLineRange(pos, region).y;

-			int virtualHeight= diff.getMaxDiffHeight(fShowAncestor);

-			if (v < (virtualPos + virtualHeight)) {

-				v-= virtualPos;		// make relative to this slot

-				if (viewHeight <= 0) {

-					v= 0;

-				} else {

-					v= (v*viewHeight)/virtualHeight;

-				}

-				return viewPos+v;

-			}

-			virtualPos+= virtualHeight;

-			viewPos+= viewHeight;

-		}

-		return viewPos;

-	}

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties
deleted file mode 100644
index 18da49f..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties
+++ /dev/null
@@ -1,91 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-# @(#)TextMergeViewerResources.properties

-#

-# Resource strings for TextMergeViewer.java

-

-title= Text Compare

-

-saveDialog.title= Save Resource

-saveDialog.message= Resource has been modified. Save changes?

-

-compareProgressTask.title= Computing Differences...

-

-tooComplexError.title= Error

-tooComplexError.format= Too many differences. Try to turn on the ''Ignore White Space'' option or do a structure compare first.

-

-#####################################################

-# Toolbar actions

-#####################################################

-

-action.CopyLeftToRight.label=Copy Left to Right

-action.CopyLeftToRight.tooltip=Copy Whole Document from Left to Right

-action.CopyLeftToRight.image=copy_r_co.gif

-

-action.CopyRightToLeft.label=Copy Right to Left

-action.CopyRightToLeft.tooltip=Copy Whole Document from Right to Left

-action.CopyRightToLeft.image=copy_l_co.gif

-

-action.CopyDiffLeftToRight.label=Copy Current Diff

-action.CopyDiffLeftToRight.tooltip=Copy Current Change from Left to Right

-action.CopyDiffLeftToRight.image=copycont_r_co.gif

-

-action.CopyDiffRightToLeft.label=Copy Current Diff

-action.CopyDiffRightToLeft.tooltip=Copy Current Change from Right to Left

-action.CopyDiffRightToLeft.image=copycont_l_co.gif

-

-action.NextDiff.label=Next

-action.NextDiff.tooltip=Select Next Change

-action.NextDiff.image=next_nav.gif

-

-action.PrevDiff.label=Previous

-action.PrevDiff.tooltip=Select Previous Change

-action.PrevDiff.image=prev_nav.gif

-

-action.EnableAncestor.label=Enable Ancestor Pane

-action.EnableAncestor.tooltip.unchecked=Show Ancestor Pane

-action.EnableAncestor.tooltip.checked=Hide Ancestor Pane

-action.EnableAncestor.description.unchecked=Show Ancestor Pane

-action.EnableAncestor.description.checked=Hide Ancestor Pane

-action.EnableAncestor.image=ancestorpane_co.gif

-

-action.IgnoreAncestor.label=Ignore Ancestor

-action.IgnoreAncestor.tooltip.unchecked=Two-Way Compare (Ignore Ancestor)

-action.IgnoreAncestor.tooltip.checked=Three-Way Compare

-action.IgnoreAncestor.description.unchecked=Two-Way Compare (Ignore Ancestor)

-action.IgnoreAncestor.description.checked=Three-Way Compare

-action.IgnoreAncestor.image=twowaycompare_co.gif

-

-

-#####################################################

-# Context menu actions

-#####################################################

-

-action.undo.label=Undo@Ctrl+Z

-action.undo.tooltip=Undo Last Operation

-

-action.redo.label=Redo@Ctrl+Y

-action.redo.tooltip=Redo Last Operation

-

-action.cut.label=Cut@Ctrl+X

-action.cut.tooltip=Cut Text Selection to Clipboard

-

-action.copy.label=Copy@Ctrl+C

-action.copy.tooltip=Copy Text Selection to Clipboard

-

-action.paste.label=Paste@Ctrl+V

-action.paste.tooltip=Replace Text Selection with Clipboard

-

-action.delete.label=Delete

-action.delete.tooltip=Delete Current Text Selection

-

-action.find.label=Find...@Ctrl+F

-action.find.tooltip=Find Occurrence

-

-action.selectAll.label=Select All@Ctrl+A

-action.selectAll.tooltip=Select All Changes

-

-action.save.label=Save@Ctrl+S

-action.save.tooltip=Save Changes

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html
deleted file mode 100644
index 28d91ee..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html
+++ /dev/null
@@ -1,35 +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="Author" content="IBM">

-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">

-   <title>Package-level Javadoc</title>

-</head>

-<body>

-Support for compare and merge viewers which show the

-content side-by-side.

-<h2>

-Package Specification</h2>

-The <tt>ContentMergeViewer</tt> is an abstract compare and merge viewer

-with two side-by-side content areas and an optional content area for a

-common ancestor (for three-way compare). Because the implementation makes

-no assumptions about the content type it is a subclass responsibility to

-deal with a specific type.

-<p>A <tt>ContentMergeViewer</tt> accesses its model by means of a content

-provider which must implement the

-<br><tt>IMergeViewerContentProvider</tt> interface.

-<p>The <tt>TextMergeViewer</tt> is the standard concrete subclass of <tt>ContentMergeViewer</tt>.

-A text merge viewer uses the <tt>RangeDifferencer</tt> to perform a textual,

-line-by-line comparison of two (or three) input documents. For text lines

-that differ the <tt>TextMergeViewer</tt> uses an <tt>ITokenComparator</tt>

-to find longest sequences of matching and non-matching tokens. The <tt>TextMergeViewer</tt>'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 <tt>ITokenComparator</tt> interface.

-<p>The <tt>TextMergeViewer</tt> not only works on whole documents but on

-subranges of documents too. In this case the viewer's input must be an

-<tt>IDocumentRange</tt> instead of an <tt>IDocument</tt>.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java
deleted file mode 100644
index 85ffba1..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.Viewer;

-

-

-public abstract class AbstractViewer extends Viewer {

-

-	public void setInput(Object input) {

-	}

-	

-	public Object getInput() {

-		return null;

-	}

-	

-	public ISelection getSelection() {

-		return null;

-	}

-	

-	public void setSelection(ISelection s, boolean reveal) {

-	}

-	

-	public void refresh() {

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java
deleted file mode 100644
index 390adc1..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.*;

-import java.lang.reflect.InvocationTargetException;

-import java.util.ResourceBundle;

-import java.text.MessageFormat;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.ICompareInput;

-

-/**

- * A simple compare viewer for binary files.

- * Shows the position of the first non-matching byte.

- */

-public class BinaryCompareViewer extends AbstractViewer {

-

-	private static final String BUNDLE_NAME= "org.eclipse.compare.internal.BinaryCompareViewerResources"; //$NON-NLS-1$

-

-	private static final int EOF= -1;

-	private Text fControl;

-	private ICompareInput fInput;

-	private ResourceBundle fBundle;

-	private boolean fLeftIsLocal;

-	

-	

-	public BinaryCompareViewer(Composite parent, CompareConfiguration cc) {

-		

-		fBundle= ResourceBundle.getBundle(BUNDLE_NAME);

-

-		fControl= new Text(parent, SWT.NONE);

-		fControl.setEditable(false);

-		fControl.setData(CompareUI.COMPARE_VIEWER_TITLE, Utilities.getString(fBundle, "title")); //$NON-NLS-1$

-		CompareNavigator.hookNavigation(fControl);

-		

-		fLeftIsLocal= Utilities.getBoolean(cc, "LEFT_IS_LOCAL", false); //$NON-NLS-1$

-	}

-

-	public Control getControl() {

-		return fControl;

-	}

-

-	public void setInput(Object input) {

-		if (fControl != null && input instanceof ICompareInput) {

-			fInput= (ICompareInput) input;

-			

-			InputStream left= null;

-			InputStream right= null;

-			

-			String message= null;

-			try {

-				left= getStream(fInput.getLeft());

-				right= getStream(fInput.getRight());

-				

-				if (left != null && right != null) {

-					int pos= 0;

-					while (true) {

-						int l= left.read();

-						int r= right.read();

-						if (l != r) {

-							String format= Utilities.getString(fBundle, "diffMessageFormat"); //$NON-NLS-1$

-							message= MessageFormat.format(format, new String[] { Integer.toString(pos) } );

-							break;

-						}

-						if (l == EOF)

-							break;

-						pos++;

-					}

-				} else if (left == null && right == null) {

-					message= Utilities.getString(fBundle, "deleteConflictMessage"); //$NON-NLS-1$

-				} else if (left == null) {

-					if (fLeftIsLocal)

-						message= Utilities.getString(fBundle, "deletedMessage"); //$NON-NLS-1$

-					else

-						message= Utilities.getString(fBundle, "addedMessage"); //$NON-NLS-1$

-				} else if (right == null) {

-					if (fLeftIsLocal)

-						message= Utilities.getString(fBundle, "addedMessage"); //$NON-NLS-1$

-					else

-						message= Utilities.getString(fBundle, "deletedMessage"); //$NON-NLS-1$

-				}

-			} catch (CoreException ex) {

-				message= Utilities.getString(fBundle, "errorMessage"); //$NON-NLS-1$

-			} catch (IOException ex) {

-				message= Utilities.getString(fBundle, "errorMessage"); //$NON-NLS-1$

-			} finally {

-				if (left != null) {

-					try {

-						left.close();

-					} catch (IOException ex) {

-					}

-				}

-				if (right != null) {

-					try {

-						right.close();

-					} catch (IOException ex) {

-					}

-				}			

-			}

-			if (message != null)

-				fControl.setText(message);				

-		}

-	}

-

-	public Object getInput() {

-		return fInput;

-	}

-

-	private InputStream getStream(ITypedElement input) throws CoreException {

-		if (input instanceof IStreamContentAccessor)

-			return ((IStreamContentAccessor)input).getContents();

-		return null;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java
deleted file mode 100644
index 364785d..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.*;

-

-/**

- * A factory object for the <code>BinaryCompareViewer</code>.

- * This indirection is necessary because only objects with a default

- * constructor can be created via an extension point

- * (this precludes Viewers).

- */

-public class BinaryCompareViewerCreator implements IViewerCreator {

-

-	public Viewer createViewer(Composite parent, CompareConfiguration mp) {

-		return new BinaryCompareViewer(parent, mp);

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties
deleted file mode 100644
index 2900356..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-

-# @(#)BinaryCompareViewerResources.properties

-#

-# Resource strings for BinaryCompareViewer.java

-

-title= Binary Compare

-

-diffMessageFormat= First bytes differ at position {0}

-deleteConflictMessage= Delete Conflict

-addedMessage= Added Resource

-deletedMessage= Removed Resource

-errorMessage= Internal Error

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java
deleted file mode 100644
index 1a1bdd3..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.*;

-import org.eclipse.swt.widgets.*;

-import org.eclipse.swt.graphics.*;

-import org.eclipse.swt.events.*;

-

-/**

- * A Canvas which reduces flicker by drawing in an off screen buffer.

- */

-public abstract class BufferedCanvas extends Canvas {

-

-	/** The drawable for double buffering */

-	private Image fBuffer;

-

-	public BufferedCanvas(Composite parent, int flags) {

-		super(parent, flags + SWT.NO_BACKGROUND);

-

-		addPaintListener(

-			new PaintListener() {

-				public void paintControl(PaintEvent event) {

-					doubleBufferPaint(event.gc);

-				}

-			}

-		);

-

-		addDisposeListener(

-			new DisposeListener() {

-				public void widgetDisposed(DisposeEvent e) {

-					if (fBuffer != null) {

-						fBuffer.dispose();

-						fBuffer= null;

-					}

-				}

-			}

-		);

-	}

-

-	public void repaint() {

-		if (!isDisposed()) {

-			GC gc= new GC(this);

-			doubleBufferPaint(gc);

-			gc.dispose();

-		}

-	}

-

-	/**

-	 * Double buffer drawing.

-	 * @private

-	 */

-	private void doubleBufferPaint(GC dest) {

-

-		Point size= getSize();

-

-		if (size.x <= 0 || size.y <= 0)

-			return;

-

-		if (fBuffer != null) {

-			Rectangle r= fBuffer.getBounds();

-			if (r.width != size.x || r.height != size.y) {

-				fBuffer.dispose();

-				fBuffer= null;

-			}

-		}

-		if (fBuffer == null)

-			fBuffer= new Image(getDisplay(), size.x, size.y);

-

-		GC gc= new GC(fBuffer);

-		try {

-			gc.setBackground(getBackground());

-			gc.fillRectangle(0, 0, size.x, size.y);

-			doPaint(gc);

-		} finally {

-			gc.dispose();

-		}

-

-		dest.drawImage(fBuffer, 0, 0);

-	}

-

-	abstract public void doPaint(GC gc);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java
deleted file mode 100644
index 8527591..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java
deleted file mode 100644
index 1e76626..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-

-import org.eclipse.jface.action.Action;

-import org.eclipse.compare.CompareConfiguration;

-

-/**

- * Toggles a boolean property of an <code>ICompareConfiguration</code>.

- */

-public class ChangePropertyAction extends Action {

-

-	private CompareConfiguration fCompareConfiguration;

-	private String fPropertyKey;

-	private ResourceBundle fBundle;

-	private String fPrefix;

-

-

-	public ChangePropertyAction(ResourceBundle bundle, CompareConfiguration cc, String rkey, String pkey) {

-		fPropertyKey= pkey;

-		fBundle= bundle;

-		fPrefix= rkey;

-		Utilities.initAction(this, fBundle, fPrefix);

-		setCompareConfiguration(cc);

-	}

-

-	public void run() {

-		boolean b= !Utilities.getBoolean(fCompareConfiguration, fPropertyKey, false);

-		setChecked(b);

-		if (fCompareConfiguration != null)

-			fCompareConfiguration.setProperty(fPropertyKey, new Boolean(b));

-	}

-

-	public void setChecked(boolean state) {

-		super.setChecked(state);

-		Utilities.initToggleAction(this, fBundle, fPrefix, state);

-	}

-	

-	public void setCompareConfiguration(CompareConfiguration cc) {

-		fCompareConfiguration= cc;

-		setChecked(Utilities.getBoolean(fCompareConfiguration, fPropertyKey, false));

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
deleted file mode 100644
index 4daf9e5..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.jface.action.IAction;

-import org.eclipse.jface.viewers.ISelection;

-

-import org.eclipse.ui.IActionDelegate;

-import org.eclipse.compare.CompareConfiguration;

-import org.eclipse.compare.CompareUI;

-

-

-public class CompareAction implements IActionDelegate {

-

-	private ResourceCompareInput fInput;

-

-	public void run(IAction action) {

-		if (fInput != null) {

-			CompareUI.openCompareEditor(fInput);

-			fInput= null;	// don't reuse this input!

-		}

-	}

-

-	public void selectionChanged(IAction action, ISelection selection) {

-		if (fInput == null) {

-			CompareConfiguration cc= new CompareConfiguration();

-			// buffered merge mode: don't ask for confirmation

-			// when switching between modified resources

-			cc.setProperty(CompareEditor.CONFIRM_SAVE_PROPERTY, new Boolean(false));

-						

-			fInput= new ResourceCompareInput(cc);

-		}

-		action.setEnabled(fInput.setSelection(selection));

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
deleted file mode 100644
index 84e19c6..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.graphics.Point;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

-import org.eclipse.swt.widgets.Button;

-import org.eclipse.swt.layout.*;

-

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.util.Assert;

-import org.eclipse.jface.util.PropertyChangeEvent;

-

-import org.eclipse.ui.actions.WorkspaceModifyOperation;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.OperationCanceledException;

-

-import org.eclipse.compare.CompareEditorInput;

-import org.eclipse.jface.util.IPropertyChangeListener;

-

-

-public class CompareDialog extends Dialog implements IPropertyChangeListener {

-		

-	private CompareEditorInput fCompareEditorInput;

-	private Button fCommitButton;

-

-

-	CompareDialog(Shell shell, CompareEditorInput input) {

-		super(shell);

-		setShellStyle(SWT.CLOSE | SWT.APPLICATION_MODAL | SWT.RESIZE);

-		

-		Assert.isNotNull(input);

-		fCompareEditorInput= input;

-		fCompareEditorInput.addPropertyChangeListener(this);

-	}

-	

-	public boolean close() {

-		if (super.close()) {

-			if (fCompareEditorInput != null)

-				fCompareEditorInput.addPropertyChangeListener(this);

-			return true;

-		}

-		return false;

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Dialog.

-	 */

-	protected void createButtonsForButtonBar(Composite parent) {

-		fCommitButton= createButton(parent, IDialogConstants.OK_ID, Utilities.getString("CompareDialog.commitAction.label"), true); //$NON-NLS-1$

-		fCommitButton.setEnabled(false);

-		createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);

-	}

-

-	public void propertyChange(PropertyChangeEvent event) {

-		if (fCommitButton != null && fCompareEditorInput != null)

-			fCommitButton.setEnabled(fCompareEditorInput.isSaveNeeded());

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Dialog.

-	 */

-	protected Control createDialogArea(Composite parent) {

-						

-		Control c= fCompareEditorInput.createContents(parent);

-		c.setLayoutData(new GridData(GridData.FILL_BOTH));

-		

-		Shell shell= c.getShell();

-		shell.setText(fCompareEditorInput.getTitle());

-		shell.setImage(fCompareEditorInput.getTitleImage());

-

-		return c;

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Window.

-	 */

-	protected Point getInitialSize() {

-		Point size= new Point(0, 0);

-		Shell shell= getParentShell();

-		if (shell != null) {

-			Point parentSize= shell.getSize();

-			size.x= parentSize.x-100;

-			size.y= parentSize.y-100;

-		}

-		if (size.x < 800)

-			size.x= 800;

-		if (size.y < 600)

-			size.y= 600;

-		return size;

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Window.

-	 */

-	public int open() {

-		

-		int rc= super.open();

-		

-		if (rc == OK && fCompareEditorInput.isSaveNeeded()) {

-						

-			WorkspaceModifyOperation operation= new WorkspaceModifyOperation() {

-				public void execute(IProgressMonitor pm) throws CoreException {

-					fCompareEditorInput.saveChanges(pm);

-				}

-			};

-						

-			Shell shell= getParentShell();

-			ProgressMonitorDialog pmd= new ProgressMonitorDialog(shell);				

-			try {

-				operation.run(pmd.getProgressMonitor());				

-				

-			} catch (InterruptedException x) {

-			} catch (OperationCanceledException x) {

-			} catch (InvocationTargetException x) {

-				String title= Utilities.getString("CompareDialog.saveErrorTitle"); //$NON-NLS-1$

-				String msg= Utilities.getString("CompareDialog.saveErrorMessage"); //$NON-NLS-1$

-				MessageDialog.openError(shell, title, msg + x.getTargetException().getMessage());

-			}

-		}

-		

-		return rc;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java
deleted file mode 100644
index 215309b..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.dialogs.MessageDialog;

-import org.eclipse.jface.util.*;

-

-import org.eclipse.ui.*;

-import org.eclipse.ui.actions.WorkspaceModifyOperation;

-import org.eclipse.ui.part.EditorPart;

-

-import org.eclipse.core.resources.IMarker;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.*;

-

-

-/**

- * A CompareEditor takes a ICompareEditorInput as input.

- * Most functionality is delegated to the ICompareEditorInput.

- */

-public class CompareEditor extends EditorPart implements IPropertyChangeListener {

-	

-	public final static String CONFIRM_SAVE_PROPERTY= "org.eclipse.compare.internal.CONFIRM_SAVE_PROPERTY"; //$NON-NLS-1$

-	

-	private IActionBars fActionBars;

-	

-	

-	public CompareEditor() {

-	}

-		

-	/* package */ CompareConfiguration getCompareConfiguration() {

-		IEditorInput input= getEditorInput();

-		if (input instanceof CompareEditorInput)

-			return ((CompareEditorInput)input).getCompareConfiguration();

-		return null;

-	}

-				

-	public void init(IEditorSite site, IEditorInput input) throws PartInitException {

-		

-		if (!(input instanceof CompareEditorInput))

-			throw new PartInitException(Utilities.getString("CompareEditor.invalidInput")); //$NON-NLS-1$

-				

-		CompareEditorInput cei= (CompareEditorInput) input;

-			

-		setSite(site);

-		setInput(input);

-		

-		setTitleImage(cei.getTitleImage());

-		setTitle(cei.getTitle());

-				

-		if (input instanceof IPropertyChangeNotifier)

-			((IPropertyChangeNotifier)input).addPropertyChangeListener(this);

-	}

-

-	public IActionBars getActionBars() {

-		return fActionBars;

-	}

-	

-	public void setActionBars(IActionBars actionBars) {

-		fActionBars= actionBars;

-	}

-	

-	/*

-	 * @see IDesktopPart#createPartControl(Composite)

-	 */

-	public void createPartControl(Composite parent) {

-		parent.setData(this);

-		

-		IEditorInput input= getEditorInput();

-		if (input instanceof CompareEditorInput)

-			((CompareEditorInput) input).createContents(parent);

-	}

-	

-	/*

-	 * @see DesktopPart#dispose

-	 */

-	public void dispose() {

-	

-		IEditorInput input= getEditorInput();

-		if (input instanceof IPropertyChangeNotifier)

-			((IPropertyChangeNotifier)input).removePropertyChangeListener(this);

-								

-		super.dispose();

-	}

-			

-	/*

-	 * @see IDesktopPart#setFocus

-	 */

-	public void setFocus() {

-		IEditorInput input= getEditorInput();

-		if (input instanceof CompareEditorInput)

-			((CompareEditorInput)input).setFocus();

-	}

-	

-	/**

-	 * Returns false because the editor doesn't support "Save As...".

-	 */

-	public boolean isSaveAsAllowed() {

-		return false;

-	}

-	

-	public void gotoMarker(IMarker marker) {

-	}

-	

-	/**

-	 * Always throws an AssertionFailedException.

-	 */

-	/*

-	 * @see IEditorPart#doSaveAs()

-	 */

-	public void doSaveAs() {

-		Assert.isTrue(false); // Save As not supported for CompareEditor

-	}

-	

-	/*

-	 * @see IEditorPart#doSave()

-	 */

-	public void doSave(IProgressMonitor progressMonitor) {

-		

-		final IEditorInput input= getEditorInput();

-		

-		WorkspaceModifyOperation operation= new WorkspaceModifyOperation() {

-			public void execute(IProgressMonitor pm) throws CoreException {

-				if (input instanceof CompareEditorInput)

-					((CompareEditorInput)input).saveChanges(pm);

-			}

-		};

-

-		Shell shell= getSite().getShell();

-		

-		try {

-			

-			operation.run(progressMonitor);

-									

-			firePropertyChange(PROP_DIRTY);

-			

-		} catch (InterruptedException x) {

-		} catch (OperationCanceledException x) {

-		} catch (InvocationTargetException x) {

-			String title= Utilities.getString("CompareEditor.saveError.title"); //$NON-NLS-1$

-			String reason= x.getTargetException().getMessage();

-			MessageDialog.openError(shell, title, Utilities.getFormattedString("CompareEditor.cantSaveError", reason));	//$NON-NLS-1$

-		}

-	}	

-		

-	/*

-	 * @see IEditorPart#isDirty()

-	 */

-	public boolean isDirty() {

-		IEditorInput input= getEditorInput();

-		if (input instanceof CompareEditorInput)

-			return ((CompareEditorInput)input).isSaveNeeded();

-		return false;

-	}

-	

-	public void propertyChange(PropertyChangeEvent event) {

-		if (isDirty())

-			firePropertyChange(PROP_DIRTY);

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java
deleted file mode 100644
index 3fe72b1..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-

-import org.eclipse.jface.action.*;

-

-import org.eclipse.ui.*;

-import org.eclipse.ui.part.EditorActionBarContributor;

-

-import org.eclipse.compare.*;

-

-

-public class CompareEditorContributor extends EditorActionBarContributor {

-	

-	private IEditorPart fActiveEditorPart= null;

-

-	private IgnoreWhiteSpaceAction fIgnoreWhitespace;

-	private NavigationAction fNext;

-	private NavigationAction fPrevious;

-

-	public CompareEditorContributor() {

-		ResourceBundle bundle= CompareUIPlugin.getResourceBundle();

-		fIgnoreWhitespace= new IgnoreWhiteSpaceAction(bundle, null);

-		fNext= new NavigationAction(bundle, true);

-		fPrevious= new NavigationAction(bundle, false);

-	}

-

-	/*

-	 * @see EditorActionBarContributor#contributeToToolBar(IToolBarManager)

-	 */

-	public void contributeToToolBar(IToolBarManager tbm) {

-		tbm.add(new Separator());

-		tbm.add(fIgnoreWhitespace);

-		tbm.add(fNext);

-		tbm.add(fPrevious);

-	}

-	

-	public void setActiveEditor(IEditorPart targetEditor) {

-				

-		if (fActiveEditorPart == targetEditor)

-			return;

-			

-		fActiveEditorPart= targetEditor;

-		

-		if (fActiveEditorPart != null) {

-			IEditorInput input= fActiveEditorPart.getEditorInput();

-			if (input instanceof CompareEditorInput) {

-				CompareEditorInput compareInput= (CompareEditorInput) input;

-				fNext.setCompareEditorInput(compareInput);

-				fPrevious.setCompareEditorInput(compareInput);

-			}

-		}

-			

-		if (targetEditor instanceof CompareEditor) {

-			CompareEditor editor= (CompareEditor) targetEditor;

-			editor.setActionBars(getActionBars());

-		

-			CompareConfiguration cc= editor.getCompareConfiguration();

-			fIgnoreWhitespace.setCompareConfiguration(cc);

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java
deleted file mode 100644
index 96b7c04..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2002.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.MissingResourceException;

-import java.util.ResourceBundle;

-

-public class CompareMessages {

-

-	private static final String RESOURCE_BUNDLE= "org.eclipse.compare.internal.CompareMessages";//$NON-NLS-1$

-

-	private static ResourceBundle fgResourceBundle= ResourceBundle.getBundle(RESOURCE_BUNDLE);

-

-	private CompareMessages() {

-	}

-

-	public static String getString(String key) {

-		try {

-			return fgResourceBundle.getString(key);

-		} catch (MissingResourceException e) {

-			return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
deleted file mode 100644
index 44538ce..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2002.

-# All Rights Reserved.

-# =====================================

-

-ComparePlugin.internal_error= Internal Error

-ExceptionDialog.seeErrorLogMessage= See error log for more details.

-

-#

-# Title format for CompareViewerSwitchingPane

-#

-CompareViewerSwitchingPane.Titleformat= {0}  ({1})

-

-#

-# Title message for StructureDiffViewer if no structural differences could be found

-#

-StructureDiffViewer.NoStructuralDifferences= No Structural Differences

-StructureDiffViewer.StructureError= Couldn't Compare Structures
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java
deleted file mode 100644
index 16df01c..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.KeyAdapter;

-import org.eclipse.swt.events.KeyEvent;

-import org.eclipse.swt.widgets.Control;

-import org.eclipse.swt.widgets.Display;

-

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.CompareEditorInput;

-import org.eclipse.compare.*;

-

-/**

- * Supports cross-pane navigation through differences.

- * XXX: Design is as it is because the feature had to be added without touching API.

- */

-public class CompareNavigator {

-	

-	private boolean fLastDirection= true;

-	private CompareViewerSwitchingPane[] fPanes;

-	

-	public CompareNavigator(CompareViewerSwitchingPane[] panes) {

-		fPanes= panes;

-	}

-

-	public CompareViewerSwitchingPane[] getPanes() {

-		return fPanes;

-	}

-	

-	public void selectChange(boolean next) {

-		

-		fLastDirection= next;

-		

-		// find most down stream CompareViewerPane

-		int n= 0;

-		INavigatable[] navigators= new INavigatable[4];

-		for (int i= 0; i < fPanes.length; i++) {

-			navigators[n]= getNavigator(fPanes[i]);

-			if (navigators[n] != null)

-				n++;

-		}

-									

-		while (n > 0) {

-			n--;

-			if (navigators[n].gotoDifference(next)) {

-				// at end of this navigator

-				continue;

-			} else // not at end

-				return;

-		}

-		// beep

-		if (fPanes[0] != null) {

-			Control c= fPanes[0].getContent();

-			if (c != null) {

-				Display display= c.getDisplay();

-				if (display != null)

-					display.beep();

-			}

-		}

-	}

-

-	private static INavigatable getNavigator(CompareViewerSwitchingPane pane) {

-		if (pane == null)

-			return null;

-		if (pane.isEmpty())

-			return null;

-		Viewer viewer= pane.getViewer();

-		if (viewer == null)

-			return null;

-		Control control= viewer.getControl();

-		if (control == null)

-			return null;

-		Object data= control.getData(INavigatable.NAVIGATOR_PROPERTY);

-		if (data instanceof INavigatable)

-			return (INavigatable) data;

-		return null;

-	}

-	

-	public static void hookNavigation(final Control c) {

-		c.addKeyListener(

-			new KeyAdapter() {

-				public void keyPressed(KeyEvent e) {

-					handleNavigationKeys(e);

-				}

-			}

-		);

-	}

-	

-	public static void handleNavigationKeys(KeyEvent e) {

-		if (e.character == ('E'-0x40)) {

-			if (e.widget instanceof Control) {

-				CompareNavigator nav= findNavigator((Control)e.widget);

-				if (nav != null)

-					nav.selectChange((e.stateMask & SWT.SHIFT) == 0);

-			}

-		}

-	}

-	

-	private static CompareNavigator findNavigator(Control c) {

-		while (c != null && !c.isDisposed()) {	// PR 1GEUVV2

-			Object data= c.getData();

-			if (data instanceof CompareEditorInput) {

-				CompareEditorInput cei= (CompareEditorInput) data;

-				Object adapter= cei.getAdapter(CompareNavigator.class);

-				if (adapter instanceof CompareNavigator)

-					return (CompareNavigator)adapter;

-			}

-			c= c.getParent();

-		}

-		return null;

-	}

-	

-	private boolean resetDirection() {

-		boolean last= fLastDirection;

-		fLastDirection= true;

-		return last;

-	}

-	

-	public static boolean getDirection(Control c) {

-		CompareNavigator nav= findNavigator(c);

-		if (nav != null)

-			return nav.resetDirection();

-		return true;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
deleted file mode 100644
index f8a6484..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.jface.preference.*;

-

-import org.eclipse.ui.IWorkbench;

-import org.eclipse.ui.IWorkbenchPreferencePage;

-import org.eclipse.ui.texteditor.WorkbenchChainedTextFontFieldEditor;

-

-
-public class ComparePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

-		

-	private static final String PREFIX= CompareUIPlugin.PLUGIN_ID + "."; //$NON-NLS-1$

-	public static final String SYNCHRONIZE_SCROLLING= PREFIX + "SynchronizeScrolling"; //$NON-NLS-1$

-	public static final String SHOW_PSEUDO_CONFLICTS= PREFIX + "ShowPseudoConflicts"; //$NON-NLS-1$

-	public static final String INITIALLY_SHOW_ANCESTOR_PANE= PREFIX + "InitiallyShowAncestorPane"; //$NON-NLS-1$

-	public static final String PREF_SAVE_ALL_EDITORS= PREFIX + "SaveAllEditors"; //$NON-NLS-1$

-	public static final String TEXT_FONT= PREFIX + "TextFont"; //$NON-NLS-1$

-

-	public ComparePreferencePage() {

-		super(GRID);

-	}

-	

-	public static void initDefaults(IPreferenceStore store) {

-		store.setDefault(SYNCHRONIZE_SCROLLING, true);

-		store.setDefault(SHOW_PSEUDO_CONFLICTS, false);

-		store.setDefault(INITIALLY_SHOW_ANCESTOR_PANE, false);

-		

-		WorkbenchChainedTextFontFieldEditor.startPropagate(store, TEXT_FONT);

-	}

-

-	static public boolean getSaveAllEditors() {

-		IPreferenceStore store= CompareUIPlugin.getDefault().getPreferenceStore();

-		return store.getBoolean(PREF_SAVE_ALL_EDITORS);

-	}

-	

-	static public void setSaveAllEditors(boolean value) {

-		IPreferenceStore store= CompareUIPlugin.getDefault().getPreferenceStore();

-		store.setValue(PREF_SAVE_ALL_EDITORS, value);

-	}	

-

-	public void init(IWorkbench workbench) {

-	}	

-

-	protected IPreferenceStore doGetPreferenceStore() {

-		return CompareUIPlugin.getDefault().getPreferenceStore();

-	}

-

-	public void createFieldEditors() {

-				

-		Composite parent= getFieldEditorParent();

-			

-		{

-			BooleanFieldEditor editor= new BooleanFieldEditor(SYNCHRONIZE_SCROLLING,

-				Utilities.getString("ComparePreferences.synchronizeScrolling.label"), BooleanFieldEditor.DEFAULT, parent); //$NON-NLS-1$

-			addField(editor);	

-		}

-		

-		// three way merging

-		{

-			BooleanFieldEditor editor= new BooleanFieldEditor(SHOW_PSEUDO_CONFLICTS,

-				Utilities.getString("ComparePreferences.showPseudoConflicts.label"), BooleanFieldEditor.DEFAULT, parent); //$NON-NLS-1$

-			addField(editor);	

-		}

-		

-		{

-			BooleanFieldEditor editor= new BooleanFieldEditor(INITIALLY_SHOW_ANCESTOR_PANE,

-				Utilities.getString("ComparePreferences.initiallyShowAncestorPane.label"), BooleanFieldEditor.DEFAULT, parent); //$NON-NLS-1$

-			addField(editor);	

-		}

-		

-		{

-			WorkbenchChainedTextFontFieldEditor editor= new WorkbenchChainedTextFontFieldEditor(TEXT_FONT,

-				Utilities.getString("ComparePreferences.textFont.label"), parent); //$NON-NLS-1$

-			addField(editor);

-		}

-	}

-}
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
deleted file mode 100644
index 1edccfb..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
+++ /dev/null
@@ -1,858 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.IOException;

-import java.io.InputStream;

-import java.net.URL;

-import java.net.MalformedURLException;

-import java.lang.reflect.InvocationTargetException;

-import java.util.*;

-

-import org.eclipse.swt.widgets.Display;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Shell;

-

-import org.eclipse.jface.dialogs.MessageDialog;

-import org.eclipse.jface.dialogs.ProgressMonitorDialog;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.resource.ImageDescriptor;

-import org.eclipse.jface.viewers.Viewer;

-import org.eclipse.jface.util.Assert;

-import org.eclipse.jface.preference.IPreferenceStore;

-

-import org.eclipse.ui.internal.SharedImages;

-import org.eclipse.core.runtime.*;

-import org.eclipse.ui.model.IWorkbenchAdapter;

-import org.eclipse.ui.*;

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.ui.plugin.AbstractUIPlugin;

-

-

-/**

- * The Compare UI plug-in 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.

- * <p>

- * This class is the plug-in runtime class for the 

- * <code>"org.eclipse.compare"</code> plug-in.

- * </p>

- */

-public final class CompareUIPlugin extends AbstractUIPlugin {

-	

-	public static final String DTOOL_NEXT= "dlcl16/next_nav.gif";	//$NON-NLS-1$

-	public static final String CTOOL_NEXT= "clcl16/next_nav.gif";	//$NON-NLS-1$

-	public static final String ETOOL_NEXT= "elcl16/next_nav.gif";	//$NON-NLS-1$

-	

-	public static final String DTOOL_PREV= "dlcl16/prev_nav.gif";	//$NON-NLS-1$

-	public static final String CTOOL_PREV= "clcl16/prev_nav.gif";	//$NON-NLS-1$

-	public static final String ETOOL_PREV= "elcl16/prev_nav.gif";	//$NON-NLS-1$

-				

-	/** Status code describing an internal error */

-	public static final int INTERNAL_ERROR= 1;

-

-	private static boolean NORMALIZE_CASE= true;

-

-	private final static String CLASS_ATTRIBUTE= "class"; //$NON-NLS-1$

-	private final static String EXTENSIONS_ATTRIBUTE= "extensions"; //$NON-NLS-1$

-

-	public static final String PLUGIN_ID= "org.eclipse.compare"; //$NON-NLS-1$

-

-	private static final String STRUCTURE_CREATOR_EXTENSION_POINT= "structureCreators"; //$NON-NLS-1$

-	private static final String STRUCTURE_MERGEVIEWER_EXTENSION_POINT= "structureMergeViewers"; //$NON-NLS-1$

-	private static final String CONTENT_MERGEVIEWER_EXTENSION_POINT= "contentMergeViewers"; //$NON-NLS-1$

-	private static final String CONTENT_VIEWER_EXTENSION_POINT= "contentViewers"; //$NON-NLS-1$

-	

-	private static final String COMPARE_EDITOR= PLUGIN_ID + ".CompareEditor"; //$NON-NLS-1$

-	

-	private static final String STRUCTUREVIEWER_ALIASES_PREFERENCE_NAME= "StructureViewerAliases";	//$NON-NLS-1$

-	

-	/** Maps type to icons */

-	private static Map fgImages= new Hashtable(10);

-	/** Maps type to ImageDescriptors */

-	private static Map fgImageDescriptors= new Hashtable(10);

-	/** Maps ImageDescriptors to Images */

-	private static Map fgImages2= new Hashtable(10);

-	

-	private static Map fgStructureCreators= new Hashtable(10);

-	private static Map fgStructureViewerDescriptors= new Hashtable(10);

-	private static Map fgStructureViewerAliases= new Hashtable(10);

-	private static Map fgContentViewerDescriptors= new Hashtable(10);

-	private static Map fgContentMergeViewerDescriptors= new Hashtable(10);

-	

-	private static List fgDisposeOnShutdownImages= new ArrayList();

-	

-	private static ResourceBundle fgResourceBundle;

-

-	private static CompareUIPlugin fgComparePlugin;

-

-	/**

-	 * Creates the <code>CompareUIPlugin</code> object and registers all

-	 * structure creators, content merge viewers, and structure merge viewers

-	 * contributed to this plug-in's extension points.

-	 * <p>

-	 * Note that instances of plug-in runtime classes are automatically created 

-	 * by the platform in the course of plug-in activation.

-	 * </p>

-	 *

-	 * @param descriptor the plug-in descriptor

-	 */

-	public CompareUIPlugin(IPluginDescriptor descriptor) {

-		super(descriptor);

-				

-		fgComparePlugin= this;

-		

-		fgResourceBundle= descriptor.getResourceBundle();

-		

-		registerExtensions();

-		

-		initPreferenceStore();

-	}

-	

-	/**

-	 * @see AbstractUIPlugin#initializeDefaultPreferences

-	 */

-	protected void initializeDefaultPreferences(IPreferenceStore store) {

-		super.initializeDefaultPreferences(store);

-		

-		ComparePreferencePage.initDefaults(store);		

-	}

-	

-	/**

-	 * Registers all structure creators, content merge viewers, and structure merge viewers

-	 * that are found in the XML plugin files.

-	 */

-	private void registerExtensions() {

-		IPluginRegistry registry= Platform.getPluginRegistry();

-		

-		// collect all IStructureCreators

-		IConfigurationElement[] elements= registry.getConfigurationElementsFor(PLUGIN_ID, STRUCTURE_CREATOR_EXTENSION_POINT);

-		for (int i= 0; i < elements.length; i++) {

-			final IConfigurationElement conf= elements[i];

-			String extensions= conf.getAttribute(EXTENSIONS_ATTRIBUTE);

-			registerStructureCreator(extensions,

-				new IStructureCreatorDescriptor() {

-					public IStructureCreator createStructureCreator() {

-						try {

-							return (IStructureCreator) conf.createExecutableExtension(CLASS_ATTRIBUTE);

-						} catch (CoreException ex) {

-						}

-						return null;

-					}

-				}

-			);

-		}

-				

-		// collect all viewers which define the structure mergeviewer extension point

-		elements= registry.getConfigurationElementsFor(PLUGIN_ID, STRUCTURE_MERGEVIEWER_EXTENSION_POINT);

-		for (int i= 0; i < elements.length; i++) {

-			ViewerDescriptor desc= new ViewerDescriptor(elements[i]);

-			String ext= desc.getExtension();

-			if (ext != null)

-				registerStructureViewerDescriptor(desc.getExtension(), desc);

-		}

-		

-		// collect all viewers which define the content mergeviewer extension point

-		elements= registry.getConfigurationElementsFor(PLUGIN_ID, CONTENT_MERGEVIEWER_EXTENSION_POINT);

-		for (int i= 0; i < elements.length; i++) {

-			ViewerDescriptor desc= new ViewerDescriptor(elements[i]);

-			String ext= desc.getExtension();

-			if (ext != null)

-				registerContentMergeViewerDescriptor(desc.getExtension(), desc);

-		}

-		

-		// collect all viewers which define the content viewer extension point

-		elements= registry.getConfigurationElementsFor(PLUGIN_ID, CONTENT_VIEWER_EXTENSION_POINT);

-		for (int i= 0; i < elements.length; i++) {

-			ViewerDescriptor desc= new ViewerDescriptor(elements[i]);

-			String ext= desc.getExtension();

-			if (ext != null)

-				registerContentViewerDescriptor(desc.getExtension(), desc);

-		}

-	}

-	

-	/**

-	 * Returns the singleton instance of this plug-in runtime class.

-	 *

-	 * @return the compare plug-in instance

-	 */

-	public static CompareUIPlugin getDefault() {

-		return fgComparePlugin;

-	}

-	

-	/**

-	 * Returns this plug-in's resource bundle.

-	 *

-	 * @return the plugin's resource bundle

-	 */

-	public static ResourceBundle getResourceBundle() {

-		return fgResourceBundle;

-	}

-	

-	public static IWorkbench getActiveWorkbench() {

-		CompareUIPlugin plugin= getDefault();

-		if (plugin == null)

-			return null;

-		return plugin.getWorkbench();

-	}

-	

-	public static IWorkbenchWindow getActiveWorkbenchWindow() {

-		IWorkbench workbench= getActiveWorkbench();

-		if (workbench == null)

-			return null;	

-		return workbench.getActiveWorkbenchWindow();

-	}

-	

-	/**

-	 * Returns the active workkbench page or <code>null</code> if

-	 * no active workkbench page can be determined.

-	 *

-	 * @return the active workkbench page or <code>null</code> if

-	 * 	no active workkbench page can be determined

-	 */

-	private static IWorkbenchPage getActivePage() {

-		IWorkbenchWindow window= getActiveWorkbenchWindow();

-		if (window == null)

-			return null;

-		return window.getActivePage();

-	}

-	

-	/**

-	 * Returns the SWT Shell of the active workbench window or <code>null</code> if

-	 * no workbench window is active.

-	 *

-	 * @return the SWT Shell of the active workbench window, or <code>null</code> if

-	 * 	no workbench window is active

-	 */

-	public static Shell getShell() {

-		IWorkbenchWindow window= getActiveWorkbenchWindow();

-		if (window == null)

-			return null;

-		return window.getShell();

-	}

-

-	/**

-	 * 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) {

-		if (image != null)

-			fgDisposeOnShutdownImages.add(image);

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on Plugin.

-	 * Frees all resources of the compare plug-in.

-	 */

-	public void shutdown() throws CoreException {

-		super.shutdown();

-		

-		if (fgDisposeOnShutdownImages != null) {

-			Iterator i= fgDisposeOnShutdownImages.iterator();

-			while (i.hasNext()) {

-				Image img= (Image) i.next();

-				if (!img.isDisposed())

-					img.dispose();

-			}

-			fgImages= null;

-		}

-	}

-	

-	/**

-	 * Performs the comparison described by the given input and opens a

-	 * compare editor on the result.

-	 *

-	 * @param input the input on which to open the compare editor

-	 * @see CompareEditorInput

-	 */

-	public void openCompareEditor(CompareEditorInput input) {

-		

-		if (compareResultOK(input)) {				

-			IWorkbenchPage activePage= getActivePage();

-			if (activePage != null) {

-				try {

-					activePage.openEditor(input, COMPARE_EDITOR);

-				} catch (PartInitException e) {

-					MessageDialog.openError(getShell(), Utilities.getString("CompareUIPlugin.openEditorError"), e.getMessage()); //$NON-NLS-1$

-				}

-			} else {

-				MessageDialog.openError(getShell(),

-						Utilities.getString("CompareUIPlugin.openEditorError"), //$NON-NLS-1$

-						Utilities.getString("CompareUIPlugin.noActiveWorkbenchPage")); //$NON-NLS-1$

-			}

-		}

-	}

-

-	/**

-	 * Performs the comparison described by the given input and opens a

-	 * compare dialog on the result.

-	 *

-	 * @param input the input on which to open the compare editor

-	 * @see CompareEditorInput

-	 */

-	public void openCompareDialog(final CompareEditorInput input) {

-				

-		if (compareResultOK(input)) {

-			CompareDialog dialog= new CompareDialog(getShell(), input);

-			dialog.open();

-		}

-	}

-	

-	/**

-	 * @return <code>true</code> if compare result is OK to show, <code>false</code> otherwise

-	 */

-	private boolean compareResultOK(CompareEditorInput input) {

-		final Shell shell= getShell();

-		try {

-			

-			// run operation in separate thread and make it canceable

-			new ProgressMonitorDialog(shell).run(true, true, input);

-			

-			String message= input.getMessage();

-			if (message != null) {

-				MessageDialog.openError(shell, Utilities.getString("CompareUIPlugin.compareFailed"), message); //$NON-NLS-1$

-				return false;

-			}

-			

-			if (input.getCompareResult() == null) {

-				MessageDialog.openInformation(shell, Utilities.getString("CompareUIPlugin.dialogTitle"), Utilities.getString("CompareUIPlugin.noDifferences")); //$NON-NLS-2$ //$NON-NLS-1$

-				return false;

-			}

-			

-			return true;

-

-		} catch (InterruptedException x) {

-			// cancelled by user		

-		} catch (InvocationTargetException x) {

-			MessageDialog.openError(shell, Utilities.getString("CompareUIPlugin.compareFailed"), x.getTargetException().getMessage()); //$NON-NLS-1$

-		}

-		return false;

-	}

-		

-	/**

-	 * Registers an image for the given type.

-	 */

-	private static void registerImage(String type, Image image, boolean dispose) {

-		fgImages.put(normalizeCase(type), image);

-		if (image != null && dispose) {

-			fgDisposeOnShutdownImages.add(image);

-		}

-	}

-	

-	/**

-	 * 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) {

-		fgImageDescriptors.put(normalizeCase(type), descriptor);

-	}

-	

-	public static ImageDescriptor getImageDescriptor(String relativePath) {

-		

-		URL installURL= null;

-		if (fgComparePlugin != null)

-			installURL= fgComparePlugin.getDescriptor().getInstallURL();

-					

-		if (installURL != null) {

-			try {

-				URL url= new URL(installURL, Utilities.getIconPath(null) + relativePath);

-				return ImageDescriptor.createFromURL(url);

-			} catch (MalformedURLException e) {

-				Assert.isTrue(false);

-			}

-		}

-		return null;

-	}

-	

-	/**

-	 * 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 automitically 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) {

-		

-		type= normalizeCase(type);

-		

-		boolean dispose= false;

-		Image image= null;

-		if (type != null)

-			image= (Image) fgImages.get(type);

-		if (image == null) {

-			ImageDescriptor id= (ImageDescriptor) fgImageDescriptors.get(type);

-			if (id != null) {

-				image= id.createImage();

-				dispose= true;

-			}

-				

-			if (image == null) {

-				if (fgComparePlugin != null) {

-					if (ITypedElement.FOLDER_TYPE.equals(type)) {

-						image= getDefault().getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);

-						//image= SharedImages.getImage(ISharedImages.IMG_OBJ_FOLDER);

-					} else {

-						image= createWorkbenchImage(type);

-						dispose= true;

-					}

-				} else {

-					id= (ImageDescriptor) fgImageDescriptors.get(normalizeCase("file")); //$NON-NLS-1$

-					image= id.createImage();

-					dispose= true;

-				}

-			}

-			if (image != null)

-				registerImage(type, image, dispose);

-		}

-		return 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 automitically 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) {

-		if (adaptable != null) {

-			Object o= adaptable.getAdapter(IWorkbenchAdapter.class);

-			if (o instanceof IWorkbenchAdapter) {

-				ImageDescriptor id= ((IWorkbenchAdapter) o).getImageDescriptor(adaptable);

-				if (id != null) {

-					Image image= (Image)fgImages2.get(id);

-					if (image == null) {

-						image= id.createImage();

-						try {

-							fgImages2.put(id, image);

-						} catch (NullPointerException ex) {

-						}

-						fgDisposeOnShutdownImages.add(image);

-

-					}

-					return image;

-				}

-			}

-		}

-		return null;

-	}

-	

-	private static Image createWorkbenchImage(String type) {

-		IEditorRegistry er= getDefault().getWorkbench().getEditorRegistry();

-		ImageDescriptor id= er.getImageDescriptor("foo." + type); //$NON-NLS-1$

-		return id.createImage();

-	}

-	

-	/**

-	 * Registers the given structure creator descriptor for one or more types.

-	 *

-	 * @param types one or more types separated by commas and whitespace

-	 * @param descriptor the descriptor to register

-	 */

-	public static void registerStructureCreator(String types, IStructureCreatorDescriptor descriptor) {

-		if (types != null) {

-			StringTokenizer tokenizer= new StringTokenizer(types, ","); //$NON-NLS-1$

-			while (tokenizer.hasMoreElements()) {

-				String extension= tokenizer.nextToken().trim();

-				fgStructureCreators.put(normalizeCase(extension), descriptor);

-			}

-		}

-	}

-	

-	/**

-	 * Returns an structure creator descriptor for the given type.

-	 *

-	 * @param type the type for which to find a descriptor

-	 * @return a descriptor for the given type, or <code>null</code> if no

-	 *   descriptor has been registered

-	 */

-	public static IStructureCreatorDescriptor getStructureCreator(String type) {

-		return (IStructureCreatorDescriptor) fgStructureCreators.get(normalizeCase(type));

-	}

-	

-	/**

-	 * Registers the given structure viewer descriptor for one or more types.

-	 *

-	 * @param types one or more types separated by commas and whitespace

-	 * @param the descriptor to register

-	 */

-	public static void registerStructureViewerDescriptor(String types, IViewerDescriptor descriptor) {

-		StringTokenizer tokenizer= new StringTokenizer(types, ","); //$NON-NLS-1$

-		while (tokenizer.hasMoreElements()) {

-			String extension= tokenizer.nextToken().trim();

-			fgStructureViewerDescriptors.put(normalizeCase(extension), descriptor);

-		}

-	}

-	

-	/**

-	 * Registers the given content merge viewer descriptor for one or more types.

-	 *

-	 * @param types one or more types separated by commas and whitespace

-	 * @param descriptor the descriptor to register

-	 */

-	public static void registerContentMergeViewerDescriptor(String types, IViewerDescriptor descriptor) {

-		StringTokenizer tokenizer= new StringTokenizer(types, ","); //$NON-NLS-1$

-		while (tokenizer.hasMoreElements()) {

-			String extension= tokenizer.nextToken().trim();

-			fgContentMergeViewerDescriptors.put(normalizeCase(extension), descriptor);

-		}

-	}

-	

-	/**

-	 * Registers the given content viewer descriptor for one or more types.

-	 *

-	 * @param types one or more types separated by commas and whitespace

-	 * @param descriptor the descriptor to register

-	 */

-	public static void registerContentViewerDescriptor(String types, IViewerDescriptor descriptor) {

-		StringTokenizer tokenizer= new StringTokenizer(types, ","); //$NON-NLS-1$

-		while (tokenizer.hasMoreElements()) {

-			String extension= tokenizer.nextToken().trim();

-			fgContentViewerDescriptors.put(normalizeCase(extension), descriptor);

-		}

-	}

-		

-	/**

-	 * 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) {

-

-		if (input.getLeft() == null || input.getRight() == null)	// we don't show the structure of additions or deletions

-			return null;

-			

-		String type= getType(input);

-		if (type == null)

-			return null;

-			

-		type= normalizeCase(type);

-			

-		IViewerDescriptor vd= (IViewerDescriptor) fgStructureViewerDescriptors.get(type);

-		if (vd == null) {

-			String alias= (String) fgStructureViewerAliases.get(type);

-			if (alias != null)

-				vd= (IViewerDescriptor) fgStructureViewerDescriptors.get(alias);

-		}

-		if (vd != null)

-			return vd.createViewer(oldViewer, parent, configuration);

-			

-		IStructureCreatorDescriptor scc= getStructureCreator(type);

-		if (scc != null) {

-			IStructureCreator sc= scc.createStructureCreator();

-			if (sc != null) {

-				StructureDiffViewer sdv= new StructureDiffViewer(parent, configuration);

-				sdv.setStructureCreator(sc);

-				return sdv;

-			}

-		}

-		return null;

-	}

-	

-	/**

-	 * 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, Object in, Composite parent, CompareConfiguration cc) {

-		

-		if (in instanceof IStreamContentAccessor) {

-			String type= ITypedElement.TEXT_TYPE;

-			if (in instanceof ITypedElement) {

-				ITypedElement tin= (ITypedElement) in;

-				type= tin.getType();

-			} 

-			type= normalizeCase(type);

-			

-			IViewerDescriptor vd= (IViewerDescriptor) fgContentViewerDescriptors.get(type);

-			Viewer viewer= null;

-			if (vd != null) {

-				viewer= vd.createViewer(oldViewer, parent, cc);

-				if (viewer != null)

-					return viewer;

-			}

-			// fallback

-			return new TextViewer(parent);

-		}

-

-		ICompareInput input= (ICompareInput) in;

-		String type= getType(input);

-		type= normalizeCase(type);

-		

-		if (ITypedElement.FOLDER_TYPE.equals(type))

-			return null;

-			

-		if (type != null) {

-			IViewerDescriptor vd= (IViewerDescriptor) fgContentMergeViewerDescriptors.get(type);

-			Viewer viewer= null;

-			if (vd != null) {

-				viewer= vd.createViewer(oldViewer, parent, cc);

-				if (viewer != null)

-					return viewer;

-			}

-		}

-		

-		// fallback

-		String leftType= guessType(input.getLeft());

-		String rightType= guessType(input.getRight());

-			

-		if (leftType != null || rightType != null) {

-			boolean right_text= rightType != null && ITypedElement.TEXT_TYPE.equals(rightType);

-			boolean left_text= leftType != null && ITypedElement.TEXT_TYPE.equals(leftType);

-			if ((leftType == null && right_text) || (left_text && rightType == null) || (left_text && right_text))

-				type= ITypedElement.TEXT_TYPE;

-			else

-				type= "binary"; //$NON-NLS-1$

-			

-			IViewerDescriptor vd= (IViewerDescriptor) fgContentMergeViewerDescriptors.get(normalizeCase(type));

-			if (vd != null)

-				return vd.createViewer(oldViewer, parent, cc);

-		}

-		return null;

-	}

-		

-	/**

-	 * Determines the type of the given threeway input by analyzing

-	 * the types (file extension) of the individual parts.

-	 * Returns null if no type can be determined.

-	 */

-	private static String getType(ICompareInput input) {

-		ITypedElement ancestor= input.getAncestor();

-		ITypedElement left= input.getLeft();

-		ITypedElement right= input.getRight();

-		

-		String[] types= new String[3];

-		int cnt= 0;

-		

-		if (ancestor != null) {

-			String type= ancestor.getType();

-			if (type != null)

-				types[cnt++]= type;

-		}

-		if (left != null) {

-			String type= left.getType();

-			if (type != null)

-				types[cnt++]= type;

-		}

-		if (right != null) {

-			String type= right.getType();

-			if (type != null)

-				types[cnt++]= type;

-		}

-		boolean homogenous= false;

-		switch (cnt) {

-		case 1:

-			homogenous= true;

-			break;

-		case 2:

-			homogenous= types[0].equals(types[1]);

-			break;

-		case 3:

-			homogenous= types[0].equals(types[1]) && types[1].equals(types[2]);

-			break;

-		}

-		if (homogenous)

-			return types[0];

-		return null;

-	}

-	

-	/**

-	 * Guesses the file type of the given input.

-	 * Returns ITypedElement.TEXT_TYPE if no line is longer than 1000 bytes.

-	 * Returns ITypedElement.UNKNOWN_TYPE if a line is longer that 1000 bytes.

-	 * Returns <code>null</code> if the input isn't an <code>IStreamContentAccessor</code>.

-	 */

-	private static String guessType(ITypedElement input) {

-		if (input instanceof IStreamContentAccessor) {

-			IStreamContentAccessor sca= (IStreamContentAccessor) input;

-			InputStream is= null;

-			try {

-				is= sca.getContents();

-				if (is == null)

-					return null;

-				int lineLength= 0;

-				while (true) {

-					int c= is.read();

-					if (c == -1)	// EOF

-						break;

-					if (c == '\n' || c == '\r')	// reset line length

-						lineLength= 0;

-					else

-						lineLength++;

-					if (lineLength > 1000)

-						return ITypedElement.UNKNOWN_TYPE;

-				}

-				return ITypedElement.TEXT_TYPE;

-			} catch (CoreException ex) {

-				// be silent and return UNKNOWN_TYPE

-			} catch (IOException ex) {

-				// be silent and return UNKNOWN_TYPE

-			} finally {

-				if (is != null) {

-					try {

-						is.close();

-					} catch (IOException ex) {

-					}

-				}

-			}

-			return ITypedElement.UNKNOWN_TYPE;

-		}

-		return null;

-	}

-	

-	private static IViewerDescriptor getContentViewerDescriptor2(String type) {

-		return (IViewerDescriptor) fgContentMergeViewerDescriptors.get(normalizeCase(type));

-	}

-	

-	private static String normalizeCase(String s) {

-		if (NORMALIZE_CASE && s != null)

-			return s.toUpperCase();

-		return s;

-	}

-	

-	//---- alias mgmt

-	

-	private void initPreferenceStore() {

-		//System.out.println("initPreferenceStore");

-		IPreferenceStore ps= getPreferenceStore();

-		if (ps != null) {

-			String aliases= ps.getString(STRUCTUREVIEWER_ALIASES_PREFERENCE_NAME);

-			//System.out.println("  <" + aliases + ">");

-			if (aliases != null && aliases.length() > 0) {

-				StringTokenizer st= new StringTokenizer(aliases, " ");	//$NON-NLS-1$

-				while (st.hasMoreTokens()) {

-					String pair= st.nextToken();

-					int pos= pair.indexOf('.');

-					if (pos > 0) {

-						String key= pair.substring(0, pos);

-						String alias= pair.substring(pos+1);

-						fgStructureViewerAliases.put(key, alias);

-						//System.out.println("<" + key + "><" + alias + ">");

-					}

-				}

-			}

-		}		

-	}

-	

-	/**

-	 * Converts the aliases into a single string before they are stored

-	 * in the preference store.

-	 * The format is:

-	 * <key> '.' <alias> ' ' <key> '.' <alias> ...

-	 */

-	protected void savePreferenceStore() {

-		//System.out.println("savePreferenceStore");

-		IPreferenceStore ps= getPreferenceStore();

-		if (ps != null) {

-			StringBuffer sb= new StringBuffer();

-			Iterator iter= fgStructureViewerAliases.keySet().iterator();

-			while (iter.hasNext()) {

-				String key= (String) iter.next();

-				String alias= (String) fgStructureViewerAliases.get(key);

-				sb.append(key);

-				sb.append('.');

-				sb.append(alias);

-				sb.append(' ');

-			}

-			//System.out.println("  <" + sb.toString() + ">");

-			ps.setValue(STRUCTUREVIEWER_ALIASES_PREFERENCE_NAME, sb.toString());

-		}

-		super.savePreferenceStore();

-	}

-

-	public static void addStructureViewerAlias(String type, String alias) {

-		//System.out.println("addStructureViewerAlias: " + type + " " + alias);

-		fgStructureViewerAliases.put(normalizeCase(alias), normalizeCase(type));

-	}

-	

-	public static void removeAllStructureViewerAliases(String type) {

-		String t= normalizeCase(type);

-		Set entrySet= fgStructureViewerAliases.entrySet();

-		for (Iterator iter= entrySet.iterator(); iter.hasNext(); ) {

-			Map.Entry entry= (Map.Entry)iter.next();

-			if (entry.getValue().equals(t))

-				iter.remove();

-		}

-	}

-	

-	/**

-	 * Returns an array of all editors that have an unsaved content. If the identical content is 

-	 * presented in more than one editor, only one of those editor parts is part of the result.

-	 * 

-	 * @return an array of all dirty editor parts.

-	 */

-	public static IEditorPart[] getDirtyEditors() {

-		Set inputs= new HashSet(7);

-		ArrayList result= new ArrayList(0);

-		IWorkbench workbench= CompareUIPlugin.getDefault().getWorkbench();

-		IWorkbenchWindow[] windows= workbench.getWorkbenchWindows();

-		for (int i= 0; i < windows.length; i++) {

-			IWorkbenchPage[] pages= windows[i].getPages();

-			for (int x= 0; x < pages.length; x++) {

-				IEditorPart[] editors= pages[x].getEditors();

-				for (int z= 0; z < editors.length; z++) {

-					IEditorPart editor= editors[z];

-					IEditorInput input= editor.getEditorInput();

-					if (editor.isDirty() && !inputs.contains(input)) {

-						inputs.add(input);

-						result.add(editor);

-					}

-				}

-			}

-		}

-		return (IEditorPart[])result.toArray(new IEditorPart[result.size()]);

-	}

-	

-	public static void log(Throwable e) {

-		log(new Status(IStatus.ERROR, getPluginId(), INTERNAL_ERROR, CompareMessages.getString("JavaPlugin.internal_error"), e)); //$NON-NLS-1$

-	}

-	

-	public static void log(IStatus status) {

-		getDefault().getLog().log(status);

-	}

-	

-	public static String getPluginId() {

-		return getDefault().getDescriptor().getUniqueIdentifier();

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java
deleted file mode 100644
index dc5191d..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-public class CompareWithEditionAction extends EditionAction {

-	

-	public CompareWithEditionAction() {

-		super(false, "org.eclipse.compare.internal.CompareWithEditionAction"); //$NON-NLS-1$

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties
deleted file mode 100644
index 83b21aa..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# ====================================

-

-# @(#)CompareWithEditionAction.properties

-#

-# Resources for CompareWithEditionAction.java

-

-title= Compare with Local History

-

-treeTitleFormat= Local History of ''{0}''

-dateIcon= obj16/day_obj.gif

-timeIcon= obj16/resource_obj.gif

-

-treeFormat= {0}

-workspaceTreeFormat {0} (Workspace File)

-parseErrorFormat= {0} (Parse Error)

-

-editionLabel= Local History ({0})

-workspaceEditionLabel= Workspace File

-

-targetLabel= Editor Buffer

-workspaceTargetLabel= Workspace File

-

-todayFormat= Today ({0})

-yesterdayFormat= Yesterday ({0})

-dayFormat= {0}

-

-closeButton.label=Done

-noLocalHistoryError= No local history available for selected resource.

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java
deleted file mode 100644
index 2e166ef..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.graphics.*;

-

-import org.eclipse.jface.resource.CompositeImageDescriptor;

-import org.eclipse.jface.resource.ImageDescriptor;

-

-/**

- * Combines an image with an overlay.

- */

-public class DiffImage extends CompositeImageDescriptor {

-

-	static final int HEIGHT= 16;

-

-	private Image fBaseImage;

-	private ImageDescriptor fOverlayImage;

-	private int fWidth;

-	private boolean fLeft= true;

-

-	public DiffImage(Image base, ImageDescriptor overlay, int w) {

-		fBaseImage= base;

-		fOverlayImage= overlay;

-		fWidth= w;

-	}

-

-	public DiffImage(Image base, ImageDescriptor overlay, int w, boolean onLeft) {

-		fBaseImage= base;

-		fOverlayImage= overlay;

-		fWidth= w;

-		fLeft= onLeft;

-	}

-

-	protected Point getSize() {

-		return new Point(fWidth, HEIGHT);

-	}

-

-	protected void drawCompositeImage(int width, int height) {

-		if (fLeft) {

-			if (fBaseImage != null) {

-				ImageData base= fBaseImage.getImageData();

-				if (base == null)

-					base= DEFAULT_IMAGE_DATA;

-				drawImage(base, fWidth - base.width, 0);

-			}

-	

-			if (fOverlayImage != null) {

-				ImageData overlay= fOverlayImage.getImageData();

-				if (overlay == null)

-					overlay= DEFAULT_IMAGE_DATA;

-				drawImage(overlay, 0, (HEIGHT - overlay.height) / 2);

-			}

-		} else {

-			if (fBaseImage != null) {

-				ImageData base= fBaseImage.getImageData();

-				if (base == null)

-					base= DEFAULT_IMAGE_DATA;

-				drawImage(base, 0, 0);

-			}

-	

-			if (fOverlayImage != null) {

-				ImageData overlay= fOverlayImage.getImageData();

-				if (overlay == null)

-					overlay= DEFAULT_IMAGE_DATA;

-				drawImage(overlay, fWidth - overlay.width, (HEIGHT - overlay.height) / 2);

-			}

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
deleted file mode 100644
index 97239ac..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWTError;

-import org.eclipse.jface.text.*;

-import org.eclipse.compare.rangedifferencer.IRangeComparator;

-import org.eclipse.compare.contentmergeviewer.ITokenComparator;

-

-/**

- * Implements the <code>IRangeComparator</code> interface for lines in a document.

- * A <code>DocLineComparator</code> is used as the input for the <code>RangeDifferencer</code>

- * engine to perform a line oriented compare on documents.

- * <p>

- * A <code>DocLineComparator</code> doesn't know anything about line separators because

- * its notion of lines is solely defined in the underlying <code>IDocument</code>.

- */

-public class DocLineComparator implements ITokenComparator {

-

-	private IDocument fDocument;

-	private int fLineOffset;

-	private int fLineCount;

-	private int fLength;

-	private boolean fIgnoreWhiteSpace;

-

-	/**

-	 * Creates a <code>DocLineComparator</code> for the given document range.

-	 * ignoreWhiteSpace controls whether comparing lines (in method

-	 * <code>rangesEqual<code>) should ignore whitespace.

-	 *

-	 * @param document the document from which the lines are taken

-	 * @param region if non-<code>null</code> only lines within this range are taken

-	 * @param ignoreWhiteSpace if <code>true</code> white space is ignored when comparing lines

-	 */

-	public DocLineComparator(IDocument document, IRegion region, boolean ignoreWhiteSpace) {

-

-		fDocument= document;

-		fIgnoreWhiteSpace= ignoreWhiteSpace;

-

-		fLineOffset= 0;

-		if (region != null) {

-			fLength= region.getLength();

-			int start= region.getOffset();

-			try {

-				fLineOffset= fDocument.getLineOfOffset(start);

-			} catch (BadLocationException ex) {

-			}

-

-			if (fLength == 0)

-				fLineCount= 0;

-			else {

-				int endLine= fDocument.getNumberOfLines();

-				try {

-					endLine= fDocument.getLineOfOffset(start + fLength);

-				} catch (BadLocationException ex) {

-				}

-				fLineCount= endLine - fLineOffset + 1;

-			}

-

-		} else {

-			fLength= document.getLength();

-			fLineCount= fDocument.getNumberOfLines();

-		}

-	}

-

-	/**

-	 * Returns the number of lines in the document.

-	 *

-	 * @return number of lines

-	 */

-	public int getRangeCount() {

-		return fLineCount;

-	}

-

-	/* (non Javadoc)

-	 * see ITokenComparator.getTokenStart

-	 */

-	public int getTokenStart(int line) {

-		try {

-			IRegion r= fDocument.getLineInformation(fLineOffset + line);

-			return r.getOffset();

-		} catch (BadLocationException ex) {

-			return fDocument.getLength();

-		}

-	}

-

-	/* (non Javadoc)

-	 * Returns the length of the given line.

-	 * see ITokenComparator.getTokenLength

-	 */

-	public int getTokenLength(int line) {

-		return getTokenStart(line+1) - getTokenStart(line);

-//		try {

-//			IRegion r= fDocument.getLineInformation(fLineOffset + line);

-//			return r.getLength();

-//		} catch (BadLocationException ex) {

-//		}

-//		return 0;

-	}

-

-	/**

-	 * Returns <code>true</code> if a line given by the first index

-	 * matches a line specified by the other <code>IRangeComparator</code> and index.

-	 *

-	 * @param thisIndex	the number of the line within this range comparator

-	 * @param other the range comparator to compare this with

-	 * @param otherIndex the number of the line within the other comparator

-	 * @return <code>true</code> if the lines are equal

-	 */

-	public boolean rangesEqual(int thisIndex, IRangeComparator other0, int otherIndex) {

-

-		if (other0 != null && other0.getClass() == getClass()) {

-			DocLineComparator other= (DocLineComparator) other0;

-

-			if (fIgnoreWhiteSpace) {

-				String s1= extract(thisIndex);

-				String s2= other.extract(otherIndex);

-				return compare(s1, s2);

-			}

-

-			int tlen= getTokenLength(thisIndex);

-			int olen= other.getTokenLength(otherIndex);

-			if (tlen == olen) {

-				String s1= extract(thisIndex);

-				String s2= other.extract(otherIndex);

-				return s1.equals(s2);

-			}

-		}

-		return false;

-	}

-

-	/**

-	 * Aborts the comparison if the number of tokens is too large.

-	 *

-	 * @return <code>true</code> to abort a token comparison

-	 */

-	public boolean skipRangeComparison(int length, int max, IRangeComparator other) {

-		

-//		if (max > 10000)

-//			return true;

-		return false;

-	}

-		

-	//---- private methods

-	

-	/**

-	 * Extract a single line from the underlying document without the line separator.

-	 *

-	 * @param line the number of the line to extract

-	 * @return the contents of the line as a String

-	 */

-	private String extract(int line) {

-		if (line < fLineCount) {

-			try {

-				IRegion r= fDocument.getLineInformation(fLineOffset + line);

-				return fDocument.get(r.getOffset(), r.getLength());

-			} catch(BadLocationException e) {

-			}

-		}

-		return ""; //$NON-NLS-1$

-	}

-

-	private boolean compare(String s1, String s2) {

-		int i1= 0;

-		int i2= 0;

-		int l1= s1.length();

-		int l2= s2.length();

-		char c1= ' ';

-		char c2= ' ';

-		while (i1 < l1 || i2 < l2) {

-			if (i1 < l1) {

-				c1= s1.charAt(i1);

-				if (Character.isWhitespace(c1)) {

-					i1++;

-					continue;

-				}

-			}

-			if (i2 < l2) {

-				c2= s2.charAt(i2);

-				if (Character.isWhitespace(c2)) {

-					i2++;

-					continue;

-				}

-			}

-			if (c1 != c2)

-				return false;

-			i1++;

-			i2++;

-		}

-		return true;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java
deleted file mode 100644
index f7f87fa..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.InputStream;

-import java.io.ByteArrayInputStream;

-import java.lang.reflect.InvocationTargetException;

-import java.util.ResourceBundle;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.action.IAction;

-import org.eclipse.jface.dialogs.MessageDialog;

-import org.eclipse.jface.dialogs.ProgressMonitorDialog;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.jface.text.BadLocationException;

-

-import org.eclipse.ui.*;

-import org.eclipse.ui.part.FileEditorInput;

-import org.eclipse.ui.texteditor.ITextEditor;

-import org.eclipse.ui.texteditor.IDocumentProvider;

-import org.eclipse.ui.actions.WorkspaceModifyOperation;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.compare.IStreamContentAccessor;

-

-

-public class EditionAction implements IActionDelegate {

-

-	/**

-	 * Implements the IStreamContentAccessor and ITypedElement protocols

-	 * for a Document.

-	 */

-	class DocumentBufferNode implements ITypedElement, IStreamContentAccessor {

-		

-		private IDocument fDocument;

-		private String type;

-		private IFile fFile;

-		

-		DocumentBufferNode(IDocument document, IFile file) {

-			fDocument= document;

-			fFile= file;

-		}

-		

-		public String getName() {

-			return fFile.getName();

-		}

-		

-		public String getType() {

-			return fFile.getFileExtension();

-		}

-		

-		public Image getImage() {

-			return null;

-		}

-		

-		public InputStream getContents() {

-			return new ByteArrayInputStream(fDocument.get().getBytes());

-		}

-	}

-

-	private ISelection fSelection;

-	private String fBundleName;

-	private boolean fReplaceMode;

-	protected boolean fPrevious= false;

-	

-	EditionAction(boolean replaceMode, String bundleName) {

-		fReplaceMode= replaceMode;

-		fBundleName= bundleName;

-	}

-

-	public void selectionChanged(IAction a, ISelection s) {

-		fSelection= s;

-	}

-

-	public void run(IAction action) {

-			

-		Object[] s= Utilities.toArray(fSelection);

-		

-		for (int i= 0; i < s.length; i++) {

-			Object o= s[i];

-			if (o instanceof IFile) {

-				doFromHistory((IFile)o);

-				continue;

-			}

-			if (o instanceof IAdaptable) {

-				IAdaptable a= (IAdaptable) o;

-				Object adapter= a.getAdapter(IResource.class);

-				if (adapter instanceof IFile) {

-					doFromHistory((IFile)adapter);

-				}

-				continue;

-			}

-		}

-	}

-

-	private void doFromHistory(final IFile file) {

-						

-		ResourceBundle bundle= ResourceBundle.getBundle(fBundleName);

-		String title= Utilities.getString(bundle, "title"); //$NON-NLS-1$

-			

-		Shell parentShell= CompareUIPlugin.getShell();

-		

-		IFileState states[]= null;

-		try {

-			states= file.getHistory(null);

-		} catch (CoreException ex) {		

-			MessageDialog.openError(parentShell, title, ex.getMessage());

-			return;

-		}

-		

-		if (states == null || states.length <= 0) {

-			String msg= Utilities.getString(bundle, "noLocalHistoryError"); //$NON-NLS-1$

-			MessageDialog.openInformation(parentShell, title, msg);

-			return;

-		}

-		

-		ITypedElement base= new ResourceNode(file);

-		

-		IDocument document= getDocument(file);

-		ITypedElement target= base;

-		if (document != null)

-			target= new DocumentBufferNode(document, file);

-	

-		ITypedElement[] editions= new ITypedElement[states.length+1];

-		editions[0]= base;

-		for (int i= 0; i < states.length; i++)

-			editions[i+1]= new HistoryItem(base, states[i]);

-

-		EditionSelectionDialog d= new EditionSelectionDialog(parentShell, bundle);

-		d.setEditionTitleArgument(file.getName());

-		d.setEditionTitleImage(CompareUIPlugin.getImage(file));

-		//d.setHideIdenticalEntries(false);

-		

-		if (fReplaceMode) {

-			

-			ITypedElement ti= null;

-			if (fPrevious)

-				ti= d.selectPreviousEdition(target, editions, null);

-			else

-				ti= d.selectEdition(target, editions, null);

-			

-			if (ti instanceof IStreamContentAccessor) {

-				IStreamContentAccessor sa= (IStreamContentAccessor)ti;

-				try {

-

-					if (document != null)

-						updateDocument(document, sa);	

-					else

-						updateWorkspace(bundle, parentShell, sa, file);

-						

-				} catch (InterruptedException x) {

-					// Do nothing. Operation has been canceled by user.

-					

-				} catch (InvocationTargetException x) {

-					String reason= x.getTargetException().getMessage();

-					MessageDialog.openError(parentShell, title, Utilities.getFormattedString(bundle, "replaceError", reason));	//$NON-NLS-1$

-				}

-			}

-		} else {

-			d.setCompareMode(true);

-

-			d.selectEdition(target, editions, null);			

-		}

-	}

-	

-	private void updateWorkspace(final ResourceBundle bundle, Shell shell,

-						final IStreamContentAccessor sa, final IFile file)

-									throws InvocationTargetException, InterruptedException {

-		

-		WorkspaceModifyOperation operation= new WorkspaceModifyOperation() {

-			public void execute(IProgressMonitor pm) throws InvocationTargetException {

-				try {

-					String taskName= Utilities.getString(bundle, "taskName"); //$NON-NLS-1$

-					pm.beginTask(taskName, IProgressMonitor.UNKNOWN);

-					file.setContents(sa.getContents(), false, true, pm);

-				} catch (CoreException e) {

-					throw new InvocationTargetException(e);

-				} finally {

-					pm.done();

-				}

-			}

-		};

-		

-		ProgressMonitorDialog pmdialog= new ProgressMonitorDialog(shell);				

-		pmdialog.run(false, true, operation);									

-	}

-	

-	private void updateDocument(IDocument document, IStreamContentAccessor sa) throws InvocationTargetException {

-		try {

-			InputStream is= sa.getContents();

-			String text= Utilities.readString(is);

-			document.replace(0, document.getLength(), text);

-		} catch (CoreException e) {

-			throw new InvocationTargetException(e);

-		} catch (BadLocationException e) {

-			throw new InvocationTargetException(e);

-		}

-	}

-	

-	private IDocument getDocument(IFile file) {

-		IWorkbench wb= PlatformUI.getWorkbench();

-		if (wb == null)

-			return null;

-		IWorkbenchWindow[] ws= wb.getWorkbenchWindows();

-		if (ws == null)

-			return null;

-			

-		FileEditorInput test= new FileEditorInput(file);

-		

-		for (int i= 0; i < ws.length; i++) {

-			IWorkbenchWindow w= ws[i];

-			IWorkbenchPage[] wps= w.getPages();

-			if (wps != null) {

-				for (int j= 0; j < wps.length; j++) {

-					IWorkbenchPage wp= wps[j];

-					IEditorPart[] eps= wp.getEditors();

-					if (eps != null) {

-						for (int k= 0; k < eps.length; k++) {

-							IEditorPart ep= eps[k];

-							IEditorInput ei= ep.getEditorInput();

-							if (test.equals(ei)) {

-								if (ep instanceof ITextEditor) {

-									ITextEditor te= (ITextEditor) ep;

-									IDocumentProvider dp= te.getDocumentProvider();

-									if (dp != null) {

-										IDocument doc= dp.getDocument(ei);

-										if (doc != null)

-											return doc;

-									}

-									

-								}

-							}

-						}

-					}

-				}

-			}

-		}

-		return null;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java
deleted file mode 100644
index 773b049..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.StringWriter;

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.widgets.Shell;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.Status;

-

-import org.eclipse.jface.dialogs.ErrorDialog;

-import org.eclipse.jface.dialogs.MessageDialog;

-

-/**

- * The default exception handler shows an error dialog when one of its handle methods

- * is called. If the passed exception is a <code>CoreException</code> an error dialog

- * pops up showing the exception's status information. For a <code>InvocationTargetException</code>

- * a normal message dialog pops up showing the exception's message. Additionally the exception

- * is written to the platform log.

- */

-public class ExceptionHandler {

-

-	private static ExceptionHandler fgInstance= new ExceptionHandler();

-	

-	/**

-	 * Logs the given exception using the platform's logging mechanism. The exception is

-	 * logged as an error with the error code <code>JavaStatusConstants.INTERNAL_ERROR</code>.

-	 */

-	public static void log(Throwable t, String message) {

-		CompareUIPlugin.log(new Status(IStatus.ERROR, CompareUIPlugin.getPluginId(), 

-			CompareUIPlugin.INTERNAL_ERROR, message, t));

-	}

-	

-	/**

-	 * Handles the given <code>CoreException</code>. The workbench shell is used as a parent

-	 * for the dialog window.

-	 * 

-	 * @param e the <code>CoreException</code> to be handled

-	 * @param title the dialog window's window title

-	 * @param message message to be displayed by the dialog window

-	 */

-	public static void handle(CoreException e, String title, String message) {

-		handle(e, CompareUIPlugin.getShell(), title, message);

-	}

-	

-	/**

-	 * Handles the given <code>CoreException</code>. 

-	 * 

-	 * @param e the <code>CoreException</code> to be handled

-	 * @param parent the dialog window's parent shell

-	 * @param title the dialog window's window title

-	 * @param message message to be displayed by the dialog window

-	 */

-	public static void handle(CoreException e, Shell parent, String title, String message) {

-		fgInstance.perform(e, parent, title, message);

-	}

-	

-	/**

-	 * Handles the given <code>InvocationTargetException</code>. The workbench shell is used 

-	 * as a parent for the dialog window.

-	 * 

-	 * @param e the <code>InvocationTargetException</code> to be handled

-	 * @param title the dialog window's window title

-	 * @param message message to be displayed by the dialog window

-	 */

-	public static void handle(InvocationTargetException e, String title, String message) {

-		handle(e, CompareUIPlugin.getShell(), title, message);

-	}

-	

-	/**

-	 * Handles the given <code>InvocationTargetException</code>. 

-	 * 

-	 * @param e the <code>InvocationTargetException</code> to be handled

-	 * @param parent the dialog window's parent shell

-	 * @param title the dialog window's window title

-	 * @param message message to be displayed by the dialog window

-	 */

-	public static void handle(InvocationTargetException e, Shell parent, String title, String message) {

-		fgInstance.perform(e, parent, title, message);

-	}

-

-	//---- Hooks for subclasses to control exception handling ------------------------------------

-	

-	protected void perform(CoreException e, Shell shell, String title, String message) {

-		CompareUIPlugin.log(e);

-		IStatus status= e.getStatus();

-		if (status != null) {

-			ErrorDialog.openError(shell, title, message, status);

-		} else {

-			displayMessageDialog(e, e.getMessage(), shell, title, message);

-		}

-	}

-

-	protected void perform(InvocationTargetException e, Shell shell, String title, String message) {

-		Throwable target= e.getTargetException();

-		if (target instanceof CoreException) {

-			perform((CoreException)target, shell, title, message);

-		} else {

-			CompareUIPlugin.log(e);

-			if (e.getMessage() != null && e.getMessage().length() > 0) {

-				displayMessageDialog(e, e.getMessage(), shell, title, message);

-			} else {

-				displayMessageDialog(e, target.getMessage(), shell, title, message);

-			}

-		}

-	}

-

-	//---- Helper methods -----------------------------------------------------------------------

-	

-	private void displayMessageDialog(Throwable t, String exceptionMessage, Shell shell, String title, String message) {

-		StringWriter msg= new StringWriter();

-		if (message != null) {

-			msg.write(message);

-			msg.write("\n\n"); //$NON-NLS-1$

-		}

-		if (exceptionMessage == null || exceptionMessage.length() == 0)

-			msg.write(CompareMessages.getString("ExceptionDialog.seeErrorLogMessage")); //$NON-NLS-1$

-		else

-			msg.write(exceptionMessage);

-		MessageDialog.openError(shell, title, msg.toString());			

-	}	

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java
deleted file mode 100644
index 88ac71d..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-public interface INavigatable {

-	

-	static final String NAVIGATOR_PROPERTY= "org.eclipse.compare.internal.Navigator"; //$NON-NLS-1$

-	

-	/**

-	 * Returns true if at end or beginning.

-	 */

-	boolean gotoDifference(boolean next);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java
deleted file mode 100644
index e637e53..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.compare.structuremergeviewer.IStructureCreator;

-

-/**

- * A factory object for creating <code>IStructureCreator</code>s from a descriptor.

- * <p>

- * It is used when registering <code>IStructureCreator</code> for types

- * in <code>CompareUIPlugin.registerStructureCreator</code>.

- * </p>

- *

- * @see IStructureCreator

- * @see CompareUIPlugin

- */

-public interface IStructureCreatorDescriptor {

-

-	/**

-	 * Creates a new structure creator.

-	 *

-	 * @return a newly created structure creator

-	 */

-	IStructureCreator createStructureCreator(); 

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java
deleted file mode 100644
index 8d69626..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.jface.viewers.Viewer;

-import org.eclipse.compare.CompareConfiguration;

-

-/**

- * A factory object for creating a <code>Viewer</code>s from a descriptor.

- * <p>

- * It is used when registering a viewer for a specific type

- * in <code>CompareUIPlugin.registerContentViewerDescriptor</code> and

- * in <code>CompareUIPlugin.registerStructureViewerDescriptor</code>.

- *

- * @see org.eclipse.compare.structuremergeviewer.IStructureCreator

- * @see CompareUIPlugin

- */

-public interface IViewerDescriptor {

-

-	/**

-	 * Creates a new viewer from this descriptor under the given STW parent control.

-	 * If the current viewer has the same type as a new viewer

-	 * the implementation of this method is free to return the current viewer instead.

-	 *

-	 * @param currentViewer the current viewer which is going to be replaced with a new viewer.

-	 * @param parent the SWT parent control under which the new viewer has to be created.

-	 * @param config a compare configuration the new viewer might be interested in.

-	 * @return a new viewer or the current viewer.

-	 */

-	Viewer createViewer(Viewer currentViewer, Composite parent, CompareConfiguration config);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java
deleted file mode 100644
index bcfc62b..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-

-import org.eclipse.compare.*;

-

-/**

- * Toggles the <code>ICompareConfiguration.IGNORE_WS</code> property of an

- * <code>ICompareConfiguration</code>.

- */

-public class IgnoreWhiteSpaceAction extends ChangePropertyAction {

-

-	public IgnoreWhiteSpaceAction(ResourceBundle bundle, CompareConfiguration cc) {

-		super(bundle, cc, "action.IgnoreWhiteSpace.", CompareConfiguration.IGNORE_WHITESPACE); //$NON-NLS-1$

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java
deleted file mode 100644
index 3a3ec33..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.*;

-import org.eclipse.swt.graphics.*;

-import org.eclipse.swt.widgets.*;

-

-/**

- * A <code>Canvas</code> showing a single centered SWT <code>Image</code>.

- * If the <code>Image</code> is larger than the <code>Canvas<code>,

- * <code>Scrollbars</code> will appear.

- */

-class ImageCanvas extends Canvas {

-

-	private Image fImage;

-

-	/**

-	 * Create a new ImageCanvas with the given SWT stylebits.

-	 * (SWT.H_SCROLL and SWT.V_SCROLL are automtically added).

-	 */

-	public ImageCanvas(Composite parent, int style) {

-		super(parent, style | SWT.H_SCROLL | SWT.V_SCROLL);

-

-		ScrollBar sb= getHorizontalBar();

-		sb.setIncrement(20);

-		sb.addListener(SWT.Selection, new Listener() {

-			public void handleEvent(Event e) {

-				repaint();

-			}

-		});

-

-		sb= getVerticalBar();

-		sb.setIncrement(20);

-		sb.addListener(SWT.Selection, new Listener() {

-			public void handleEvent(Event e) {

-				repaint();

-			}

-		});

-

-		addListener(SWT.Resize, new Listener() {

-			public void handleEvent(Event e) {

-				updateScrollbars();

-			}

-		});

-

-		addListener(SWT.Paint, new Listener() {

-			public void handleEvent(Event event) {

-				paint(event.gc);

-			}

-		});

-	}

-

-	/**

-	 * Set the SWT Image to use as the ImageCanvas contents.

-	 */

-	public void setImage(Image img) {

-		fImage= img;

-

-		if (!isDisposed()) {

-			getHorizontalBar().setSelection(0);

-			getVerticalBar().setSelection(0);

-			updateScrollbars();

-			getParent().layout();

-			redraw();

-		}

-	}

-

-	public void repaint() {

-		if (!isDisposed()) {

-			GC gc= new GC(this);

-			paint(gc);

-			gc.dispose();

-		}

-	}

-

-	/**

-	 * @private

-	 */

-	private void paint(GC gc) {

-		if (fImage != null) {

-			Rectangle bounds= fImage.getBounds();

-			Rectangle clientArea= getClientArea();

-

-			int x;

-			if (bounds.width < clientArea.width)

-				x= (clientArea.width - bounds.width) / 2;

-			else

-				x= -getHorizontalBar().getSelection();

-

-			int y;

-			if (bounds.height < clientArea.height)

-				y= (clientArea.height - bounds.height) / 2;

-			else

-				y= -getVerticalBar().getSelection();

-

-			gc.drawImage(fImage, x, y);

-		}

-	}

-

-	/**

-	 * @private

-	 */

-	private void updateScrollbars() {

-		Rectangle bounds= fImage != null ? fImage.getBounds() : new Rectangle(0, 0, 0, 0);

-		Point size= getSize();

-		Rectangle clientArea= getClientArea();

-

-		ScrollBar horizontal= getHorizontalBar();

-		if (bounds.width <= clientArea.width) {

-			horizontal.setVisible(false);

-			horizontal.setSelection(0);

-		} else {

-			horizontal.setPageIncrement(clientArea.width - horizontal.getIncrement());

-			int max= bounds.width + (size.x - clientArea.width);

-			horizontal.setMaximum(max);

-			horizontal.setThumb(size.x > max ? max : size.x);

-			horizontal.setVisible(true);

-		}

-

-		ScrollBar vertical= getVerticalBar();

-		if (bounds.height <= clientArea.height) {

-			vertical.setVisible(false);

-			vertical.setSelection(0);

-		} else {

-			vertical.setPageIncrement(clientArea.height - vertical.getIncrement());

-			int max= bounds.height + (size.y - clientArea.height);

-			vertical.setMaximum(max);

-			vertical.setThumb(size.y > max ? max : size.y);

-			vertical.setVisible(true);

-		}

-	}

-

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java
deleted file mode 100644
index 8373bed..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.ByteArrayInputStream;

-import java.io.InputStream;

-import java.io.IOException;

-import java.util.ResourceBundle;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.SWTException;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Display;

-

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.contentmergeviewer.ContentMergeViewer;

-

-/**

- */

-public class ImageMergeViewer extends ContentMergeViewer {

-	

-	private static final String BUNDLE_NAME= "org.eclipse.compare.internal.ImageMergeViewerResources"; //$NON-NLS-1$

-		

-	private Object fAncestorImage;

-	private Object fLeftImage;

-	private Object fRightImage;

-

-	private ImageCanvas fAncestor;

-	private ImageCanvas fLeft;

-	private ImageCanvas fRight;

-	

-			

-	public ImageMergeViewer(Composite parent, int styles, CompareConfiguration mp) {

-		super(styles, ResourceBundle.getBundle(BUNDLE_NAME), mp);

-		buildControl(parent);

-		String title= Utilities.getString(getResourceBundle(), "title"); //$NON-NLS-1$

-		getControl().setData(CompareUI.COMPARE_VIEWER_TITLE, title);

-	}

-

-	protected void updateContent(Object ancestor, Object left, Object right) {

-		

-		fAncestorImage= ancestor;

-		setInput(fAncestor, ancestor);

-		

-		fLeftImage= left;

-		setInput(fLeft, left);

-		

-		fRightImage= right;

-		setInput(fRight, right);

-	}

-	

-	/**

-	 * We can't modify the contents of either side we just return null.

-	 */

-	protected byte[] getContents(boolean left) {

-		return null;

-	}

-	

-	public void createControls(Composite composite) {

-		fAncestor= new ImageCanvas(composite, SWT.NO_FOCUS);

-		fLeft= new ImageCanvas(composite, SWT.NO_FOCUS);

-		fRight= new ImageCanvas(composite, SWT.NO_FOCUS);

-	}

-

-	private static void setInput(ImageCanvas canvas, Object input) {

-		if (canvas != null) {

-

-			InputStream stream= null;

-			if (input instanceof IStreamContentAccessor) {

-				IStreamContentAccessor sca= (IStreamContentAccessor) input;

-				if (sca != null) {

-					try {

-						stream= sca.getContents();

-					} catch (CoreException ex) {

-					}

-				}

-			}

-			

-			Image image= null;			

-			Display display= canvas.getDisplay();

-			if (stream != null) {

-				try {

-					image= new Image(display, stream);

-				} catch (SWTException ex) {

-				}

-			}

-

-			canvas.setImage(image);

-			if (image != null) {

-				canvas.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND));

-			} else {

-				canvas.setBackground(null);

-			}

-			

-			if (stream != null) {

-				try {

-					stream.close();

-				} catch (IOException ex) {

-				}

-			}

-		}

-	}

-	

-	protected void handleResizeAncestor(int x, int y, int width, int height) {

-		if (width > 0) {

-			fAncestor.setVisible(true);

-			fAncestor.setBounds(x, y, width, height);

-		} else {

-			fAncestor.setVisible(false);

-		}

-	}

-

-	protected void handleResizeLeftRight(int x, int y, int width1, int centerWidth, int width2, int height) {

-		fLeft.setBounds(x, y, width1, height);

-		fRight.setBounds(x+width1+centerWidth, y, width2, height);

-	}

-	

-	protected void copy(boolean leftToRight) {

-		if (leftToRight) {

-			fRightImage= fLeftImage;

-			setInput(fRight, fRightImage);

-			setRightDirty(true);

-		} else {

-			fLeftImage= fRightImage;

-			setInput(fLeft, fLeftImage);

-			setLeftDirty(true);

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java
deleted file mode 100644
index 2d40636..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.compare.*;

-import org.eclipse.jface.viewers.Viewer;

-

-/**

- * A factory object for the <code>ImageMergeViewer</code>.

- * This indirection is necessary because only objects with a default

- * constructor can be created via an extension point

- * (this precludes Viewers).

- */

-public class ImageMergeViewerCreator implements IViewerCreator {

-

-	public Viewer createViewer(Composite parent, CompareConfiguration mp) {

-		return new ImageMergeViewer(parent, SWT.NULL, mp);

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties
deleted file mode 100644
index b150dda..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-

-# @(#)ImageMergeViewerResources.properties

-#

-# Resource strings for ImageMergeViewer.java

-

-title= Image Compare

-

-#####################################################

-# Actions

-#####################################################

-

-action.CopyLeftToRight.label= Copy Left to Right

-action.CopyLeftToRight.tooltip= Copy Image from Left to Right

-action.CopyLeftToRight.image= elcl16/copy_r_co.gif

-

-action.CopyRightToLeft.label= Copy Right to Left

-action.CopyRightToLeft.tooltip= Copy Image from Right to Left

-action.CopyRightToLeft.image= elcl16/copy_l_co.gif

-

-action.EnableAncestor.label= Enable Ancestor Pane

-action.EnableAncestor.tooltip= Control Visibility of Ancestor Pane

-action.EnableAncestor.image= elcl16/ancestorpane_co.gif

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java
deleted file mode 100644
index 9170ede..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.List;

-

-import org.eclipse.jface.viewers.IStructuredContentProvider;

-import org.eclipse.jface.viewers.Viewer;

-

-/** 

- * A specialized content provider to show a list of editor parts.

- */ 

-public class ListContentProvider implements IStructuredContentProvider {

-	List fContents;	

-

-	public ListContentProvider() {

-	}

-	

-	public Object[] getElements(Object input) {

-		if (fContents != null && fContents == input)

-			return fContents.toArray();

-		return new Object[0];

-	}

-

-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

-		if (newInput instanceof List) 

-			fContents= (List)newInput;

-		else

-			fContents= null;

-		// we use a fixed set.

-	}

-

-	public void dispose() {

-	}

-	

-	public boolean isDeleted(Object o) {

-		return fContents != null && !fContents.contains(o);

-	}

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java
deleted file mode 100644
index 7cd2624..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.layout.GridData;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.dialogs.IDialogConstants;

-import org.eclipse.jface.viewers.*;

-

-import org.eclipse.ui.dialogs.SelectionDialog;

-

-public class ListDialog extends SelectionDialog {

-

-	private IStructuredContentProvider fContentProvider;

-	private ILabelProvider fLabelProvider;

-	private Object fInput;

-	private TableViewer fTableViewer;

-	private boolean fAddCancelButton;

-	

-	public ListDialog(Shell parent) {

-		super(parent);

-		fAddCancelButton= false;

-	}

-

-	public void setInput(Object input) {

-		fInput= input;

-	}

-	

-	public void setContentProvider(IStructuredContentProvider sp){

-		fContentProvider= sp;

-	}

-	

-	public void setLabelProvider(ILabelProvider lp){

-		fLabelProvider= lp;

-	}

-

-	public void setAddCancelButton(boolean addCancelButton) {

-		fAddCancelButton= addCancelButton;

-	}

-	

-	public TableViewer getTableViewer(){

-		return fTableViewer;

-	}

-			

-	public boolean hasFilters(){

-		return fTableViewer.getFilters() != null && fTableViewer.getFilters().length != 0;

-	}

-	

-	public void create() {

-		setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE);

-		super.create();

-	}

-	

-	protected void createButtonsForButtonBar(Composite parent) {

-		if (! fAddCancelButton)

-			createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);

-		else

-			super.createButtonsForButtonBar(parent);	

-	}	

-	

-	protected Control createDialogArea(Composite container) {

-		Composite parent= (Composite) super.createDialogArea(container);

-		createMessageArea(parent);

-		fTableViewer= new TableViewer(parent, getTableStyle());

-		fTableViewer.setContentProvider(fContentProvider);

-		Table table= fTableViewer.getTable();

-		fTableViewer.setLabelProvider(fLabelProvider);

-		fTableViewer.setInput(fInput);

-		GridData gd= new GridData(GridData.FILL_BOTH);

-		gd.heightHint= convertHeightInCharsToPixels(15);

-		gd.widthHint= convertWidthInCharsToPixels(55);

-		table.setLayoutData(gd);

-		return parent;

-	}

-	

-	protected int getTableStyle() {

-		return SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
deleted file mode 100644
index 116d878..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java
deleted file mode 100644
index 52269f8..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-package org.eclipse.compare.internal;
-
-import org.eclipse.ui.texteditor.IUpdate;
-import org.eclipse.jface.action.Action;
-
-
-public abstract class MergeViewerAction extends Action implements IUpdate {
-	
-	private boolean fMutable;
-	private boolean fSelection;
-	private boolean fContent;
-	
-	public MergeViewerAction(boolean mutable, boolean selection, boolean content) {
-		fMutable= mutable;
-		fSelection= selection;
-		fContent= content;
-	}
-
-	public boolean isSelectionDependent() {
-		return fSelection;
-	}
-	
-	public boolean isContentDependent() {
-		return fContent;
-	}
-	
-	public boolean isEditableDependent() {
-		return fMutable;
-	}
-	
-	public void update() {
-	}
-}
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java
deleted file mode 100644
index 07a8c74..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.compare.contentmergeviewer.IMergeViewerContentProvider;

-

-/**

- * Adapts any <code>ContentMergeViewer</code> to work on an <code>ICompareInput</code>

- * e.g. a <code>DiffNode</code>.

- */

-public class MergeViewerContentProvider implements IMergeViewerContentProvider {

-	

-	private CompareConfiguration fCompareConfiguration;

-		

-	public MergeViewerContentProvider(CompareConfiguration cc) {

-		fCompareConfiguration= cc;

-	}

-	

-	public void dispose() {

-	}

-	

-	public void inputChanged(Viewer v, Object o1, Object o2) {

-	}

-	

-	//---- ancestor

-			

-	public String getAncestorLabel(Object element) {

-		return fCompareConfiguration.getAncestorLabel(element);

-	}

-	

-	public Image getAncestorImage(Object element) {

-		return fCompareConfiguration.getAncestorImage(element);

-	}

-	

-	public Object getAncestorContent(Object element) {

-		if (element instanceof ICompareInput)

-			return ((ICompareInput) element).getAncestor();

-		return null;

-	}

-	

-	public boolean showAncestor(Object element) {

-		if (element instanceof ICompareInput)

-			return (((ICompareInput)element).getKind() & Differencer.DIRECTION_MASK) == Differencer.CONFLICTING;

-		return false;

-	}

-

-	//---- left

-					

-	public String getLeftLabel(Object element) {

-		return fCompareConfiguration.getLeftLabel(element);

-	}

-	

-	public Image getLeftImage(Object element) {

-		return fCompareConfiguration.getLeftImage(element);

-	}

-	

-	public Object getLeftContent(Object element) {	

-		if (element instanceof ICompareInput)

-			return ((ICompareInput) element).getLeft();

-		return null;

-	}

-		

-	public boolean isLeftEditable(Object element) {

-		if (element instanceof ICompareInput) {

-			Object left= ((ICompareInput) element).getLeft();

-			if (left == null) {

-				IDiffElement parent= ((IDiffElement)element).getParent();

-				if (parent instanceof ICompareInput)

-					left= ((ICompareInput) parent).getLeft();

-			}

-			if (left instanceof IEditableContent)

-				return ((IEditableContent)left).isEditable();

-		}

-		return false;

-	}

-

-	public void saveLeftContent(Object element, byte[] bytes) {

-		if (element instanceof ICompareInput) {

-			ICompareInput node= (ICompareInput) element;

-			if (bytes != null) {

-				ITypedElement left= node.getLeft();

-				if (left instanceof IEditableContent)

-					((IEditableContent)left).setContent(bytes);

-			} else {

-				node.copy(false);

-			}			

-		}

-	}

-	

-	//---- right

-	

-	public String getRightLabel(Object element) {

-		return fCompareConfiguration.getRightLabel(element);

-	}

-	

-	public Image getRightImage(Object element) {

-		return fCompareConfiguration.getRightImage(element);

-	}

-	

-	public Object getRightContent(Object element) {

-		if (element instanceof ICompareInput)

-			return ((ICompareInput) element).getRight();

-		return null;

-	}

-	

-	public boolean isRightEditable(Object element) {

-		if (element instanceof ICompareInput) {

-			Object right= ((ICompareInput) element).getRight();

-			if (right == null) {

-				IDiffContainer parent= ((IDiffElement)element).getParent();

-				if (parent instanceof ICompareInput)

-					right= ((ICompareInput) parent).getRight();

-			}

-			if (right instanceof IEditableContent)

-				return ((IEditableContent)right).isEditable();

-		}

-		return false;

-	}

-	

-	public void saveRightContent(Object element, byte[] bytes) {

-		if (element instanceof ICompareInput) {

-			ICompareInput node= (ICompareInput) element;

-			if (bytes != null) {

-				ITypedElement right= node.getRight();

-				if (right instanceof IEditableContent)

-					((IEditableContent)right).setContent(bytes);

-			} else {

-				node.copy(true);

-			}		

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NavigationAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NavigationAction.java
deleted file mode 100644
index 1a1ea26..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NavigationAction.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-import org.eclipse.jface.action.Action;

-import org.eclipse.compare.CompareEditorInput;

-

-

-public class NavigationAction extends Action {

-	

-	private boolean fNext;

-	private CompareEditorInput fCompareEditorInput;

-

-	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(CompareNavigator.class);

-			if (adapter instanceof CompareNavigator)

-				((CompareNavigator)adapter).selectChange(fNext);

-		}

-	}

-	

-	public void setCompareEditorInput(CompareEditorInput input) {

-		fCompareEditorInput= input;

-	}

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java
deleted file mode 100644
index 32887e3..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.compare.CompareViewerSwitchingPane;

-

-/**

- * Used whenever the input is null or no viewer can be found.

- */

-public class NullViewer extends AbstractViewer {

-

-	private Control fDummy;

-

-	public NullViewer(Composite parent) {

-

-		fDummy= new Tree(parent, SWT.NULL);

-

-		CompareViewerSwitchingPane.clearToolBar(parent);

-	}

-

-	public Control getControl() {

-		return fDummy;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java
deleted file mode 100644
index b4b965a..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-

-public class ReplaceWithEditionAction extends EditionAction {

-		

-	public ReplaceWithEditionAction() {

-		super(true, "org.eclipse.compare.internal.ReplaceWithEditionAction"); //$NON-NLS-1$

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties
deleted file mode 100644
index 2d29303..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-

-# @(#)ReplaceWithEditionAction.properties

-#

-# Resources for ReplaceWithEditionAction.java

-

-title= Replace from Local History

-

-treeTitleFormat= Local History of ''{0}''

-dateIcon= obj16/day_obj.gif

-timeIcon= obj16/resource_obj.gif

-

-treeFormat= {0}

-workspaceTreeFormat {0} (Workspace File)

-parseErrorFormat= {0} (Parse Error)

-

-editionLabel= Local History ({0})

-workspaceEditionLabel= Workspace File

-

-targetLabel= {0}

-

-todayFormat= Today ({0})

-yesterdayFormat= Yesterday ({0})

-dayFormat= {0}

-

-buttonLabel= Replace

-

-noLocalHistoryError= No local history available for selected resource.

-replaceError=Can''t replace resource (reason: {0}).

-

-taskName=Replacing
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java
deleted file mode 100644
index 2f590db..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-

-public class ReplaceWithPreviousEditionAction extends EditionAction {

-		

-	public ReplaceWithPreviousEditionAction() {

-		super(true, "org.eclipse.compare.internal.ReplaceWithEditionAction"); //$NON-NLS-1$

-		fPrevious= true;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
deleted file mode 100644
index 3f22f16..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.text.MessageFormat;

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.jface.viewers.ISelection;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-

-

-/**

- * A two-way or three-way compare for arbitrary IResources.

- */

-class ResourceCompareInput extends CompareEditorInput {

-	

-	private static final boolean NORMALIZE_CASE= true;

-	

-	private boolean fThreeWay= false;

-	private Object fRoot;

-	private IStructureComparator fAncestor;

-	private IStructureComparator fLeft;

-	private IStructureComparator fRight;

-	private IResource fAncestorResource;

-	private IResource fLeftResource;

-	private IResource fRightResource;

-	

-	

-	private class MyDiffNode extends DiffNode {

-		public MyDiffNode(IDiffContainer parent, int description, ITypedElement ancestor, ITypedElement left, ITypedElement right) {

-			super(parent, description, ancestor, left, right);

-		}

-		protected void fireChange() {

-			super.fireChange();

-			setDirty(true);

-		}

-	}

-	

-	/**

-	 * Creates an compare editor input for the given selection.

-	 */

-	ResourceCompareInput(CompareConfiguration config) {

-		super(config);

-	}

-		

-	/**

-	 * Returns true if compare can be executed for the given selection.

-	 */

-	boolean setSelection(ISelection s) {

-

-		IResource[] selection= Utilities.getResources(s);

-		if (selection.length < 2 || selection.length > 3)

-			return false;

-

-		fThreeWay= selection.length == 3;

-		

-		fLeftResource= selection[0];

-		fRightResource= selection[1];

-		if (fThreeWay) {

-			fLeftResource= selection[1];		

-			fRightResource= selection[2];

-		}

-		

-		fAncestor= null;

-		fLeft= getStructure(fLeftResource);

-		fRight= getStructure(fRightResource);

-					

-		if (incomparable(fLeft, fRight))

-			return false;

-

-		if (fThreeWay) {

-			fAncestorResource= selection[0];

-			fAncestor= getStructure(fAncestorResource);

-			

-			if (incomparable(fAncestor, fRight))

-				return false;

-		}

-

-		return true;

-	}

-	

-	/**

-	 * Returns true if the given arguments cannot be compared.

-	 */

-	private boolean incomparable(IStructureComparator c1, IStructureComparator c2) {

-		if (c1 == null || c2 == null)

-			return true;

-		return isLeaf(c1) != isLeaf(c2);

-	}

-	

-	/**

-	 * Returns true if the given arguments is a leaf.

-	 */

-	private boolean isLeaf(IStructureComparator c) {

-		if (c instanceof ITypedElement) {

-			ITypedElement te= (ITypedElement) c;

-			return !ITypedElement.FOLDER_TYPE.equals(te.getType());

-		}

-		return false;

-	}

-	

-	/**

-	 * Creates a <code>IStructureComparator</code> for the given input.

-	 * Returns <code>null</code> if no <code>IStructureComparator</code>

-	 * can be found for the <code>IResource</code>.

-	 */

-	private IStructureComparator getStructure(IResource input) {

-		

-		if (input instanceof IContainer)

-			return new BufferedResourceNode(input);

-			

-		if (input instanceof IFile) {

-			IStructureComparator rn= new BufferedResourceNode(input);

-			IFile file= (IFile) input;

-			String type= normalizeCase(file.getFileExtension());

-			if ("JAR".equals(type) || "ZIP".equals(type)) //$NON-NLS-2$ //$NON-NLS-1$

-				return new ZipFileStructureCreator().getStructure(rn);

-			return rn;

-		}

-		return null;

-	}

-	

-	/**

-	 * Performs a two-way or three-way diff on the current selection.

-	 */

-	public Object prepareInput(IProgressMonitor pm) throws InvocationTargetException {

-				

-		CompareConfiguration cc= (CompareConfiguration) getCompareConfiguration();

-	

-		try {

-			// fix for PR 1GFMLFB: ITPUI:WIN2000 - files that are out of sync with the file system appear as empty							

-			fLeftResource.refreshLocal(IResource.DEPTH_INFINITE, pm);

-			fRightResource.refreshLocal(IResource.DEPTH_INFINITE, pm);

-			if (fThreeWay && fAncestorResource != null)

-				fAncestorResource.refreshLocal(IResource.DEPTH_INFINITE, pm);

-			// end fix						

-				

-			pm.beginTask(Utilities.getString("ResourceCompare.taskName"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$

-

-			cc.setLeftLabel(buildLabel(fLeftResource));

-			cc.setLeftImage(CompareUIPlugin.getImage(fLeftResource));

-			

-			cc.setRightLabel(buildLabel(fRightResource));

-			cc.setRightImage(CompareUIPlugin.getImage(fRightResource));

-

-			String leftLabel= fLeftResource.getName();

-			String rightLabel= fRightResource.getName();

-			

-			String title;

-			if (fThreeWay) {			

-				cc.setAncestorLabel(buildLabel(fAncestorResource));

-				cc.setAncestorImage(CompareUIPlugin.getImage(fAncestorResource));

-				String format= Utilities.getString("ResourceCompare.threeWay.title"); //$NON-NLS-1$

-				String ancestorLabel= fAncestorResource.getName();

-				title= MessageFormat.format(format, new String[] {ancestorLabel, leftLabel, rightLabel} );

-			} else {

-				String format= Utilities.getString("ResourceCompare.twoWay.title"); //$NON-NLS-1$

-				title= MessageFormat.format(format, new String[] {leftLabel, rightLabel} );

-			}

-			setTitle(title);

-			

-			Differencer d= new Differencer() {

-				protected Object visit(Object parent, int description, Object ancestor, Object left, Object right) {

-					return new MyDiffNode((IDiffContainer) parent, description, (ITypedElement)ancestor, (ITypedElement)left, (ITypedElement)right);

-				}

-			};

-			

-			fRoot= d.findDifferences(fThreeWay, pm, null, fAncestor, fLeft, fRight);

-			return fRoot;

-			

-		} catch (CoreException ex) {

-			throw new InvocationTargetException(ex);

-		} finally {

-			pm.done();

-		}

-	}

-	

-	private String buildLabel(IResource r) {

-		//return r.getName();

-		String n= r.getFullPath().toString();

-		if (n.charAt(0) == IPath.SEPARATOR)

-			return n.substring(1);

-		return n;

-	}

-	

-	public void saveChanges(IProgressMonitor pm) throws CoreException {

-		super.saveChanges(pm);

-		if (fRoot instanceof DiffNode) {

-			try {

-				commit(pm, (DiffNode) fRoot);

-			} finally {	

-				setDirty(false);

-			}

-		}

-	}

-	

-	/*

-	 * Recursively walks the diff tree and commits all changes.

-	 */

-	private static void commit(IProgressMonitor pm, DiffNode node) throws CoreException {

-		

-		ITypedElement left= node.getLeft();

-		if (left instanceof BufferedResourceNode)

-			((BufferedResourceNode) left).commit(pm);

-			

-		ITypedElement right= node.getRight();

-		if (right instanceof BufferedResourceNode)

-			((BufferedResourceNode) right).commit(pm);

-

-		IDiffElement[] children= node.getChildren();

-		if (children != null) {

-			for (int i= 0; i < children.length; i++) {

-				IDiffElement element= children[i];

-				if (element instanceof DiffNode)

-					commit(pm, (DiffNode) element);

-			}

-		}

-	}

-	

-	private static String normalizeCase(String s) {

-		if (NORMALIZE_CASE && s != null)

-			return s.toUpperCase();

-		return s;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java
deleted file mode 100644
index e109359..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.util.ResourceBundle;

-

-import org.eclipse.compare.*;

-

-/**

- * Toggles the <code>ICompareConfiguration.SHOW_PSEUDO_CONFLICTS</code> property of an

- * <code>ICompareConfiguration</code>.

- */

-public class ShowPseudoConflicts extends ChangePropertyAction {

-

-	public ShowPseudoConflicts(ResourceBundle bundle, CompareConfiguration cc) {

-		super(bundle, cc, "action.ShowPseudoConflicts.", CompareConfiguration.SHOW_PSEUDO_CONFLICTS); //$NON-NLS-1$

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java
deleted file mode 100644
index 846a378..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.*;

-import org.eclipse.swt.custom.SashForm;

-

-public class Splitter extends SashForm {

-	

-	private static final String VISIBILITY= "org.eclipse.compare.internal.visibility"; //$NON-NLS-1$

-	

-

-	public Splitter(Composite parent, int style) {

-		super(parent, style);

-	}

-		

-	public void setVisible(Control child, boolean visible) {

-		

-		boolean wasEmpty= isEmpty();

-				

-		child.setVisible(visible);

-		child.setData(VISIBILITY, new Boolean(visible));

-		

-		if (wasEmpty != isEmpty()) {

-			Composite parent= getParent();

-			if (parent instanceof Splitter) {

-				Splitter sp= (Splitter) parent;

-				sp.setVisible(this, visible);

-				sp.layout();

-			}	

-		} else {

-			layout();

-		}

-	}

-	

-	private boolean isEmpty() {

-		Control[] controls= getChildren();

-		for (int i= 0; i < controls.length; i++)

-			if (isVisible(controls[i]))

-				return false;

-		return true;

-	}

-	

-	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;

-	}

-			

-	public void setMaximizedControl(Control control) {

-		if (control == null || control == getMaximizedControl())

-			super.setMaximizedControl(null);

-		else

-			super.setMaximizedControl(control);		

-			

-		// walk up

-		Composite parent= getParent();

-		if (parent instanceof Splitter)

-			((Splitter) parent).setMaximizedControl(this);

-		else

-			layout(true);

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java
deleted file mode 100644
index 9fb4b93..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.contentmergeviewer.TextMergeViewer;

-

-/**

- * A factory object for the <code>TextMergeViewer</code>.

- * This indirection is necessary because only objects with a default

- * constructor can be created via an extension point

- * (this precludes Viewers).

- */

-public class TextMergeViewerCreator implements IViewerCreator {

-

-	public Viewer createViewer(Composite parent, CompareConfiguration mp) {

-		return new TextMergeViewer(parent, mp);

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewer.java
deleted file mode 100644
index a556a6f..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewer.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.IOException;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

-

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.text.source.SourceViewer;

-import org.eclipse.jface.text.Document;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.ICompareInput;

-

-

-public class TextViewer extends AbstractViewer {

-		

-	private SourceViewer fSourceViewer;

-	private ICompareInput fInput;

-	

-	

-	TextViewer(Composite parent) {

-		fSourceViewer= new SourceViewer(parent, null, SWT.H_SCROLL + SWT.V_SCROLL);

-		fSourceViewer.setEditable(false);

-	}

-		

-	public Control getControl() {

-		return fSourceViewer.getTextWidget();

-	}

-	

-	public void setInput(Object input) {

-		if (input instanceof IStreamContentAccessor) {

-			fSourceViewer.setDocument(new Document(getString(input)));

-		} else if (input instanceof ICompareInput) {

-			fInput= (ICompareInput) input;

-			ITypedElement left= ((ICompareInput) fInput).getLeft();

-			fSourceViewer.setDocument(new Document(getString(left)));

-		}

-	}

-	

-	public Object getInput() {

-		return fInput;

-	}

-	

-	private String getString(Object input) {

-		

-		if (input instanceof IStreamContentAccessor) {

-			IStreamContentAccessor sca= (IStreamContentAccessor) input;

-			try {

-				return Utilities.readString(sca.getContents());

-			} catch (CoreException ex) {

-			}

-		}

-		return ""; //$NON-NLS-1$

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java
deleted file mode 100644
index 96bc4df..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.jface.viewers.Viewer;

-

-import org.eclipse.compare.CompareConfiguration;

-import org.eclipse.compare.IViewerCreator;

-

-

-/**

- * A factory object for the <code>TextMergeViewer</code>.

- * This indirection is necessary because only objects with a default

- * constructor can be created via an extension point

- * (this precludes Viewers).

- */

-public class TextViewerCreator implements IViewerCreator {

-

-	public Viewer createViewer(Composite parent, CompareConfiguration mp) {

-		return new TextViewer(parent);

-	}

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java
deleted file mode 100644
index a849684..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.graphics.*;

-import org.eclipse.swt.layout.*;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.operation.*;

-import org.eclipse.jface.resource.JFaceResources;

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.*;

-import org.eclipse.compare.contentmergeviewer.*;

-

-/**

- * A modal dialog that displays progress during a long running operation.

- */

-public class TimeoutContext {

-

-	private static class ModalContextThread extends Thread {

-		

-		private boolean fWorking;

-		private IRunnableWithProgress fRunnable;

-		private Throwable fThrowable;

-		private IProgressMonitor fProgressMonitor;

-		private boolean fContinueEventDispatching= true;

-		private Display fDisplay;

-

-		private ModalContextThread(IRunnableWithProgress operation, IProgressMonitor monitor) {

-			super("TimeoutContext"); //$NON-NLS-1$

-			fRunnable= operation;

-			fProgressMonitor= monitor;

-		}

-		

-		synchronized boolean timeout(Display display) {

-			fDisplay= display;

-			return fWorking;

-		}

-		

-		public void run() {

-			try {

-				fWorking= true;

-				if (fRunnable != null)

-					fRunnable.run(fProgressMonitor);

-			} catch (InvocationTargetException e) {

-				fThrowable= e;

-			} catch (InterruptedException e) {

-				fThrowable= e;

-			} catch (RuntimeException e) {

-				fThrowable= e;

-			} catch (ThreadDeath e) {

-				// Make sure to propagate ThreadDeath, or threads will never fully terminate

-				throw e;

-			} catch (Error e) {

-				fThrowable= e;

-			} finally {

-				fWorking= false;

-	

-				if (fDisplay != null) {

-					// Make sure that all events in the asynchronous event queue

-					// are dispatched.

-					fDisplay.syncExec(

-						new Runnable() {

-							public void run() {

-								// do nothing

-							}

-						}

-					);

-					

-					// Stop event dispatching

-					fContinueEventDispatching= false;

-					

-					// Force the event loop to return from sleep () so that

-					// it stops event dispatching.

-					fDisplay.asyncExec(null);

-				}

-			}	

-		}

-		

-		public void block() {

-			while (fContinueEventDispatching)

-				if (!fDisplay.readAndDispatch())

-					fDisplay.sleep();

-		}		

-	}

-	

-	static class ProgressMonitorDialog extends org.eclipse.jface.dialogs.Dialog {

-

-		protected ProgressIndicator fProgressIndicator;

-		protected Label fTaskLabel;

-		protected Label fSubTaskLabel;

-		protected Button fCancel;

-		protected boolean fEnableCancelButton;

-		private ProgressMonitor fProgressMonitor;

-		private Cursor fArrowCursor;

-		private Cursor fWaitCursor;

-		private Shell fParentShell;

-		

-		private ProgressMonitorDialog(Shell parent, boolean cancelable, ProgressMonitor pm) {

-			super(parent);

-			fProgressMonitor= pm;

-			fParentShell= parent;

-			fEnableCancelButton= cancelable;

-			this.setBlockOnOpen(false);

-			setShellStyle(SWT.BORDER | SWT.TITLE | SWT.APPLICATION_MODAL); // no close button

-		}

-		

-		public boolean close() {

-			if (fCancel != null && !fCancel.isDisposed())

-				fCancel.setCursor(null);

-			Shell shell= getShell();

-			if (shell != null && !shell.isDisposed())

-				shell.setCursor(null);

-			if (fArrowCursor != null)

-				fArrowCursor.dispose();

-			if (fWaitCursor != null)

-				fWaitCursor.dispose();

-			fArrowCursor= null;

-			fWaitCursor= null;

-			return super.close();

-		}

-		

-		protected void configureShell(Shell shell) {

-			super.configureShell(shell);

-			shell.setText(JFaceResources.getString("ProgressMonitorDialog.title")); //$NON-NLS-1$

-			if (fWaitCursor == null)

-				fWaitCursor= new Cursor(shell.getDisplay(),SWT.CURSOR_WAIT);

-			shell.setCursor(fWaitCursor);

-		}

-		

-		protected void createButtonsForButtonBar(Composite parent) {

-			// cancel button		

-			fCancel= createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, true);

-			if(fArrowCursor == null)

-				fArrowCursor= new Cursor(fCancel.getDisplay(),SWT.CURSOR_ARROW);		

-			fCancel.setCursor(fArrowCursor);

-			fCancel.addListener(SWT.Selection,

-				new Listener() {

-					public void handleEvent(Event e) {

-						if (fCancel != null && !fCancel.isDisposed())

-							fCancel.setEnabled(false);

-						fProgressMonitor.setCanceled(true);

-					}

-				}

-			);

-			fCancel.setEnabled(fEnableCancelButton);

-		}

-		

-		protected Control createDialogArea(Composite parent) {

-		

-			Composite c= (Composite)super.createDialogArea(parent);

-			((GridLayout)c.getLayout()).numColumns= 2;

-	

-			// icon

-			Label iconLabel= new Label(c, SWT.LEFT);

-			GridData gd= new GridData();

-			iconLabel.setLayoutData(gd);

-			iconLabel.setFont(parent.getFont());

-			Image i= JFaceResources.getImageRegistry().get(org.eclipse.jface.dialogs.Dialog.DLG_IMG_INFO);

-			if (i != null)

-				iconLabel.setImage(i);

-			else

-				iconLabel.setText(JFaceResources.getString("Image_not_found")); //$NON-NLS-1$

-	

-			// label on right hand side of icon

-			fTaskLabel= new Label(c, SWT.LEFT | SWT.WRAP);

-			fTaskLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

-			fTaskLabel.setFont(parent.getFont());

-	

-			// progress indicator

-			fProgressIndicator= new ProgressIndicator(c);

-			gd= new GridData();

-			gd.heightHint= 15;

-			gd.horizontalAlignment= gd.FILL;

-			gd.grabExcessHorizontalSpace= true;

-			gd.horizontalSpan= 2;

-			fProgressIndicator.setLayoutData(gd);

-	

-			// label showing current task

-			fSubTaskLabel= new Label(c, SWT.LEFT | SWT.WRAP);

-			gd= new GridData(GridData.FILL_HORIZONTAL);

-			gd.heightHint= 35;	

-			gd.horizontalSpan= 2;

-			fSubTaskLabel.setLayoutData(gd);

-			fSubTaskLabel.setFont(parent.getFont());

-						

-			// update with values fProgressMonitor

-			fTaskLabel.setText(fProgressMonitor.fTask);

-			

-			if (fProgressMonitor.fMaxWork == IProgressMonitor.UNKNOWN)

-				fProgressIndicator.beginAnimatedTask();

-			else

-				fProgressIndicator.beginTask(fProgressMonitor.fMaxWork);

-

-			if (fProgressMonitor.fSubTask != null)

-				fSubTaskLabel.setText(fProgressMonitor.fSubTask);

-			fProgressIndicator.worked(fProgressMonitor.fWorked);

-	

-			fProgressMonitor.activate(this);

-

-			return c;

-		}

-		

-		void beginTask(final String name, final int totalWork) {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						fTaskLabel.setText(name);

-						

-						if (fProgressIndicator != null && fProgressIndicator.isDisposed()) {

-							if (totalWork == IProgressMonitor.UNKNOWN)

-								fProgressIndicator.beginAnimatedTask();

-							else

-								fProgressIndicator.beginTask(totalWork);

-						}

-					}

-				}

-			);

-		}

-		

-		void setTaskName(final String name) {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						if (fTaskLabel != null && fTaskLabel.isDisposed())

-							fTaskLabel.setText(name);

-					}

-				}

-			);

-		}

-

-		void setSubTaskName(final String name) {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						String n= (name == null) ? "" : name;	//$NON-NLS-1$

-						if (fSubTaskLabel != null && !fSubTaskLabel.isDisposed())

-							fSubTaskLabel.setText(n);

-					}

-				}

-			);	

-		}

-		

-		void done() {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						if (fProgressIndicator != null && !fProgressIndicator.isDisposed()) {

-							fProgressIndicator.sendRemainingWork();

-							fProgressIndicator.done();

-						}

-					}

-				}

-			);

-		}

-		

-		void worked(final double work) {

-			fParentShell.getDisplay().syncExec(

-				new Runnable() {

-					public void run() {

-						if (fProgressIndicator != null && !fProgressIndicator.isDisposed())

-							fProgressIndicator.worked(work);

-					}

-				}

-			);

-		}

-

-		protected Point getInitialSize() {

-			return getShell().computeSize(450, SWT.DEFAULT);

-		}

-	}

-

-	private static class ProgressMonitor implements IProgressMonitor {

-		

-		private int fMaxWork;

-		private String fTask;

-		private String fSubTask;

-		private int fWorked;

-		private ProgressMonitorDialog fProgressMonitorDialog;

-		private boolean fIsCanceled;

-		

-		public void beginTask(String name, int totalWork) {

-			

-			fTask= name;

-			fMaxWork= totalWork;

-			fWorked= 0;

-			

-			if (fProgressMonitorDialog != null)	

-				fProgressMonitorDialog.beginTask(name, totalWork);			

-		}

-		

-		void activate(ProgressMonitorDialog dialog) {

-			fProgressMonitorDialog= dialog;

-		}

-		

-		public void done() {

-			if (fProgressMonitorDialog != null)				

-				fProgressMonitorDialog.done();

-		}

-		

-		public void setTaskName(String name) {

-			fTask= name;

-			if (fProgressMonitorDialog != null)				

-				fProgressMonitorDialog.setTaskName(name);

-		}

-				

-		public boolean isCanceled() {

-			return fIsCanceled;

-		}

-		

-		public void setCanceled(boolean b) {

-			fIsCanceled= b;

-		}

-		

-		public void subTask(String name) {

-			fSubTask= name;

-			if (fProgressMonitorDialog != null)				

-				fProgressMonitorDialog.setSubTaskName(name);

-		}

-		

-		public void worked(int work) {

-			if (fProgressMonitorDialog != null)

-				internalWorked(work);

-			else

-				fWorked+= work;

-		}

-		

-		public void internalWorked(double work) {

-			if (fProgressMonitorDialog != null)				

-				fProgressMonitorDialog.worked(work);

-		}

-	}

-	

-	public static void run(boolean cancelable, int timeout, Shell parent, IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {

-		

-		Display display= parent.getDisplay();

-		

-		ProgressMonitor pm= new ProgressMonitor();

-				

-		ModalContextThread t= new ModalContextThread(runnable, pm);

-		t.start();	// start the long running operation

-		

-		// wait until long operations terminates or timeout

-		try {

-			t.join(timeout);

-		} catch (InterruptedException e) {

-		}

-		

-		if (t.timeout(display)) {	// timeout

-			ProgressMonitorDialog dialog= new ProgressMonitorDialog(parent, cancelable, pm);

-			dialog.open();

-			t.block();

-			dialog.close();

-		}

-		

-		Throwable throwable= t.fThrowable;

-		if (throwable != null) {

-			if (throwable instanceof InvocationTargetException) {

-				throw (InvocationTargetException) throwable;

-			} else if (throwable instanceof InterruptedException) {

-				throw (InterruptedException) throwable;

-			} else if (throwable instanceof OperationCanceledException) {

-				throw new InterruptedException(throwable.getMessage());

-			} else {

-				throw new InvocationTargetException(throwable);

-			}	

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java
deleted file mode 100644
index d4253cd..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.compare.rangedifferencer.IRangeComparator;

-import org.eclipse.compare.contentmergeviewer.ITokenComparator;

-

-/**

- * Implements the <code>ITokenComparator</code> interface for words (or tokens)

- * in a string.

- * A <code>TokenComparator</code> is used as the input for the <code>RangeDifferencer</code>

- * engine to perform a token oriented compare on strings.

- */

-public class TokenComparator implements ITokenComparator {

-

-	private boolean fShouldEscape= true;

-	private String fText;

-	private int fCount;

-	private int[] fStarts;

-	private int[] fLengths;

-

-	/**

-	 * Creates a <code>TokenComparator</code> for the given string.

-	 *

-	 * @param string the string that is split into token

-	 */

-	public TokenComparator(String text) {

-		

-		Assert.isNotNull(text);

-

-		fText= text;

-		

-		int length= fText.length();

-		fStarts= new int[length];	// pessimistic assumption!

-		fLengths= new int[length];

-		fCount= 0;

-		

-		char lastCategory= 0;	// 0: no category

-		for (int i= 0; i < length; i++) {

-			char c= fText.charAt(i);

-			

-			char category= '?';	// unspecified category

-			if (Character.isWhitespace(c))

-				category= ' ';	// white space category

-			else if (Character.isDigit(c))

-				category= '0';	// digits

-			else if (Character.isLetter(c))

-				category= 'a';	// letters

-			

-			if (category != lastCategory) {

-				// start a new token

-				fStarts[fCount++]= i;

-				lastCategory= category;

-			}

-			fLengths[fCount-1]++;

-		}

-	}

-	

-	/**

-	 * Creates a <code>TokenComparator</code> for the given string.

-	 *

-	 * @param string the string that is split into token

-	 * @param shouldEscape

-	 */

-	public TokenComparator(String s, boolean shouldEscape) {

-		this(s);

-		fShouldEscape= shouldEscape;

-	}

-

-	/**

-	 * Returns the number of token in the string.

-	 *

-	 * @return number of token in the string

-	 */

-	public int getRangeCount() {

-		return fCount;

-	}

-

-	/* (non Javadoc)

-	 * see ITokenComparator.getTokenStart

-	 */

-	public int getTokenStart(int index) {

-		if (index < fCount)

-			return fStarts[index];

-		return fText.length();

-	}

-

-	/* (non Javadoc)

-	 * see ITokenComparator.getTokenLength

-	 */

-	public int getTokenLength(int index) {

-		if (index < fCount)

-			return fLengths[index];

-		return 0;

-	}

-		

-	/**

-	 * Returns <code>true</code> if a token given by the first index

-	 * matches a token specified by the other <code>IRangeComparator</code> and index.

-	 *

-	 * @param thisIndex	the number of the token within this range comparator

-	 * @param other the range comparator to compare this with

-	 * @param otherIndex the number of the token within the other comparator

-	 * @return <code>true</code> if the token are equal

-	 */

-	public boolean rangesEqual(int thisIndex, IRangeComparator other, int otherIndex) {

-		if (other != null && getClass() == other.getClass()) {

-			TokenComparator tc= (TokenComparator) other;

-			int thisLen= getTokenLength(thisIndex);

-			int otherLen= tc.getTokenLength(otherIndex);

-			if (thisLen == otherLen)

-				return fText.regionMatches(false, getTokenStart(thisIndex), tc.fText, tc.getTokenStart(otherIndex), thisLen);

-		}

-		return false;

-	}

-

-	/**

-	 * Aborts the comparison if the number of tokens is too large.

-	 *

-	 * @return <code>true</code> to abort a token comparison

-	 */

-	public boolean skipRangeComparison(int length, int max, IRangeComparator other) {

-

-		if (!fShouldEscape)

-			return false;

-

-		if (getRangeCount() < 50 || other.getRangeCount() < 50)

-			return false;

-

-		if (max < 100)

-			return false;

-

-		if (length < 100)

-			return false;

-

-		if (max > 800)

-			return true;

-

-		if (length < max / 4)

-			return false;

-

-		return true;

-	}

-		

-//	public static void main(String args[]) {

-//		//String in= "private static boolean isWhitespace(char c) {";

-//		//String in= "for (int j= 0; j < l-1; j++) {";

-//		String in= "for do    i= 123; i++";

-//		TokenComparator tc= new TokenComparator(in, false);

-//		

-//		System.out.println("n: " + tc.getRangeCount());

-//		System.out.println(in);

-//		

-//		int p= 0;

-//		for (int i= 0; i < tc.getRangeCount(); i++) {

-//			int l= tc.getTokenLength(i);

-//			System.out.print("<");

-//			

-//			for (int j= 0; j < l-1; j++)

-//				System.out.print(" ");

-//		}

-//		System.out.println();

-//		

-//		//System.out.println("extract: <" + tc.extract(16, 1) + ">");

-//	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
deleted file mode 100644
index 0a81cc1..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import java.io.*;

-import java.util.List;

-import java.util.ArrayList;

-import java.util.ResourceBundle;

-import java.util.MissingResourceException;

-import java.text.MessageFormat;

-

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.util.*;

-import org.eclipse.jface.text.Document;

-import org.eclipse.jface.text.IDocument;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.IStructuredSelection;

-import org.eclipse.jface.action.IAction;

-import org.eclipse.jface.resource.ImageDescriptor;

-

-import org.eclipse.core.runtime.IAdaptable;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.resources.IFile;

-import org.eclipse.core.runtime.CoreException;

-

-import org.eclipse.ui.IActionBars;

-import org.eclipse.ui.IViewPart;

-

-import org.eclipse.compare.CompareConfiguration;

-

-/**

- * Convenience and utility methods.

- */

-public class Utilities {

-

-	public static IActionBars findActionBars(Control c) {

-		while (c != null && !c.isDisposed()) {

-			Object data= c.getData();

-			if (data instanceof CompareEditor)

-				return ((CompareEditor)data).getActionBars();

-				

-			// PR 1GDVZV7: ITPVCM:WIN98 - CTRL + C does not work in Java source compare

-			if (data instanceof IViewPart)

-				return ((IViewPart)data).getViewSite().getActionBars();

-			// end PR 1GDVZV7

-			

-			c= c.getParent();

-		}

-		return null;

-	}

-

-	public static void setEnableComposite(Composite composite, boolean enable) {

-		Control[] children= composite.getChildren();

-		for (int i= 0; i < children.length; i++)

-			children[i].setEnabled(enable);

-	}

-

-	public static boolean getBoolean(CompareConfiguration cc, String key, boolean dflt) {

-		if (cc != null) {

-			Object value= cc.getProperty(key);

-			if (value instanceof Boolean)

-				return ((Boolean) value).booleanValue();

-		}

-		return dflt;

-	}

-	

-	/**

-	 * Retrieves the value from a property change event as a boolean.

-	 */

-	public static boolean getValue(PropertyChangeEvent event, boolean dflt) {

-		Object newValue= event.getNewValue();

-		if (newValue instanceof Boolean)

-			return ((Boolean)newValue).booleanValue();

-		return dflt;

-	}

-	

-	public static void firePropertyChange(ListenerList ll, Object source, String property, Object old, Object newValue) {

-		if (ll != null) {

-			PropertyChangeEvent event= null;

-			Object[] listeners= ll.getListeners();

-			for (int i= 0; i < listeners.length; i++) {

-				IPropertyChangeListener l= (IPropertyChangeListener) listeners[i];

-				if (event == null)

-					event= new PropertyChangeEvent(source, property, old, newValue);

-				l.propertyChange(event);

-			}

-		}

-	}

-

-	public static boolean okToUse(Widget widget) {

-		return widget != null && !widget.isDisposed();

-	}

-	

-	public static boolean isMotif() {

-		return false;

-	}

-		

-	/**

-	 * Returns the elements of the given selection. 

-	 * Returns an empty array if the selection is empty or if 

-	 * the given selection is not of type <code>IStructuredSelection</code>.

-	 *

-	 * @param selection the selection

-	 * @return the selected elements

-	 */

-	public static Object[] toArray(ISelection selection) {

-		if (!(selection instanceof IStructuredSelection)) {

-			return new Object[0];

-		}

-		IStructuredSelection ss= (IStructuredSelection) selection;

-		return ss.toArray();

-	}

-

-	/**

-	 * Convenience method: extract all <code>IResources</code> from given selection.

-	 * Never returns null.

-	 */

-	public static IResource[] getResources(ISelection selection) {

-		

-		List tmp= new ArrayList();

-

-		if (selection instanceof IStructuredSelection) {

-		

-			Object[] s= ((IStructuredSelection)selection).toArray();

-				

-			for (int i= 0; i < s.length; i++) {

-				Object o= s[i];

-				if (o instanceof IResource) {

-					tmp.add(o);

-					continue;

-				}

-				if (o instanceof IAdaptable) {

-					IAdaptable a= (IAdaptable) o;

-					Object adapter= a.getAdapter(IResource.class);

-					if (adapter instanceof IResource)

-						tmp.add(adapter);

-					continue;

-				}

-			}

-		}

-		return (IResource[]) tmp.toArray(new IResource[tmp.size()]);

-	}

-

-	public static byte[] readBytes(InputStream in) {

-		ByteArrayOutputStream bos= new ByteArrayOutputStream();

-		try {		

-			while (true) {

-				int c= in.read();

-				if (c == -1)

-					break;

-				bos.write(c);

-			}

-					

-		} catch (IOException ex) {

-			return null;

-		

-		} finally {

-			if (in != null) {

-				try {

-					in.close();

-				} catch (IOException x) {

-				}

-			}

-			try {

-				bos.close();

-			} catch (IOException x) {

-			}

-		}

-		

-		return bos.toByteArray();

-	}

-

-	/**

-	 * Returns null if an error occurred.

-	 */

-	public static String readString(InputStream is) {

-		if (is == null)

-			return null;

-		BufferedReader reader= null;

-		try {

-			StringBuffer buffer= new StringBuffer();

-			char[] part= new char[2048];

-			int read= 0;

-			reader= new BufferedReader(new InputStreamReader(is));

-

-			while ((read= reader.read(part)) != -1)

-				buffer.append(part, 0, read);

-			

-			return buffer.toString();

-			

-		} catch (IOException ex) {

-		} finally {

-			if (reader != null) {

-				try {

-					reader.close();

-				} catch (IOException ex) {

-				}

-			}

-		}

-		return null;

-	}

-	

-	public static String getIconPath(Display display) {

-		return "icons/full/";	//$NON-NLS-1$

-	}

-	

-	/**

-	 * Initialize the given Action from a ResourceBundle.

-	 */

-	public static void initAction(IAction a, ResourceBundle bundle, String prefix) {

-		

-		String labelKey= "label"; //$NON-NLS-1$

-		String tooltipKey= "tooltip"; //$NON-NLS-1$

-		String imageKey= "image"; //$NON-NLS-1$

-		String descriptionKey= "description"; //$NON-NLS-1$

-		

-		if (prefix != null && prefix.length() > 0) {

-			labelKey= prefix + labelKey;

-			tooltipKey= prefix + tooltipKey;

-			imageKey= prefix + imageKey;

-			descriptionKey= prefix + descriptionKey;

-		}

-		

-		a.setText(getString(bundle, labelKey, labelKey));

-		a.setToolTipText(getString(bundle, tooltipKey, null));

-		a.setDescription(getString(bundle, descriptionKey, null));

-		

-		String relPath= getString(bundle, imageKey, null);

-		if (relPath != null && relPath.trim().length() > 0) {

-			

-			String cPath;

-			String dPath;

-			String ePath;

-			

-			if (relPath.indexOf("/") >= 0) { //$NON-NLS-1$

-				String path= relPath.substring(1);

-				cPath= 'c' + path;

-				dPath= 'd' + path;

-				ePath= 'e' + path;

-			} else {

-				cPath= "clcl16/" + relPath; //$NON-NLS-1$

-				dPath= "dlcl16/" + relPath; //$NON-NLS-1$

-				ePath= "elcl16/" + relPath; //$NON-NLS-1$

-			}

-			

-			ImageDescriptor id= CompareUIPlugin.getImageDescriptor(dPath);	// we set the disabled image first (see PR 1GDDE87)

-			if (id != null)

-				a.setDisabledImageDescriptor(id);

-			id= CompareUIPlugin.getImageDescriptor(cPath);

-			if (id != null)

-				a.setHoverImageDescriptor(id);

-			id= CompareUIPlugin.getImageDescriptor(ePath);

-			if (id != null)

-				a.setImageDescriptor(id);

-		}

-	}

-	

-	public static void initToggleAction(IAction a, ResourceBundle bundle, String prefix, boolean checked) {

-

-		String tooltip= null;

-		if (checked)

-			tooltip= getString(bundle, prefix + "tooltip.checked", null);	//$NON-NLS-1$

-		else

-			tooltip= getString(bundle, prefix + "tooltip.unchecked", null);	//$NON-NLS-1$

-		if (tooltip == null)

-			tooltip= getString(bundle, prefix + "tooltip", null);	//$NON-NLS-1$

-		

-		if (tooltip != null)

-			a.setToolTipText(tooltip);

-			

-		String description= null;

-		if (checked)

-			description= getString(bundle, prefix + "description.checked", null);	//$NON-NLS-1$

-		else

-			description= getString(bundle, prefix + "description.unchecked", null);	//$NON-NLS-1$

-		if (description == null)

-			description= getString(bundle, prefix + "description", null);	//$NON-NLS-1$

-		

-		if (description != null)

-			a.setDescription(description);

-			

-	}

-

-	public static String getString(ResourceBundle bundle, String key, String dfltValue) {

-		

-		if (bundle != null) {

-			try {

-				return bundle.getString(key);

-			} catch (MissingResourceException x) {

-			}

-		}

-		return dfltValue;

-	}

-	

-	public static String getFormattedString(ResourceBundle bundle, String key, String arg) {

-		

-		if (bundle != null) {

-			try {

-				return MessageFormat.format(bundle.getString(key), new String[] { arg });

-			} catch (MissingResourceException x) {

-			}

-		}

-		return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-	}

-	

-	public static String getString(String key) {

-		try {

-			return CompareUIPlugin.getResourceBundle().getString(key);

-		} catch (MissingResourceException e) {

-			return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-		}

-	}

-	

-	public static String getFormattedString(String key, String arg) {

-		try{

-			return MessageFormat.format(CompareUIPlugin.getResourceBundle().getString(key), new String[] { arg });

-		} catch (MissingResourceException e) {

-			return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-		}	

-	}

-

-	public static String getString(ResourceBundle bundle, String key) {

-		return getString(bundle, key, key);

-	}

-	

-	public static int getInteger(ResourceBundle bundle, String key, int dfltValue) {

-		

-		if (bundle != null) {

-			try {

-				String s= bundle.getString(key);

-				if (s != null)

-					return Integer.parseInt(s);

-			} catch (NumberFormatException x) {

-			} catch (MissingResourceException x) {

-			}

-		}

-		return dfltValue;

-	}

-

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java
deleted file mode 100644
index e2fe7d0..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal;

-

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IConfigurationElement;

-import org.eclipse.compare.*;

-

-import org.eclipse.jface.viewers.Viewer;

-

-/**

- * Creates <code>Viewer</code>s from an <code>IConfigurationElement</code>.

- */

-public class ViewerDescriptor implements IViewerDescriptor {

-

-	private final static String CLASS_ATTRIBUTE= "class"; //$NON-NLS-1$

-	private final static String EXTENSIONS_ATTRIBUTE= "extensions"; //$NON-NLS-1$

-

-	private IConfigurationElement fConfiguration;

-	private IViewerCreator fViewerCreator;

-

-	public ViewerDescriptor(IConfigurationElement config) {

-		fConfiguration= config;

-	}

-

-	public Viewer createViewer(Viewer currentViewer, Composite parent, CompareConfiguration mp) {

-		String className= fConfiguration.getAttribute(CLASS_ATTRIBUTE);

-		if (currentViewer != null && currentViewer.getClass().getName().equals(className)) {

-			return currentViewer;

-		}

-		if (fViewerCreator == null) {

-			try {

-				fViewerCreator= (IViewerCreator) fConfiguration.createExecutableExtension(CLASS_ATTRIBUTE);

-			} catch (CoreException e) {

-			}

-		}

-

-		if (fViewerCreator != null) {

-			Viewer viewer= fViewerCreator.createViewer(parent, mp);

-			//if (viewer != null && currentViewer != null && viewer.getClass() == currentViewer.getClass())

-			//	return currentViewer;

-			return viewer;

-		}

-

-		return null;

-	}

-

-	public String getExtension() {

-		return fConfiguration.getAttribute(EXTENSIONS_ATTRIBUTE);

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java
deleted file mode 100644
index a3874dd..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.eclipse.compare.internal;

-

-

-public class ViewerSwitchingCancelled extends Error {

-

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Attic/LineReader.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Attic/LineReader.java
deleted file mode 100644
index 9802645..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Attic/LineReader.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.util.*;

-

-import org.eclipse.jface.util.Assert;

-

-/* package */ class LineReader {

-

-	private boolean fHaveChar= false;

-	private int fLastChar;

-	private boolean fSawEOF= false;

-	private BufferedReader fReader;

-	

-	/* package */ LineReader(BufferedReader reader) {

-		fReader= reader;

-		Assert.isNotNull(reader);

-	}

-

-    /**

-     * Reads a line of text. A line is considered to be terminated by any one

-     * of a line feed ('\n'), a carriage return ('\r'), or a carriage return

-     * followed immediately by a linefeed.

-     * @return A string containing the contents of the line including

-     *	the line-termination characters, or <code>null</code> if the end of the

-     *	stream has been reached

-     * @exception IOException If an I/O error occurs

-     */

-	/* package */ String readLine() throws IOException {

-		StringBuffer sb= null;

-				

-		while (!fSawEOF) {

-			int c= readChar();

-			if (c == -1) {

-				fSawEOF= true;

-				break;

-			}

-			if (sb == null)

-				sb= new StringBuffer();

-			sb.append((char)c);

-			if (c == '\n')

-				break;

-			if (c == '\r') {

-				c= readChar();

-				if (c == -1) {

-					fSawEOF= true;

-					break;	// EOF

-				}

-				if (c != '\n') {

-					fHaveChar= true;

-					fLastChar= c;

-				} else

-					sb.append((char)c);	

-				break;

-			}

-		}

-		

-		if (sb != null)

-			return sb.toString();

-		return null;

-	}

-	

-	/* package */ void close() {

-		try {

-			fReader.close();

-		} catch (IOException ex) {

-		}

-	}

-	

-	/* package */ List readLines() {

-		try {

-			List lines= new ArrayList();

-			String line;

-			while ((line= readLine()) != null)

-				lines.add(line);

-			return lines;

-		} catch (IOException ex) {

-			//System.out.println("error while reading file: " + fileName + "(" + ex + ")");

-		} finally {

-			close();

-		}

-		return null;

-	}

-	/**

-	 * Returns the number of characters in the given string without

-	 * counting a trailing line separator.

-	 */

-	/* package */ int lineContentLength(String line) {

-		if (line == null)

-			return 0;

-		int length= line.length();

-		for (int i= length-1; i >= 0; i--) {

-			char c= line.charAt(i);

-			if (c =='\n' || c == '\r')

-				length--;

-			else

-				break;

-		}

-		return length;

-	}

-	

-	//---- private

-	

-	private int readChar() throws IOException {

-		if (fHaveChar) {

-			fHaveChar= false;

-			return fLastChar;

-		}

-		return fReader.read();

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java
deleted file mode 100644
index cc4a735..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.lang.reflect.InvocationTargetException;

-import java.text.MessageFormat;

-import java.util.Arrays;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

-import org.eclipse.swt.widgets.Button;

-

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.util.Assert;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.window.Window;

-import org.eclipse.jface.wizard.*;

-import org.eclipse.jface.action.IAction;

-

-import org.eclipse.ui.IEditorPart;

-import org.eclipse.ui.internal.*;

-import org.eclipse.ui.IActionDelegate;

-import org.eclipse.ui.actions.GlobalBuildAction;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.internal.*;

-

-

-public class CompareWithPatchAction implements IActionDelegate {

-

-	static class PatchWizardDialog extends WizardDialog {

-	

-		PatchWizardDialog(Shell parent, IWizard wizard) {

-			super(parent, wizard);

-			

-			setShellStyle(getShellStyle() | SWT.RESIZE);

-			setMinimumPageSize(700, 500);

-		}

-	}

-	

-	private ISelection fSelection;

-	private boolean fSavedFiles;

-	private boolean fAutobuildState;

-	

-

-	public void selectionChanged(IAction action, ISelection selection) {

-		fSelection= selection;

-		action.setEnabled(fSelection != null && !fSelection.isEmpty());

-	}

-	

-	public void run(IAction action) {

-		PatchWizard wizard= new PatchWizard(fSelection);

-		

-		if (areAllEditorsSaved()) {

-			//RefactoringStatus activationStatus= refactoring.checkActivation(new NullProgressMonitor());

-			//if (! activationStatus.hasFatalError()){

-			//	wizard.setActivationStatus(activationStatus);

-				PatchWizardDialog dialog= new PatchWizardDialog(CompareUIPlugin.getShell(), wizard);

-				if (dialog.open() == Dialog.CANCEL)

-					triggerBuild();

-					

-			//} else{

-				//RefactoringErrorDialog.open(dialogTitle, activationStatus);

-			//}

-		}

-	}

-

-	private boolean areAllEditorsSaved(){

-		if (CompareUIPlugin.getDirtyEditors().length == 0)

-			return true;

-		if (! saveAllDirtyEditors())

-			return false;

-		Shell shell= CompareUIPlugin.getShell();

-		try {

-			// Save isn't cancelable.

-			IWorkspace workspace= ResourcesPlugin.getWorkspace();

-			IWorkspaceDescription description= workspace.getDescription();

-			boolean autoBuild= description.isAutoBuilding();

-			description.setAutoBuilding(false);

-			workspace.setDescription(description);

-			try {

-				new ProgressMonitorDialog(shell).run(false, false, createRunnable());

-				fSavedFiles= true;

-			} finally {

-				description.setAutoBuilding(autoBuild);

-				workspace.setDescription(description);

-			}

-			return true;

-		} catch (InvocationTargetException e) {

-			ExceptionHandler.handle(e, shell, PatchMessages.getString("PatchAction.ExceptionTitle"), PatchMessages.getString("Exception"));  //$NON-NLS-1$ //$NON-NLS-2$

-			return false;

-		} catch (CoreException e) {

-			ExceptionHandler.handle(e, shell, PatchMessages.getString("PatchAction.ExceptionTitle"), PatchMessages.getString("Exception"));  //$NON-NLS-1$ //$NON-NLS-2$

-			return false;			

-		} catch (InterruptedException e) {

-			Assert.isTrue(false); // Can't happen. Operation isn't cancelable.

-			return false;

-		}

-	}

-

-	private IRunnableWithProgress createRunnable() {

-		return new IRunnableWithProgress() {

-			public void run(IProgressMonitor pm) {

-				IEditorPart[] editorsToSave= CompareUIPlugin.getDirtyEditors();

-				pm.beginTask(PatchMessages.getString("PatchAction.SavingDirtyEditorsTask"), editorsToSave.length); //$NON-NLS-1$

-				for (int i= 0; i < editorsToSave.length; i++) {

-					editorsToSave[i].doSave(new SubProgressMonitor(pm, 1));

-					pm.worked(1);

-				}

-				pm.done();

-			}

-		};

-	}

-

-	private boolean saveAllDirtyEditors() {

-		if (ComparePreferencePage.getSaveAllEditors()) //must save everything

-			return true;

-		ListDialog dialog= new ListDialog(CompareUIPlugin.getShell()) {

-			protected Control createDialogArea(Composite parent) {

-				Composite result= (Composite) super.createDialogArea(parent);

-				final Button check= new Button(result, SWT.CHECK);

-				check.setText(PatchMessages.getString("PatchAction.AlwaysSaveQuestion")); //$NON-NLS-1$

-				check.setSelection(ComparePreferencePage.getSaveAllEditors());

-				check.addSelectionListener(

-					new SelectionAdapter() {

-						public void widgetSelected(SelectionEvent e) {

-							ComparePreferencePage.setSaveAllEditors(check.getSelection());

-						}

-					}

-				);

-				return result;

-			}

-		};

-		dialog.setTitle(PatchMessages.getString("PatchAction.SaveAllQuestion")); //$NON-NLS-1$

-		dialog.setAddCancelButton(true);

-		dialog.setLabelProvider(createDialogLabelProvider());

-		dialog.setMessage(PatchMessages.getString("PatchAction.SaveAllDescription")); //$NON-NLS-1$

-		dialog.setContentProvider(new ListContentProvider());

-		dialog.setInput(Arrays.asList(CompareUIPlugin.getDirtyEditors()));

-		return dialog.open() == Dialog.OK;

-	}

-

-	private ILabelProvider createDialogLabelProvider() {

-		return new LabelProvider() {

-			public Image getImage(Object element) {

-				return ((IEditorPart) element).getTitleImage();

-			}

-			public String getText(Object element) {

-				return ((IEditorPart) element).getTitle();

-			}

-		};

-	}

-	

-	private void triggerBuild() {

-		if (fSavedFiles && ResourcesPlugin.getWorkspace().getDescription().isAutoBuilding()) {

-			new GlobalBuildAction(CompareUIPlugin.getActiveWorkbench(), CompareUIPlugin.getShell(), IncrementalProjectBuilder.INCREMENTAL_BUILD).run();

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java
deleted file mode 100644
index 5239340..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.util.*;

-

-import org.eclipse.core.runtime.IPath;

-

-import org.eclipse.compare.structuremergeviewer.Differencer;

-

-

-/* package */ class Diff {

-		

-	IPath fOldPath, fNewPath;

-	long fOldDate, fNewDate;	// if 0: no file

-	List fHunks= new ArrayList();

-	boolean fMatches= false;

-	private boolean fIsEnabled2= true;

-	String fRejected;

-

-	

- 	/* package */ Diff(IPath oldPath, long oldDate, IPath newPath, long newDate) {

-		fOldPath= oldPath;

-		fOldDate= oldPath == null ? 0 : oldDate;

-		fNewPath= newPath;

-		fNewDate= newPath == null ? 0 : newDate;	

-	}

-	

-	boolean isEnabled() {

-		return fIsEnabled2;

-	}

-	

-	void setEnabled(boolean b) {

-		fIsEnabled2= b;

-	}

-	

-	void reverse() {

-		IPath tp= fOldPath;

-		fOldPath= fNewPath;

-		fNewPath= tp;

-		

-		long t= fOldDate;

-		fOldDate= fNewDate;

-		fNewDate= t;

-		

-		Iterator iter= fHunks.iterator();

-		while (iter.hasNext()) {

-			Hunk hunk= (Hunk) iter.next();

-			hunk.reverse();

-		}

-	}

-	

-	Hunk[] getHunks() {

-		return (Hunk[]) fHunks.toArray((Hunk[]) new Hunk[fHunks.size()]);

-	}

-

-	IPath getPath() {

-		if (fOldPath != null)

-			return fOldPath;

-		return fNewPath;

-	}

-	

-	void finish() {

-		if (fHunks.size() == 1) {

-			Hunk h= (Hunk) fHunks.get(0);

-			if (h.fNewLength == 0) {

-				fNewDate= 0;

-				fNewPath= fOldPath;

-			}

-		}

-	}

-	

-	/* package */ void add(Hunk hunk) {

-		fHunks.add(hunk);

-	}

-	

-	/* package */ int getType() {

-		if (fOldDate == 0)

-			return Differencer.ADDITION;

-		if (fNewDate == 0)

-			return Differencer.DELETION;

-		return Differencer.CHANGE;

-	}

-	

-	/* package */ String getDescription(int strip) {

-		IPath path= fOldPath;

-		if (fOldDate == 0)

-			path= fNewPath;

-		if (strip > 0 && strip < path.segmentCount())

-			path= path.removeFirstSegments(strip);

-		return path.toOSString();

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java
deleted file mode 100644
index e49d5ad..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.util.List;

-

-import org.eclipse.jface.util.Assert;

-

-

-/**

- * A Hunk describes a range of changed lines and some context lines.

- */

-/* package */ class Hunk {

-	

-	Diff fParent;

-	int fOldStart, fOldLength;

-	int fNewStart, fNewLength;

-	String[] fLines;

-	boolean fMatches= false;

-	private boolean fIsEnabled2= true;

-	

-	

-	/* package */ Hunk(Diff parent, int[] oldRange, int[] newRange, List lines) {

-		

-		fParent= parent;

-		if (fParent != null)

-			fParent.add(this);

-		

-		if (oldRange[0] > 0)

-			fOldStart= oldRange[0]-1;	// line number start at 0!

-		else

-			fOldStart= 0;

-		fOldLength= oldRange[1];

-		if (newRange[0] > 0)

-			fNewStart= newRange[0]-1;	// line number start at 0!

-		else

-			fNewStart= 0;

-		fNewLength= newRange[1];

-		

-		fLines= (String[]) lines.toArray(new String[lines.size()]);

-	}

-	

-	boolean isEnabled() {

-		return fIsEnabled2;

-	}

-	

-	void setEnabled(boolean b) {

-		fIsEnabled2= b;

-	}

-	

-	void reverse() {

-		int t= fOldStart;

-		fOldStart= fNewStart;

-		fNewStart= t;

-		

-		t= fOldLength;

-		fOldLength= fNewLength;

-		fNewLength= t;

-		

-		for (int i= 0; i < fLines.length; i++) {

-			String line= fLines[i];

-			char c= line.charAt(0);

-			switch (c) {

-			case '+':

-				fLines[i]= '-' + line.substring(1);

-				break;

-			case '-':

-				fLines[i]= '+' + line.substring(1);

-				break;

-			default:

-				break;

-			}

-		}

-	}

-

-	/**

-	 * Returns the contents of this hunk.

-	 * Each line starts with a control character. Their meaning is as follows:

-	 * <ul>

-	 * <li>

-	 * '+': add the line

-	 * <li>

-	 * '-': delete the line

-	 * <li>

-	 * ' ': no change, context line

-	 * </ul>

-	 */

-	String getContent() {

-		StringBuffer sb= new StringBuffer();

-		for (int i= 0; i < fLines.length; i++) {

-			String line= fLines[i];

-			sb.append(line.substring(0, Patcher.length(line)));

-			sb.append('\n');

-		}

-		return sb.toString();

-	}

-	

-	/**

-	 * Returns a descriptive String for this hunk.

-	 * It is in the form old_start,old_length -> new_start,new_length.

-	 */

-	String getDescription() {

-		StringBuffer sb= new StringBuffer();

-		sb.append(Integer.toString(fOldStart));

-		sb.append(',');

-		sb.append(Integer.toString(fOldLength));

-		sb.append(" -> "); //$NON-NLS-1$

-		sb.append(Integer.toString(fNewStart));

-		sb.append(',');

-		sb.append(Integer.toString(fNewLength));

-		return sb.toString();

-	}

-	

-	String getRejectedDescription() {

-		StringBuffer sb= new StringBuffer();

-		sb.append("@@ -"); //$NON-NLS-1$

-		sb.append(Integer.toString(fOldStart));

-		sb.append(',');

-		sb.append(Integer.toString(fOldLength));

-		sb.append(" +"); //$NON-NLS-1$

-		sb.append(Integer.toString(fNewStart));

-		sb.append(',');

-		sb.append(Integer.toString(fNewLength));

-		sb.append(" @@"); //$NON-NLS-1$

-		return sb.toString();

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
deleted file mode 100644
index d454055..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
+++ /dev/null
@@ -1,618 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.util.*;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.dnd.*;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.layout.*;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.dialogs.*;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.wizard.*;

-

-import org.eclipse.ui.help.*;

-import org.eclipse.ui.model.*;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.internal.Utilities;

-

-

-/* package */ class InputPatchPage extends WizardPage {

-

-	// constants

-	protected static final int SIZING_TEXT_FIELD_WIDTH= 250;

-	protected static final int COMBO_HISTORY_LENGTH= 5;

-	

-	private final static int SIZING_SELECTION_WIDGET_WIDTH= 400;

-	private final static int SIZING_SELECTION_WIDGET_HEIGHT= 150;

-

-	// dialog store id constants

-	private final static String PAGE_NAME= "PatchWizardPage1"; //$NON-NLS-1$

-	private final static String STORE_PATCH_FILE_ID= PAGE_NAME + ".PATCH_FILE";	//$NON-NLS-1$

-	private final static String STORE_PATCH_FILES_ID= PAGE_NAME + ".PATCH_FILES";	//$NON-NLS-1$

-	private final static String STORE_USE_CLIPBOARD_ID= PAGE_NAME + ".USE_CLIPBOARD";	//$NON-NLS-1$

-

-	// help IDs

-	private final static String PATCH_HELP_CONTEXT_ID= "PatchWizardHelpId";	//$NON-NLS-1$

-	

-	private boolean fShowError= false;

-	

-	// SWT widgets

-	private Button fUseClipboardButton;

-	private Combo fPatchFileNameField;

-	private Button fPatchFileBrowseButton;

-	private Button fUsePatchFileButton;

-	private Group fPatchFileGroup;

-	private CheckboxTreeViewer fPatchTargets;

-	private PatchWizard fPatchWizard;

-

-

-	InputPatchPage(PatchWizard pw) {

-		super("InputPatchPage", PatchMessages.getString("InputPatchPage.title"), null); //$NON-NLS-1$ //$NON-NLS-2$

-		fPatchWizard= pw;

-		setMessage(PatchMessages.getString("InputPatchPage.message")); //$NON-NLS-1$

-	}

-	

-	/**

-	 * Get a path from the supplied text widget.

-	 * @return org.eclipse.core.runtime.IPath

-	 */

-	protected IPath getPathFromText(Text textField) {

-		return (new Path(textField.getText())).makeAbsolute();

-	}

-

-	/* package */ String getPatchName() {

-		if (getUseClipboard())

-			return PatchMessages.getString("InputPatchPage.Clipboard"); //$NON-NLS-1$

-		return getPatchFilePath();

-	}

-	

-	public void createControl(Composite parent) {

-				

-		Composite composite= new Composite(parent, SWT.NULL);

-		composite.setLayout(new GridLayout());

-		composite.setLayoutData(new GridData(/* GridData.VERTICAL_ALIGN_FILL | */ GridData.HORIZONTAL_ALIGN_FILL));

-		setControl(composite);

-		

-		Label l= new Label(composite, SWT.NONE);	// a spacer

-		l.setText(PatchMessages.getString("InputPatchPage.SelectInput")); //$NON-NLS-1$

-		buildInputGroup(composite);

-		

-		new Label(composite, SWT.NONE);	// a spacer		

-		

-		buildPatchFileGroup(composite);		

-			

-		restoreWidgetValues();

-

-		updateWidgetEnablements();

-		//updatePageCompletion();

-		

-		WorkbenchHelp.setHelp(composite, new DialogPageContextComputer(this, PATCH_HELP_CONTEXT_ID));								

-	}

-	

-	/* (non-JavaDoc)

-	 * Method declared in IWizardPage.

-	 */

-	public IWizardPage getNextPage() {

-		if (true) {

-			

-			Patcher patcher= ((PatchWizard) getWizard()).getPatcher();

-			

-			// Create a reader for the input

-			Reader reader= null;

-			if (getUseClipboard()) {

-				Control c= getControl();

-				if (c != null) {

-					Clipboard clipboard= new Clipboard(c.getDisplay());

-					Object o= clipboard.getContents(TextTransfer.getInstance());

-					if (o instanceof String)

-						reader= new StringReader((String)o);

-				}

-			} else {

-				String patchFilePath= getPatchFilePath();

-				if (patchFilePath != null) {

-					try {

-						reader= new FileReader(patchFilePath);

-					} catch (FileNotFoundException ex) {

-						MessageDialog.openError(null,

-							PatchMessages.getString("InputPatchPage.PatchErrorDialog.title"),	//$NON-NLS-1$

-							PatchMessages.getString("InputPatchPage.PatchFileNotFound.message")); //$NON-NLS-1$

-					}

-				}

-			}

-			

-			// parse the input

-			if (reader != null) {

-				try {

-					patcher.parse(new BufferedReader(reader));

-				} catch (IOException ex) {

-					MessageDialog.openError(null,

-						PatchMessages.getString("InputPatchPage.PatchErrorDialog.title_2"), //$NON-NLS-1$ 

-						PatchMessages.getString("InputPatchPage.ParseError.message")); //$NON-NLS-1$

-				}

-				

-				try {

-					reader.close();

-				} catch (IOException x) {

-				}

-			}

-			

-			Diff[] diffs= patcher.getDiffs();

-			if (diffs == null || diffs.length == 0) {

-				MessageDialog.openError(null,

-					PatchMessages.getString("InputPatchPage.PatchErrorDialog.title_4"),	//$NON-NLS-1$

-					PatchMessages.getString("InputPatchPage.NoDiffsFound.message"));  //$NON-NLS-1$

-				return this;

-			}

-			

-			// guess prefix count

-			int guess= guessPrefix(diffs);

-			patcher.setStripPrefixSegments(guess);

-		}

-		return super.getNextPage();

-	}

-		

-	private int guessPrefix(Diff[] diffs) {

-		ArrayList list= new ArrayList();

-		IResource target= fPatchWizard.getTarget();

-		if (target instanceof IFile) {

-			list.add(target.getFullPath());

-		} else if (target instanceof IContainer) {

-			addLeaf(list, (IContainer) target);

-		}

-		

-		// guess prefix count

-		for (int i= 0; i < diffs.length; i++) {

-			IPath p= diffs[i].fOldPath;

-			if (p != null) {

-				int matches= match(p, list);

-				if (matches > 0) {

-					return p.segmentCount() - matches;

-				}

-			}

-		}

-		return 0;

-	}

-	

-	private int match(IPath path, ArrayList list) {

-		Iterator iter= list.iterator();

-		while (iter.hasNext()) {

-			IPath filePath= (IPath) iter.next();

-			int matches= matchTrailingSegments(path, filePath);

-			if (matches > 0)

-				return matches;

-		}

-		return 0;

-	}

-	

-	private int matchTrailingSegments(IPath p1, IPath p2) {

-		int matches= 0;

-		int i1= p1.segmentCount()-1;

-		int i2= p2.segmentCount()-1;

-		for (; i1 >= 0 && i2 >= 0; i1--, i2--) {

-			String s1= p1.segment(i1);

-			String s2= p2.segment(i2);

-			if (!s1.equals(s2))

-				break;

-			matches++;

-		}

-		return matches;

-	}

-	

-	private void addLeaf(ArrayList list, IContainer c) {

-		IResource[] rs= null;

-		try {

-			rs= c.members();

-		} catch(CoreException ex) {

-		}

-		if (rs != null) {

-			for (int i= 0; i < rs.length; i++) {

-				IResource r= rs[i];

-				if (r instanceof IFile)

-					list.add(r.getFullPath());

-				else if (r instanceof IContainer)

-					addLeaf(list, (IContainer) r);

-			}

-		}

-	}

-

-	/* (non-JavaDoc)

-	 * Method declared in IWizardPage.

-	 */

-	public boolean canFlipToNextPage() {

-		if (true) {

-			// we can't call getNextPage to determine if flipping is allowed since computing

-			// the next page is quite expensive (checking preconditions and creating a

-			// change). So we say yes if the page is complete.

-			return isPageComplete();

-		} else {

-			return super.canFlipToNextPage();

-		}

-	}

-	

-	private void setEnablePatchFile(boolean enable) {

-		fPatchFileNameField.setEnabled(enable);

-		fPatchFileBrowseButton.setEnabled(enable);

-	}

-

-	/**

-	 *	Create the group for selecting the patch file

-	 */

-	private void buildPatchFileGroup(Composite parent) {

-		

-		fPatchFileGroup= new Group(parent, SWT.NONE);

-		fPatchFileGroup.setText(PatchMessages.getString("InputPatchPage.SelectPatch.title")); //$NON-NLS-1$

-		GridLayout layout= new GridLayout();

-		layout.numColumns= 3;

-		fPatchFileGroup.setLayout(layout);

-		fPatchFileGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

-		

-		// 1st row

-		fUsePatchFileButton= new Button(fPatchFileGroup, SWT.RADIO);

-		fUsePatchFileButton.setText(PatchMessages.getString("InputPatchPage.FileButton.text")); //$NON-NLS-1$

-		

-		fPatchFileNameField= new Combo(fPatchFileGroup, SWT.BORDER);

-		GridData gd= new GridData(GridData.FILL_HORIZONTAL);

-		//gd.horizontalIndent= 8;

-		gd.widthHint= SIZING_TEXT_FIELD_WIDTH;

-		fPatchFileNameField.setLayoutData(gd);

-		

-		fPatchFileBrowseButton= new Button(fPatchFileGroup, SWT.PUSH);

-		fPatchFileBrowseButton.setText(PatchMessages.getString("InputPatchPage.ChooseFileButton.text")); //$NON-NLS-1$

-		fPatchFileBrowseButton.setLayoutData(new GridData());

-		

-		// 2nd row

-		fUseClipboardButton= new Button(fPatchFileGroup, SWT.RADIO);

-		fUseClipboardButton.setText(PatchMessages.getString("InputPatchPage.UseClipboardButton.text")); //$NON-NLS-1$

-		gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);

-		gd.horizontalSpan= 2;

-		fUseClipboardButton.setLayoutData(gd);

-

-

-		// Add listeners

-		fUsePatchFileButton.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					fShowError= true;

-					setEnablePatchFile(!getUseClipboard());

-					updateWidgetEnablements();

-				}

-			}

-		);

-		fPatchFileNameField.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					setSourceName(fPatchFileNameField.getText());

-					updateWidgetEnablements();

-				}

-			}

-		);

-		fPatchFileNameField.addModifyListener(

-			new ModifyListener() {

-				public void modifyText(ModifyEvent e) {

-					fShowError= true;

-					updateWidgetEnablements();

-				}

-			}

-		);

-		fPatchFileBrowseButton.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					handlePatchFileBrowseButtonPressed();

-					updateWidgetEnablements();

-				}

-			}

-		);

-		

-		//fPatchFileNameField.setFocus();

-	}

-

-	private void buildInputGroup(Composite parent) {

-		

-		PatchWizard pw= (PatchWizard) getWizard();

-		IResource target= pw.getTarget();

-		IWorkspace workspace= target.getWorkspace();

-		IWorkspaceRoot root= workspace.getRoot();

-		

-		Tree tree= new Tree(parent, SWT.BORDER);

-		GridData gd= new GridData(GridData.FILL_HORIZONTAL);

-		gd.heightHint= 200;

-		tree.setLayoutData(gd);

-		

-		fPatchTargets= new CheckboxTreeViewer(tree);

-		fPatchTargets.setLabelProvider(new WorkbenchLabelProvider());

-		fPatchTargets.setContentProvider(new WorkbenchContentProvider());

-		fPatchTargets.setSorter(new WorkbenchViewerSorter());

-		fPatchTargets.setInput(root);

-		if (target != null) {

-			fPatchTargets.expandToLevel(target, 0);

-			fPatchTargets.setSelection(new StructuredSelection(target));

-		}

-		

-		// register listeners

-		fPatchTargets.addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent event) {

-					fPatchWizard.setTarget(PatchWizard.getResource(event.getSelection()));

-					updateWidgetEnablements();

-				}

-			}

-		);

-		//fPatchFileNameField.setFocus();

-	}

-	

-	/**

-	 * Returns a content provider for <code>IResource</code>s that returns 

-	 * only children of the given resource type.

-	 */

-	private ITreeContentProvider getResourceProvider(final int resourceType) {

-		return new WorkbenchContentProvider() {

-			public Object[] getChildren(Object o) {

-				if (o instanceof IContainer) {

-					try {

-						ArrayList results= new ArrayList();

-						IResource[] members= ((IContainer)o).members();

-						for (int i= 0; i < members.length; i++)

-							// filter out the desired resource types

-							if ((members[i].getType() & resourceType) != 0)

-								results.add(members[i]);

-						return results.toArray();

-					} catch (CoreException e) {

-					}

-				}

-				// just return an empty set of children

-				return new Object[0];

-			}

-		};

-	}

-	

-	/**

-	 * Updates the enable state of this page's controls.

-	 */

-	private void updateWidgetEnablements() {

-		

-		String error= null;

-

-		ISelection selection= fPatchTargets.getSelection();

-		boolean anySelected= selection != null && !selection.isEmpty();

-		if (!anySelected)

-			error= PatchMessages.getString("InputPatchPage.NothingSelected.message"); //$NON-NLS-1$

-

-		boolean gotPatch= false;

-		if (getUseClipboard()) {

-			Control c= getControl();

-			if (c != null) {

-				Clipboard clipboard= new Clipboard(c.getDisplay());

-				Object o= clipboard.getContents(TextTransfer.getInstance());

-				if (o instanceof String) {

-					String s= ((String) o).trim();

-					if (s.length() > 0)

-						gotPatch= true;

-					else

-						error= PatchMessages.getString("InputPatchPage.ClipboardIsEmpty.message"); //$NON-NLS-1$

-				} else

-					error= PatchMessages.getString("InputPatchPage.NoTextInClipboard.message");					 //$NON-NLS-1$

-			} else

-				error= PatchMessages.getString("InputPatchPage.CouldNotReadClipboard.message");					 //$NON-NLS-1$

-		} else {

-			String path= fPatchFileNameField.getText();

-			if (path != null && path.length() > 0) {

-				File file= new File(path);

-				gotPatch= file.exists() && file.isFile() && file.length() > 0;

-				if (!gotPatch)

-					error= PatchMessages.getString("InputPatchPage.CannotLocatePatch.message") + path; //$NON-NLS-1$

-			} else {

-				error= PatchMessages.getString("InputPatchPage.NoFileName.message"); //$NON-NLS-1$

-			}

-		}

-		

-		setPageComplete(anySelected && gotPatch);

-		if (fShowError)

-			setErrorMessage(error);

-	}

-	

-	protected void handlePatchFileBrowseButtonPressed() {

-		FileDialog dialog= new FileDialog(getShell(), SWT.NONE);

-		dialog.setText(PatchMessages.getString("InputPatchPage.SelectPatchFileDialog.title"));		 //$NON-NLS-1$

-		dialog.setFilterPath(getPatchFilePath());

-		String res= dialog.open();

-		if (res == null)

-			return;

-		

-		String patchFilePath= dialog.getFileName();

-		IPath filterPath= new Path(dialog.getFilterPath());

-		IPath path= filterPath.append(patchFilePath).makeAbsolute();	

-		patchFilePath= path.toOSString();

-		//fDialogSettings.put(IUIConstants.DIALOGSTORE_LASTEXTJAR, filterPath.toOSString());

-		

-		fPatchFileNameField.setText(patchFilePath);

-		//setSourceName(patchFilePath);

-	}

-	

-	/**

-	 * Sets the source name of the import to be the supplied path.

-	 * Adds the name of the path to the list of items in the

-	 * source combo and selects it.

-	 *

-	 * @param path the path to be added

-	 */

-	protected void setSourceName(String path) {

-	

-		if (path.length() > 0) {

-	

-			String[] currentItems= fPatchFileNameField.getItems();

-			int selectionIndex= -1;

-			for (int i= 0; i < currentItems.length; i++)

-				if (currentItems[i].equals(path))

-					selectionIndex= i;

-			

-			if (selectionIndex < 0) {	// not found in history

-				int oldLength= currentItems.length;

-				String[] newItems= new String[oldLength + 1];

-				System.arraycopy(currentItems, 0, newItems, 0, oldLength);

-				newItems[oldLength]= path;

-				fPatchFileNameField.setItems(newItems);

-				selectionIndex= oldLength;

-			}

-			fPatchFileNameField.select(selectionIndex);

-	

-			//resetSelection();

-		}

-	}

-	

-	/**

-	 *	The Finish button was pressed. Try to do the required work now and answer

-	 *	a boolean indicating success. If false is returned then the wizard will

-	 *	not close.

-	 *

-	 * @return boolean

-	 */

-	public boolean finish() {

-//		if (!ensureSourceIsValid())

-//			return false;

-	

-		saveWidgetValues();

-	

-//		Iterator resourcesEnum = getSelectedResources().iterator();

-//		List fileSystemObjects = new ArrayList();

-//		while (resourcesEnum.hasNext()) {

-//			fileSystemObjects.add(

-//				((FileSystemElement) resourcesEnum.next()).getFileSystemObject());

-//		}

-//	

-//		if (fileSystemObjects.size() > 0)

-//			return importResources(fileSystemObjects);

-//	

-//		MessageDialog

-//			.openInformation(

-//				getContainer().getShell(),

-//				DataTransferMessages.getString("DataTransfer.information"), //$NON-NLS-1$

-//				DataTransferMessages.getString("FileImport.noneSelected")); //$NON-NLS-1$

-//	

-//		return false;

-

-		return true;

-	}

-	

-	/**

-	 *	Use the dialog store to restore widget values to the values that they held

-	 *	last time this wizard was used to completion

-	 */

-	private void restoreWidgetValues() {

-		

-		boolean useClipboard= false;

-		

-		IDialogSettings settings= getDialogSettings();

-		if (settings != null) {

-			

-			useClipboard= settings.getBoolean(STORE_USE_CLIPBOARD_ID);

-

-			// set filenames history

-			String[] sourceNames= settings.getArray(STORE_PATCH_FILES_ID);

-			if (sourceNames != null)

-				for (int i= 0; i < sourceNames.length; i++)

-					if (sourceNames[i] != null && sourceNames[i].length() > 0)

-						fPatchFileNameField.add(sourceNames[i]);

-			

-			// set patch file path

-			String patchFilePath= settings.get(STORE_PATCH_FILES_ID);

-			if (patchFilePath != null)

-				setSourceName(patchFilePath);

-		}

-		

-		// set 'Use Clipboard' radio buttons

-		setUseClipboard(useClipboard);

-	}

-	

-	/**

-	 * 	Since Finish was pressed, write widget values to the dialog store so that they

-	 *	will persist into the next invocation of this wizard page

-	 */

-	void saveWidgetValues() {

-		IDialogSettings settings= getDialogSettings();

-		if (settings != null) {

-			

-			settings.put(STORE_USE_CLIPBOARD_ID, getUseClipboard());

-			settings.put(STORE_PATCH_FILES_ID, getPatchFilePath());

-			

-			// update source names history

-			String[] sourceNames= settings.getArray(STORE_PATCH_FILES_ID);

-			if (sourceNames == null)

-				sourceNames= new String[0];

-	

-			sourceNames= addToHistory(sourceNames, getPatchFilePath());

-			settings.put(STORE_PATCH_FILES_ID, sourceNames);

-		}

-	}

-	

-	// static helpers

-		

-	private void setUseClipboard(boolean useClipboard) {

-		if (useClipboard)

-			fUseClipboardButton.setSelection(true);

-		else

-			fUsePatchFileButton.setSelection(true);

-		setEnablePatchFile(!useClipboard);

-	}

-	

-	private boolean getUseClipboard() {

-		if (fUseClipboardButton != null)

-			return fUseClipboardButton.getSelection();

-		return false;

-	}

-

-	private String getPatchFilePath() {

-		if (fPatchFileNameField != null)

-			return fPatchFileNameField.getText();

-		return ""; //$NON-NLS-1$

-	} 

-

-	/**

-	 * Creates a new label with a bold font.

-	 *

-	 * @param parent the parent control

-	 * @param text the label text

-	 * @return the new label control

-	 */

-	private static Label buildPlainLabel(Composite parent, String text) {

-		Label label= new Label(parent, SWT.NONE);

-		label.setText(text);

-		GridData data= new GridData();

-		data.verticalAlignment= GridData.FILL;

-		data.horizontalAlignment= GridData.FILL;

-		label.setLayoutData(data);

-		return label;

-	}

-

-	/**

-	 * Adds an entry to a history, while taking care of duplicate history items

-	 * and excessively long histories. The assumption is made that all histories

-	 * should be of length <code>COMBO_HISTORY_LENGTH</code>.

-	 *

-	 * @param history the current history

-	 * @param newEntry the entry to add to the history

-	 */

-	protected static String[] addToHistory(String[] history, String newEntry) {

-		java.util.ArrayList l= new java.util.ArrayList(java.util.Arrays.asList(history));

-

-		l.remove(newEntry);

-		l.add(0,newEntry);

-	

-		// since only one new item was added, we can be over the limit

-		// by at most one item

-		if (l.size() > COMBO_HISTORY_LENGTH)

-			l.remove(COMBO_HISTORY_LENGTH);

-		

-		return (String[]) l.toArray(new String[l.size()]);

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java
deleted file mode 100644
index 9802645..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.util.*;

-

-import org.eclipse.jface.util.Assert;

-

-/* package */ class LineReader {

-

-	private boolean fHaveChar= false;

-	private int fLastChar;

-	private boolean fSawEOF= false;

-	private BufferedReader fReader;

-	

-	/* package */ LineReader(BufferedReader reader) {

-		fReader= reader;

-		Assert.isNotNull(reader);

-	}

-

-    /**

-     * Reads a line of text. A line is considered to be terminated by any one

-     * of a line feed ('\n'), a carriage return ('\r'), or a carriage return

-     * followed immediately by a linefeed.

-     * @return A string containing the contents of the line including

-     *	the line-termination characters, or <code>null</code> if the end of the

-     *	stream has been reached

-     * @exception IOException If an I/O error occurs

-     */

-	/* package */ String readLine() throws IOException {

-		StringBuffer sb= null;

-				

-		while (!fSawEOF) {

-			int c= readChar();

-			if (c == -1) {

-				fSawEOF= true;

-				break;

-			}

-			if (sb == null)

-				sb= new StringBuffer();

-			sb.append((char)c);

-			if (c == '\n')

-				break;

-			if (c == '\r') {

-				c= readChar();

-				if (c == -1) {

-					fSawEOF= true;

-					break;	// EOF

-				}

-				if (c != '\n') {

-					fHaveChar= true;

-					fLastChar= c;

-				} else

-					sb.append((char)c);	

-				break;

-			}

-		}

-		

-		if (sb != null)

-			return sb.toString();

-		return null;

-	}

-	

-	/* package */ void close() {

-		try {

-			fReader.close();

-		} catch (IOException ex) {

-		}

-	}

-	

-	/* package */ List readLines() {

-		try {

-			List lines= new ArrayList();

-			String line;

-			while ((line= readLine()) != null)

-				lines.add(line);

-			return lines;

-		} catch (IOException ex) {

-			//System.out.println("error while reading file: " + fileName + "(" + ex + ")");

-		} finally {

-			close();

-		}

-		return null;

-	}

-	/**

-	 * Returns the number of characters in the given string without

-	 * counting a trailing line separator.

-	 */

-	/* package */ int lineContentLength(String line) {

-		if (line == null)

-			return 0;

-		int length= line.length();

-		for (int i= length-1; i >= 0; i--) {

-			char c= line.charAt(i);

-			if (c =='\n' || c == '\r')

-				length--;

-			else

-				break;

-		}

-		return length;

-	}

-	

-	//---- private

-	

-	private int readChar() throws IOException {

-		if (fHaveChar) {

-			fHaveChar= false;

-			return fLastChar;

-		}

-		return fReader.read();

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
deleted file mode 100644
index d99a4f8..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.io.ByteArrayInputStream;

-import java.text.MessageFormat;

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.Composite;

-

-import org.eclipse.core.runtime.*;

-import org.eclipse.core.resources.*;

-

-import org.eclipse.jface.viewers.*;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.structuremergeviewer.*;

-import org.eclipse.compare.internal.*;

-

-

-/**

- * A PatchCompareInput uses a Patcher to 

- * patch selected workspace resources.

- */

-/* package */ class PatchCompareInput extends CompareEditorInput {

-	

-	static class Rejected extends DiffNode implements IStreamContentAccessor {

-		Diff fDiff;

-		String fName;

-		Rejected(IDiffContainer parent, String name, Diff diff) {

-			super(parent, Differencer.NO_CHANGE);

-			fName= name;

-			fDiff= diff;

-		}

-		public String getName() {

-			return fName + " *"; //$NON-NLS-1$

-		}

-		public String getType() {

-			return "txt"; //$NON-NLS-1$

-		}

-		public Image getImage() {

-			return CompareUI.getImage("file"); //$NON-NLS-1$

-		}

-		public InputStream getContents() {

-			return new ByteArrayInputStream(fDiff.fRejected.getBytes());

-		}

-	}

-		

-	private DiffNode fRoot;

-	private IResource fTarget;

-	private Patcher fPatcher;

-	

-	/**

-	 * Creates an compare editor input for the given selection.

-	 */

-	/* package */ PatchCompareInput(CompareConfiguration config, Patcher patcher, ISelection selection) {

-		super(config);

-		fPatcher= patcher;

-		IResource[] s= Utilities.getResources(selection);

-		if (s.length == 1)

-			fTarget= s[0];	

-	}

-	

-	/**

-	 * Performs a two-way or three-way diff on the current selection.

-	 */

-	public Object prepareInput(IProgressMonitor pm) throws InvocationTargetException {

-						

-		CompareConfiguration cc= (CompareConfiguration) getCompareConfiguration();

-		

-		try {				

-			Diff[] diffs= fPatcher.getDiffs();

-			

-			pm.beginTask(Utilities.getString("ResourceCompare.taskName"), diffs.length); //$NON-NLS-1$

-		

-			fRoot= new DiffNode(0);

-			IContainer rootFolder= null;

-			if (fTarget instanceof IContainer)

-				rootFolder= (IContainer) fTarget;

-				

-			for (int i= 0; i < diffs.length; i++) {

-				Diff diff= diffs[i];

-				if (diff.isEnabled()) {

-					IPath path= fPatcher.getPath(diff);

-					createPath(fRoot, rootFolder, path, diff, false);

-					

-					String rej= diff.fRejected;

-					if (rej != null) {

-						IPath pp= path.removeLastSegments(1);

-						pp= pp.append(path.lastSegment() + ".rej"); //$NON-NLS-1$

-						createPath(fRoot, rootFolder, pp, diff, true);

-					}

-				}

-				pm.worked(1);

-			}

-						

-			fTarget.refreshLocal(IResource.DEPTH_INFINITE, pm);

-			

-			String leftLabel= fTarget.getName();

-			cc.setLeftLabel(leftLabel);

-			cc.setLeftImage(CompareUIPlugin.getImage(fTarget));

-			

-			String rformat= PatchMessages.getString("PatchCompareInput.RightTitle.format");	//$NON-NLS-1$

-			String rightLabel= MessageFormat.format(rformat, new String[] { fPatcher.getName() } );

-			cc.setRightLabel(rightLabel);

-			//cc.setRightImage(CompareUIPlugin.getImage(fRightResource));

-			

-			String format= Utilities.getString("ResourceCompare.twoWay.title"); //$NON-NLS-1$

-			String title= MessageFormat.format(format, new String[] {leftLabel, rightLabel} );

-			setTitle(title);

-

-			return fRoot;

-			

-		} catch (CoreException ex) {

-			throw new InvocationTargetException(ex);

-		} finally {

-			pm.done();

-		}

-	}

-	

-	public void saveChanges(IProgressMonitor pm) throws CoreException {

-		if (fRoot instanceof DiffNode) {

-			try {

-				commit(pm, (DiffNode) fRoot);

-			} finally {	

-				setDirty(false);

-			}

-		}

-	}

-	

-	/*

-	 * Recursively walks the diff tree and commits all changes.

-	 */

-	private static void commit(IProgressMonitor pm, DiffNode node) throws CoreException {

-		

-		ITypedElement left= node.getLeft();

-		if (left instanceof BufferedResourceNode)

-			((BufferedResourceNode) left).commit(pm);

-			

-		ITypedElement right= node.getRight();

-		if (right instanceof BufferedResourceNode)

-			((BufferedResourceNode) right).commit(pm);

-

-		IDiffElement[] children= node.getChildren();

-		if (children != null) {

-			for (int i= 0; i < children.length; i++) {

-				IDiffElement element= children[i];

-				if (element instanceof DiffNode)

-					commit(pm, (DiffNode) element);

-			}

-		}

-	}

-	

-	private void createPath(DiffContainer root, IContainer folder, IPath path, Diff diff, boolean reject) {

-		if (path.segmentCount() > 1) {

-			IFolder f= folder.getFolder(path.uptoSegment(1));

-			IDiffElement child= root.findChild(path.segment(0));

-			if (child == null) {

-				ResourceNode rn= new ResourceNode(f);

-				child= new DiffNode(root, Differencer.CHANGE, null, rn, rn);

-			}

-			if (child instanceof DiffContainer)

-				createPath((DiffContainer)child, f, path.removeFirstSegments(1), diff, reject);

-		} else {

-			// a leaf

-			BufferedResourceNode rn= new BufferedResourceNode(folder.getFile(path));

-			if (reject) {

-				new Rejected(root, path.segment(0), diff);

-			} else {

-				new DiffNode(root, diff.getType(), null, rn, new PatchedResource(rn, diff, path, fPatcher));

-			}					

-		}

-	}

-}

-

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java
deleted file mode 100644
index cd4cb28..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import org.eclipse.jface.dialogs.MessageDialog;

-

-import org.eclipse.compare.internal.ListDialog;

-

-public class PatchErrorDialog {

-	

-	private PatchErrorDialog() {

-		// no instance.

-	}

-	

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java
deleted file mode 100644
index 8dce380..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2002.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.util.MissingResourceException;

-import java.util.ResourceBundle;

-

-public class PatchMessages {

-

-	private static final String RESOURCE_BUNDLE= "org.eclipse.compare.internal.patch.PatchMessages";//$NON-NLS-1$

-

-	private static ResourceBundle fgResourceBundle= ResourceBundle.getBundle(RESOURCE_BUNDLE);

-

-	private PatchMessages() {

-	}

-

-	public static String getString(String key) {

-		try {

-			return fgResourceBundle.getString(key);

-		} catch (MissingResourceException e) {

-			return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$

-		}

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties
deleted file mode 100644
index 2fcc649..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties
+++ /dev/null
@@ -1,74 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2002.

-# All Rights Reserved.

-# =====================================

-

-#

-# 'Compare with Patch' Action

-#

-PatchAction.ExceptionTitle=Saving Resources

-PatchAction.Exception=Unexpected exception. See log for details

-PatchAction.SavingDirtyEditorsTask=Saving dirty editors

-PatchAction.AlwaysSaveQuestion=&Always save all modified resources automatically prior to patching

-PatchAction.SaveAllQuestion=Save all modified resources

-PatchAction.SaveAllDescription=All modified resources must be saved before this operation.\nPress OK to confirm or Cancel otherwise

-

-#

-# PatchWizard

-#

-PatchWizard.title=Resource Patcher

-

-#

-# InputPatchPage

-#

-InputPatchPage.title= Patch Input Specification

-InputPatchPage.message= Define what resource to patch with which patch

-InputPatchPage.Clipboard=Clipboard

-InputPatchPage.SelectInput=Select a single file or folder to patch:

-InputPatchPage.PatchErrorDialog=Patch Error

-InputPatchPage.SelectPatch.title=Select Patch

-InputPatchPage.FileButton.text=File

-InputPatchPage.ChooseFileButton.text=Choose

-InputPatchPage.UseClipboardButton.text=Clipboard

-InputPatchPage.NothingSelected.message=Nothing selected to apply patch to

-InputPatchPage.ClipboardIsEmpty.message=Clipboard is empty

-InputPatchPage.NoTextInClipboard.message=Clipboard does not contain text

-InputPatchPage.CouldNotReadClipboard.message=Couldn\'t retrieve clipboard contents

-InputPatchPage.CannotLocatePatch.message=Can\'t locate patch file: 

-InputPatchPage.NoFileName.message=No file name

-InputPatchPage.SelectPatchFileDialog.title=Select Patch File

-InputPatchPage.PatchFileNotFound.message=Patch file not found.

-InputPatchPage.ParseError.message=Error while parsing patch

-InputPatchPage.NoDiffsFound.message=No diffs found in 

-

-#

-# PreviewPatchPage

-#

-PreviewPatchPage.title= Verify Patch

-PreviewPatchPage.message= The tree shows the contents of the patch.\nA checked item indicates that a patch could be applied succesfully. Uncheck an item if you want to exclude it.

-PreviewPatchPage.Left.title= Original

-PreviewPatchPage.Right.title= Result

-PreviewPatchPage.PatchOptions.title=Patch Options

-PreviewPatchPage.IgnoreSegments.text=Ignore leading path name segments:

-PreviewPatchPage.ReversePatch.text=Reverse Patch

-PreviewPatchPage.FuzzFactor.text=Maximum fuzz factor:

-PreviewPatchPage.FuzzFactor.tooltip=Allow context to shift this number of lines from the original place

-PreviewPatchPage.IgnoreWhitespace.text=Ignore Whitespace

-PreviewPatchPage.NoName.text=no name

-PreviewPatchPage.FileExists.error=(file already exists)

-PreviewPatchPage.FileDoesNotExist.error=(file doesn\'t exist)

-PreviewPatchPage.NoMatch.error=(no match)

-

-#

-# Patcher

-#

-Patcher.ErrorDialog.title=title

-Patcher.DeleteError.message=Error while deleting resource

-Patcher.UpdateError.message=Error while updating resource

-Patcher.RefreshError.message=Error while refreshing from local

-Patcher.Marker.message=Rejected patch

-

-#

-# PatchCompareInput

-#

-PatchCompareInput.RightTitle.format= Patch: {0}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
deleted file mode 100644
index 466b59a..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.operation.IRunnableWithProgress;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.wizard.Wizard;

-import org.eclipse.jface.dialogs.IDialogSettings;

-import org.eclipse.jface.dialogs.ProgressMonitorDialog;

-

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.runtime.NullProgressMonitor;

-import org.eclipse.core.runtime.IProgressMonitor;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.*;

-import org.eclipse.compare.structuremergeviewer.Differencer;

-

-

-/* package */ class PatchWizard extends Wizard {

-	

-	// dialog store id constants

-	private final static String DIALOG_SETTINGS_KEY= "PatchWizard"; //$NON-NLS-1$

-

-	private boolean fHasNewDialogSettings;

-	

-	private InputPatchPage fPatchWizardPage;

-	private PreviewPatchPage fPreviewPatchPage;

-	

-	private Patcher fPatcher;

-	private IResource fTarget;

-

-		

-	/**

-	 * Creates a wizard for applying a patch file to the workspace.

-	 */

-	/* package */ PatchWizard(ISelection selection) {

-		

-		fTarget= getResource(selection);

-

-		fPatcher= new Patcher();

-		

-		setWindowTitle(PatchMessages.getString("PatchWizard.title")); //$NON-NLS-1$

-		

-		IDialogSettings workbenchSettings= CompareUIPlugin.getDefault().getDialogSettings();

-		IDialogSettings section= workbenchSettings.getSection(DIALOG_SETTINGS_KEY); //$NON-NLS-1$

-		if (section == null)

-			fHasNewDialogSettings= true;

-		else {

-			fHasNewDialogSettings= false;

-			setDialogSettings(section);

-		}	

-	}

-	

-	static IResource getResource(ISelection selection) {

-		IResource[] rs= Utilities.getResources(selection);

-		if (rs != null && rs.length > 0)

-			return rs[0];

-		return null;

-	}

-		

-	Patcher getPatcher() {

-		return fPatcher;

-	}

-	

-	IResource getTarget() {

-		return fTarget;

-	}

-	

-	void setTarget(IResource target) {

-		fTarget= target;

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on IWizard.

-	 */

-	public void addPages() {

-		super.addPages();

-		

-		addPage(fPatchWizardPage= new InputPatchPage(this));

-		addPage(fPreviewPatchPage= new PreviewPatchPage(this));

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared on IWizard.

-	 */

-	public boolean performFinish() {

-		

-		if (false) {

-			CompareConfiguration cc= new CompareConfiguration() {

-				public Image getImage(int kind) {

-					if (kind == Differencer.ADDITION)

-						kind= Differencer.DELETION;

-					else if (kind == Differencer.DELETION)

-						kind= Differencer.ADDITION;

-					return super.getImage(kind);

-				}

-				public Image getImage(Image base, int kind) {

-					if (kind == Differencer.ADDITION)

-						kind= Differencer.DELETION;

-					else if (kind == Differencer.DELETION)

-						kind= Differencer.ADDITION;

-					return super.getImage(base, kind);

-				}

-			};

-			cc.setProperty(CompareEditor.CONFIRM_SAVE_PROPERTY, new Boolean(false));

-	

-			fPatcher.setName(fPatchWizardPage.getPatchName());

-	

-			CompareUI.openCompareEditor(new PatchCompareInput(cc, fPatcher, new StructuredSelection(fTarget)));

-		} else {

-			fPatcher.setName(fPatchWizardPage.getPatchName());

-

-			try {

-				IRunnableWithProgress op= new IRunnableWithProgress() {

-					public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {

-						fPatcher.applyAll(getTarget(), monitor);

-					}

-				};

-				new ProgressMonitorDialog(CompareUIPlugin.getShell()).run(true, true, op);

-			} catch (InvocationTargetException e) {

-				// handle exception

-			} catch (InterruptedException e) {

-				// handle cancelation

-			}

-		}

-		

-		// Save the dialog settings

-		if (fHasNewDialogSettings) {

-			IDialogSettings workbenchSettings= CompareUIPlugin.getDefault().getDialogSettings();

-			IDialogSettings section= workbenchSettings.getSection(DIALOG_SETTINGS_KEY);

-			section= workbenchSettings.addNewSection(DIALOG_SETTINGS_KEY);

-			setDialogSettings(section);

-		}

-		

-		fPatchWizardPage.saveWidgetValues();

-		//fPreviewPatchPage.saveWidgetValues();

-		

-		return true;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java
deleted file mode 100644
index 5236f80..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.*;

-

-

-/* package */ class PatchedResource implements ITypedElement, IStreamContentAccessor {

-	

-	private Diff fDiff;

-	private IStreamContentAccessor fCurrent;

-	private IPath fPath;

-	private byte[] fContent;

-	private Patcher fPatcher;

-	

-	/* package */ PatchedResource(IStreamContentAccessor current, Diff diff, IPath path, Patcher patcher) {

-		fDiff= diff;

-		fCurrent= current;

-		fPath= path;

-		fPatcher= patcher;

-	}

-	

-	public InputStream getContents() throws CoreException {

-		if (fContent == null) {

-			InputStream is= null;

-			

-			try {

-				is= fCurrent.getContents();

-			} catch (CoreException ex) {

-				is= new ByteArrayInputStream(new byte[0]);

-			}

-			if (is != null) {

-				BufferedReader br= new BufferedReader(new InputStreamReader(is));

-				String s= fPatcher.patch(fDiff,br, null);

-				if (s != null)

-					fContent= s.getBytes();

-				try {

-					is.close();

-				} catch (IOException ex) {

-				}

-			}

-		}

-		return new ByteArrayInputStream(fContent);

-	}

-	

-	public Image getImage() {

-		return CompareUI.getImage(getType());

-	}

-	

-	public String getName() {

-		return fPath.toOSString();

-	}

-	

-	public String getType() {

-		String type= fPath.getFileExtension();

-		if (type != null)

-			return type;

-		return ITypedElement.UNKNOWN_TYPE;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
deleted file mode 100644
index d3e6a25..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
+++ /dev/null
@@ -1,984 +0,0 @@
-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.text.*;

-import java.util.*;

-

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.*;

-import org.eclipse.core.resources.*;

-

-import org.eclipse.compare.structuremergeviewer.Differencer;

-import org.eclipse.compare.internal.ExceptionHandler;

-

-

-/**

- * A Patcher 

- * - knows how to parse various patch file formats into some in-memory structure,

- * - holds onto the parsed data and the options to use when applying the patches,

- * - knows how to apply the patches to files and folders.

- */

-public class Patcher {

-	

-	private static final boolean DEBUG= false;

-	

-	private static final String DEV_NULL= "/dev/null"; //$NON-NLS-1$

-	

-	private static final String REJECT_FILE_EXTENSION= ".rej"; //$NON-NLS-1$

-	

-	private static final String MARKER_TYPE= "org.eclipse.compare.rejectedPatchMarker";	//$NON-NLS-1$

-

-	// diff formats

-	private static final int CONTEXT= 0;

-	private static final int ED= 1;

-	private static final int NORMAL= 2;

-	private static final int UNIFIED= 3;

-	

-	// we recognize the following date/time formats

-	private static DateFormat[] DATE_FORMATS= new DateFormat[] {

-		new SimpleDateFormat("EEE MMM dd kk:mm:ss yyyy"), //$NON-NLS-1$

-		new SimpleDateFormat("yyyy/MM/dd kk:mm:ss"), //$NON-NLS-1$

-		new SimpleDateFormat("EEE MMM dd kk:mm:ss yyyy", Locale.US) //$NON-NLS-1$

-	};

-		

-	private String fName;

-	private Diff[] fDiffs;

-	// patch options

-	private int fStripPrefixSegments;

-	private int fFuzz;

-	private boolean fIgnoreWhitespace;

-	private boolean fReverse= false;

-	

-	

-	Patcher() {

-	}

-	

-	//---- options

-	

-	void setName(String name) {

-		fName= name;

-	}

-	

-	String getName() {

-		return fName;

-	}

-	

-	/**

-	 * Returns an array of Diffs after a sucessfull call to <code>parse</code>.

-	 * If <code>parse</code> hasn't been called returns <code>null</code>.

-	 */

-	Diff[] getDiffs() {

-		return fDiffs;

-	}

-	

-	IPath getPath(Diff diff) {

-		IPath path= diff.getPath();

-		if (fStripPrefixSegments > 0 && fStripPrefixSegments < path.segmentCount())

-			path= path.removeFirstSegments(fStripPrefixSegments);

-		return path;

-	}

-

-	/**

-	 * Returns <code>true</code> if new value differs from old.

-	 */

-	boolean setStripPrefixSegments(int strip) {

-		if (strip != fStripPrefixSegments) {

-			fStripPrefixSegments= strip;

-			return true;

-		}

-		return false;

-	}

-	

-	int getStripPrefixSegments() {

-		return fStripPrefixSegments;

-	}

-	

-	/**

-	 * Returns <code>true</code> if new value differs from old.

-	 */

-	boolean setFuzz(int fuzz) {

-		if (fuzz != fFuzz) {

-			fFuzz= fuzz;

-			return true;

-		}

-		return false;

-	}

-	

-	/**

-	 * Returns <code>true</code> if new value differs from old.

-	 */

-	boolean setReversed(boolean reverse) {

-		if (fReverse != reverse) {

-			fReverse= reverse;

-			

-			for (int i= 0; i < fDiffs.length; i++)

-				fDiffs[i].reverse();

-						

-			return true;

-		}

-		return false;

-	}

-		

-	/**

-	 * Returns <code>true</code> if new value differs from old.

-	 */

-	boolean setIgnoreWhitespace(boolean ignoreWhitespace) {

-		if (ignoreWhitespace != fIgnoreWhitespace) {

-			fIgnoreWhitespace= ignoreWhitespace;

-			return true;

-		}

-		return false;

-	}

-		

-	//---- parsing patch files

-		

-	/* package */ void parse(BufferedReader reader) throws IOException {

-		List diffs= new ArrayList();

-		String line= null;

-		boolean reread= false;

-		String diffArgs= null;

-		String fileName= null;

-		

-		LineReader lr= new LineReader(reader);

-		

-		// read leading garbage

-		while (true) {

-			if (!reread)

-				line= lr.readLine();

-			reread= false;

-			if (line == null)

-				break;

-			if (line.length() < 4)

-				continue;	// too short

-								

-			// remember some infos

-			if (line.startsWith("Index: ")) { //$NON-NLS-1$

-				fileName= line.substring(7).trim();

-				continue;

-			}

-			if (line.startsWith("diff")) { //$NON-NLS-1$

-				diffArgs= line.substring(4).trim();

-				continue;

-			}

-

-			if (line.startsWith("--- ")) { //$NON-NLS-1$

-				line= readUnifiedDiff(diffs, lr, line, diffArgs, fileName);

-				diffArgs= fileName= null;

-				reread= true;

-			} else if (line.startsWith("*** ")) { //$NON-NLS-1$

-				line= readContextDiff(diffs, lr, line, diffArgs, fileName);

-				diffArgs= fileName= null;

-				reread= true;

-			}

-		}

-		

-		lr.close();

-		

-		fDiffs= (Diff[]) diffs.toArray((Diff[]) new Diff[diffs.size()]);

-	}

-

-	/**

-	 * Returns the next line that does not belong to this diff

-	 */

-	private String readUnifiedDiff(List diffs, LineReader reader, String line, String args, String fileName) throws IOException {

-								

-		String[] oldArgs= split(line.substring(4));

-

-		// read info about new file

-		line= reader.readLine();

-		if (line == null || !line.startsWith("+++ ")) //$NON-NLS-1$

-			return line;

-			

-		String[] newArgs= split(line.substring(4));

-	

-		Diff diff= new Diff(extractPath(oldArgs, 0, fileName), extractDate(oldArgs, 1),

-				   			extractPath(newArgs, 0, fileName), extractDate(newArgs, 1));

-		diffs.add(diff);

-				   

-		int[] oldRange= new int[2];

-		int[] newRange= new int[2];

-		List lines= new ArrayList();

-

-		try {

-			// read lines of hunk

-			while (true) {

-				

-				line= reader.readLine();

-				if (line == null)

-					return null;

-					

-				if (reader.lineContentLength(line) == 0) {

-					lines.add(' ' + line);

-					continue;

-				}

-				

-				char c= line.charAt(0);

-				switch (c) {

-				case '@':

-					if (line.startsWith("@@ ")) { //$NON-NLS-1$

-						// flush old hunk

-						if (lines.size() > 0) {

-							new Hunk(diff, oldRange, newRange, lines);

-							lines.clear();

-						}

-								

-						// format: @@ -oldStart,oldLength +newStart,newLength @@

-						extractPair(line, '-', oldRange);

-						extractPair(line, '+', newRange);

-						continue;

-					}

-					break;

-				case ' ':

-				case '+':

-				case '-':

-					lines.add(line);

-					continue;

-				case '\\':

-					if (line.startsWith("No newline at end of file", 2)) { //$NON-NLS-1$

-						int lastIndex= lines.size();

-						if (lastIndex > 0) {

-							line= (String) lines.get(lastIndex-1);

-							int end= line.length()-1;

-							char lc= line.charAt(end);

-							if (lc == '\n') {

-								end--;

-								if (end > 0 && line.charAt(end-1) == '\r')

-									end--;

-							} else if (lc == '\r') {

-								end--;

-							}

-							line= line.substring(0, end);

-							lines.set(lastIndex-1, line);

-						}

-						continue;

-					}

-					break;

-				default:

-					if (DEBUG) {

-						int a1= c, a2= 0;

-						if (line.length() > 1)

-							a2= line.charAt(1);

-						System.out.println("char: " + a1 + " " + a2); //$NON-NLS-1$ //$NON-NLS-2$

-					}

-					break;

-				}

-				return line;

-			}

-		} finally {

-			if (lines.size() > 0)

-				new Hunk(diff, oldRange, newRange, lines);

-			diff.finish();

-		}

-	}

-	

-	/**

-	 * Returns the next line that does not belong to this diff

-	 */

-	private String readContextDiff(List diffs, LineReader reader, String line, String args, String fileName) throws IOException {

-		

-		String[] oldArgs= split(line.substring(4));

-		

-		// read info about new file

-		line= reader.readLine();

-		if (line == null || !line.startsWith("--- ")) //$NON-NLS-1$

-			return line;

-		

-		String[] newArgs= split(line.substring(4));

-						

-		Diff diff= new Diff(extractPath(oldArgs, 0, fileName), extractDate(oldArgs, 1),

-				   			extractPath(newArgs, 0, fileName), extractDate(newArgs, 1));

-		diffs.add(diff);

-				   

-		int[] oldRange= new int[2];

-		int[] newRange= new int[2];

-		List oldLines= new ArrayList();

-		List newLines= new ArrayList();

-		List lines= oldLines;

-		

-		try {

-			// read lines of hunk

-			while (true) {

-				

-				line= reader.readLine();

-				if (line == null)

-					return line;

-				

-				int l= line.length();

-				if (l == 0)

-					continue;

-				if (l > 1) {

-					switch (line.charAt(0)) {

-					case '*':	

-						if (line.startsWith("***************")) {	// new hunk //$NON-NLS-1$

-							// flush old hunk

-							if (oldLines.size() > 0 || newLines.size() > 0) {

-								new Hunk(diff, oldRange, newRange, unifyLines(oldLines, newLines));

-								oldLines.clear();

-								newLines.clear();

-							}

-							continue;

-						}

-						if (line.startsWith("*** ")) {	// old range //$NON-NLS-1$

-							// format: *** oldStart,oldEnd ***

-							extractPair(line, ' ', oldRange);

-							oldRange[1]= oldRange[1]-oldRange[0]+1;

-							lines= oldLines;

-							continue;

-						}

-						break;

-					case ' ':	// context line

-					case '+':	// addition

-					case '!':	// change

-						if (line.charAt(1) == ' ') {

-							lines.add(line);

-							continue;

-						}

-						break;

-					case '-':

-						if (line.charAt(1) == ' ') {	// deletion

-							lines.add(line);

-							continue;

-						}

-						if (line.startsWith("--- ")) {	// new range //$NON-NLS-1$

-							// format: *** newStart,newEnd ***

-							extractPair(line, ' ', newRange);

-							newRange[1]= newRange[1]-newRange[0]+1;

-							lines= newLines;

-							continue;

-						}

-						break;

-					default:

-						break;

-					}

-				}

-				return line;

-			}

-		} finally {

-			// flush last hunk

-			if (oldLines.size() > 0 || newLines.size() > 0)

-				new Hunk(diff, oldRange, newRange, unifyLines(oldLines, newLines));

-			diff.finish();

-		}

-	}

-	

-	/**

-	 * Creates a List of lines in the unified format from

-	 * two Lists of lines in the 'classic' format.

-	 */

-	private List unifyLines(List oldLines, List newLines) {

-		List result= new ArrayList();

-

-		String[] ol= (String[]) oldLines.toArray(new String[oldLines.size()]);

-		String[] nl= (String[]) newLines.toArray(new String[newLines.size()]);

-		

-		int oi= 0, ni= 0;

-		

-		while (true) {

-			

-			char oc= 0;

-			String o= null;

-			if (oi < ol.length) {

-				o= ol[oi];

-				oc= o.charAt(0);

-			}

-			

-			char nc= 0;

-			String n= null;

-			if (ni < nl.length) {

-				n= nl[ni];

-				nc= n.charAt(0);

-			}

-			

-			// EOF

-			if (oc == 0 && nc == 0)

-				break;

-				

-			// deletion in old

-			if (oc == '-') {

-				do {

-					result.add('-' + o.substring(2));

-					oi++;

-					if (oi >= ol.length)

-						break;

-					o= ol[oi];

-				} while (o.charAt(0) == '-');

-				continue;

-			}

-			

-			// addition in new

-			if (nc == '+') {

-				do {

-					result.add('+' + n.substring(2));

-					ni++;

-					if (ni >= nl.length)

-						break;

-					n= nl[ni];

-				} while (n.charAt(0) == '+');

-				continue;

-			}

-			

-			// differing lines on both sides

-			if (oc == '!' && nc == '!') {

-				// remove old

-				do {

-					result.add('-' + o.substring(2));

-					oi++;

-					if (oi >= ol.length)

-						break;

-					o= ol[oi];

-				} while (o.charAt(0) == '!');

-				

-				// add new

-				do {

-					result.add('+' + n.substring(2));

-					ni++;

-					if (ni >= nl.length)

-						break;

-					n= nl[ni];

-				} while (n.charAt(0) == '!');

-				

-				continue;

-			}

-			

-			// context lines

-			if (oc == ' ' && nc == ' ') {

-				do {

-					Assert.isTrue(o.equals(n), "non matching context lines"); //$NON-NLS-1$

-					result.add(' ' + o.substring(2));

-					oi++;

-					ni++;

-					if (oi >= ol.length || ni >= nl.length)

-						break;

-					o= ol[oi];

-					n= nl[ni];

-				} while (o.charAt(0) == ' ' && n.charAt(0) == ' ');

-				continue;

-			}

-			

-			if (oc == ' ') {

-				do {

-					result.add(' ' + o.substring(2));

-					oi++;

-					if (oi >= ol.length)

-						break;

-					o= ol[oi];

-				} while (o.charAt(0) == ' ');

-				continue;

-			}

-

-			if (nc == ' ') {

-				do {

-					result.add(' ' + n.substring(2));

-					ni++;

-					if (ni >= nl.length)

-						break;

-					n= nl[ni];

-				} while (n.charAt(0) == ' ');

-				continue;

-			}

-			

-			Assert.isTrue(false, "unexpected char <" + oc + "> <" + nc + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

-		}

-		

-		return result;

-	}

-	

-	/**

-	 * Breaks the given string into tab separated substrings.

-	 * Leading and trailing whitespace is removed from each token.

-	 */ 

-	private String[] split(String line) {

-		List l= new ArrayList();

-		StringTokenizer st= new StringTokenizer(line, "\t"); //$NON-NLS-1$

-		while (st.hasMoreElements()) {

-			String token= st.nextToken().trim();

-			if (token.length() > 0)

- 				l.add(token);

-		}

-		return (String[]) l.toArray(new String[l.size()]);

-	}

-	

-	/**

-	 * @return the parsed time/date in milliseconds or -1 on error

-	 */

-	private long extractDate(String[] args, int n) {

-		if (n < args.length) {

-			String line= args[n];

-			for (int i= 0; i < DATE_FORMATS.length; i++) {

-				DATE_FORMATS[i].setLenient(true);

-				try {

-					Date date= DATE_FORMATS[i].parse(line);

-					return date.getTime();		

-				} catch (ParseException ex) {

-				}

-			}

-			// System.err.println("can't parse date: <" + line + ">");

-		}

-		return -1;

-	}

-	

-	/**

-	 * Returns null if file name is "/dev/null".

-	 */

-	private IPath extractPath(String[] args, int n, String path2) {

-		if (n < args.length) {

-			String path= args[n];

-			if (DEV_NULL.equals(path))

-				return null;

-			int pos= path.lastIndexOf(':');

-			if (pos >= 0)

-				path= path.substring(0, pos);

-			if (path2 != null && !path2.equals(path)) {

-				if (DEBUG) System.out.println("path mismatch: " + path2); //$NON-NLS-1$

-				path= path2;

-			}

-			return new Path(path);

-		}

-		return null;

-	}

-	

-	/**

-	 * Tries to extract two integers separated by a comma.

-	 * The parsing of the line starts at the position after

-	 * the first occurrence of the given character start an ends

-	 * at the first blank (or the end of the line).

-	 * If only a single number is found this is assumed to be the length of the range.

-	 * In this case the start of the range is set to 1.

-	 * If an error occurs the range -1,-1 is returned.

-	 */

-	private void extractPair(String line, char start, int[] pair) {

-		pair[0]= pair[1]= -1;

-		int startPos= line.indexOf(start);

-		if (startPos < 0) {

-			if (DEBUG) System.out.println("parsing error in extractPair: couldn't find \'" + start + "\'"); //$NON-NLS-1$ //$NON-NLS-2$

-			return;

-		}

-		line= line.substring(startPos+1);

-		int endPos= line.indexOf(' ');

-		if (endPos < 0) {

-			if (DEBUG) System.out.println("parsing error in extractPair: couldn't find end blank"); //$NON-NLS-1$

-			return;

-		}

-		line= line.substring(0, endPos);

-		int comma= line.indexOf(',');

-		if (comma >= 0) {

-			pair[0]= Integer.parseInt(line.substring(0, comma));

-			pair[1]= Integer.parseInt(line.substring(comma+1));

-		} else {

-			pair[0]= 1;

-			pair[1]= Integer.parseInt(line.substring(comma+1));

-		}

-	}

-	

-	//---- applying a patch file

-	

-	/**

-	 * Tries to patch the given lines with the specified Diff.

-	 * Any hunk that couldn't be applied is returned in the list failedHunks.

-	 */

-	/* package */ void patch(Diff diff, List lines, List failedHunks) {

-		

-		int shift= 0;

-		Iterator iter= diff.fHunks.iterator();

-		while (iter.hasNext()) {

-			Hunk hunk= (Hunk) iter.next();

-			hunk.fMatches= false;

-			shift= patch(hunk, lines, shift, failedHunks);

-		}

-	}

-

-	/**

-	 * Tries to patch the contents of the given reader with the specified Diff.

-	 * Any hunk that couldn't be applied is returned in the list failedHunks.

-	 */

-	/* package */ String patch(Diff diff, BufferedReader reader, List failedHunks) {

-		

-		List lines= new LineReader(reader).readLines();

-		if (lines == null)

-			lines= new ArrayList();

-

-		patch(diff, lines, failedHunks);

-		

-		return createString(lines);

-	}

-

-	/**

-	 * Tries to apply the specified hunk to the given lines.

-	 * If the hunk cannot be applied at the original position

-	 * the methods tries Fuzz lines before and after.

-	 * If this fails the Hunk is added to the given list of failed hunks.

-	 */

-	private int patch(Hunk hunk, List lines, int shift, List failedHunks) {

-		if (tryPatch(hunk, lines, shift)) {

-			shift+= doPatch(hunk, lines, shift);

-		} else {

-			boolean found= false;

-			int oldShift= shift;

-			

-			for (int i= shift-1; i > shift-fFuzz; i--) {

-				if (tryPatch(hunk, lines, i)) {

-					shift= i;

-					found= true;

-					break;

-				}

-			}

-			

-			if (! found) {

-				for (int i= shift+1; i < shift+fFuzz; i++) {

-					if (tryPatch(hunk, lines, i)) {

-						shift= i;

-						found= true;

-						break;

-					}

-				}

-			}

-			

-			if (found) {

-				if (DEBUG) System.out.println("patched hunk at offset: " + (shift-oldShift)); //$NON-NLS-1$

-				shift+= doPatch(hunk, lines, shift);

-			} else {

-				if (failedHunks != null) {

-					if (DEBUG) System.out.println("failed hunk"); //$NON-NLS-1$

-					failedHunks.add(hunk);

-				}

-			}

-			oldShift= oldShift;	// prevent compiler warning about unused local variable

-		}

-		return shift;

-	}

-	

-	/**

-	 * Tries to apply the given hunk on the specified lines.

-	 * The parameter shift is added to the line numbers given

-	 * in the hunk.

-	 */

-	private boolean tryPatch(Hunk hunk, List lines, int shift) {

-		int pos= hunk.fOldStart + shift;

-		int contextMatches= 0;

-		int deleteMatches= 0;

-		for (int i= 0; i < hunk.fLines.length; i++) {

-			String s= hunk.fLines[i];

-			Assert.isTrue(s.length() > 0);

-			String line= s.substring(1);

-			char controlChar= s.charAt(0);

-			if (controlChar == ' ') {	// context lines

-				while (true) {

-					if (pos < 0 || pos >= lines.size())

-						return false;

-					if (linesMatch(line, (String) lines.get(pos))) {

-						contextMatches++;

-						pos++;

-						break;

-					}

-					if (contextMatches <= 0)

-						return false;

-					pos++;

-				}

-			} else if (controlChar == '-') {

-				// deleted lines

-				while (true) {

-					if (pos < 0 || pos >= lines.size())

-						return false;

-					if (linesMatch(line, (String) lines.get(pos))) {

-						deleteMatches++;

-						pos++;

-						break;

-					}

-					if (deleteMatches <= 0)

-						return false;

-					pos++;

-				}

-			} else if (controlChar == '+') {

-				// added lines

-				// we don't have to do anything for a 'try'

-			} else

-				Assert.isTrue(false, "tryPatch: unknown control charcter: " + controlChar); //$NON-NLS-1$

-		}

-		return true;

-	}

-	

-	private int doPatch(Hunk hunk, List lines, int shift) {

-		int pos= hunk.fOldStart + shift;

-		for (int i= 0; i < hunk.fLines.length; i++) {

-			String s= hunk.fLines[i];

-			Assert.isTrue(s.length() > 0);

-			String line= s.substring(1);

-			char controlChar= s.charAt(0);

-			if (controlChar == ' ') {	// context lines

-				while (true) {

-					Assert.isTrue(pos < lines.size(), "doPatch: inconsistency in context"); //$NON-NLS-1$

-					if (linesMatch(line, (String) lines.get(pos))) {

-						pos++;

-						break;

-					}

-					pos++;

-				}

-			} else if (controlChar == '-') {

-				// deleted lines				

-				while (true) {

-					Assert.isTrue(pos < lines.size(), "doPatch: inconsistency in deleted lines"); //$NON-NLS-1$

-					if (linesMatch(line, (String) lines.get(pos))) {

-						break;

-					}

-					pos++;

-				}

-				lines.remove(pos);

-			} else if (controlChar == '+') {

-				// added lines

-				lines.add(pos,  line);

-				pos++;

-			} else

-				Assert.isTrue(false, "doPatch: unknown control character: " + controlChar); //$NON-NLS-1$

-		}

-		hunk.fMatches= true;

-		return hunk.fNewLength - hunk.fOldLength;

-	}

-

-	public void applyAll(IResource target, IProgressMonitor pm) {

-		

-		final int WORK_UNIT= 10;

-				

-		IFile file= null;	// file to be patched

-		IContainer container= null;

-		if (target instanceof IContainer)

-			container= (IContainer) target;

-		else if (target instanceof IFile) {

-			file= (IFile) target;

-			container= file.getParent();

-		} else {

-			Assert.isTrue(false);

-		}

-		

-		if (pm != null)

-			pm.beginTask("Patching", fDiffs.length*WORK_UNIT);

-		

-		for (int i= 0; i < fDiffs.length; i++) {

-			

-			int workTicks= WORK_UNIT;

-			

-			Diff diff= fDiffs[i];

-			if (diff.isEnabled()) {

-				

-				IPath path= getPath(diff);

-				if (pm != null)

-					pm.subTask(path.toString());

-			

-				if (container != null)

-					file= createPath(container, path);

-				List failed= new ArrayList();

-				List result= null;

-				

-				int type= diff.getType();

-				switch (type) {

-				case Differencer.ADDITION:

-					// patch it and collect rejected hunks

-					result= apply(diff, file, true, failed);

-					store(createString(result), file, new SubProgressMonitor(pm, workTicks));

-					workTicks-= WORK_UNIT;

-					break;

-				case Differencer.DELETION:

-					deleteFile(file, new SubProgressMonitor(pm, workTicks));

-					workTicks-= WORK_UNIT;

-					break;

-				case Differencer.CHANGE:

-					// patch it and collect rejected hunks

-					result= apply(diff, file, false, failed);

-					store(createString(result), file, new SubProgressMonitor(pm, workTicks));

-					workTicks-= WORK_UNIT;

-					break;

-				}

-

-				if (failed.size() > 0) {

-					IPath pp= null;

-					if (path.segmentCount() > 1) {

-						pp= path.removeLastSegments(1);

-						pp= pp.append(path.lastSegment() + REJECT_FILE_EXTENSION);

-					} else

-						pp= new Path(path.lastSegment() + REJECT_FILE_EXTENSION);

-					file= createPath(container, pp);

-					if (file != null) {

-						store(getRejected(failed), file, pm);

-						try {

-							IMarker marker= file.createMarker(MARKER_TYPE);

-							marker.setAttribute(marker.MESSAGE, PatchMessages.getString("Patcher.Marker.message"));	//$NON-NLS-1$

-							marker.setAttribute(marker.PRIORITY, IMarker.PRIORITY_HIGH);

-						} catch (CoreException ex) {

-						}

-					}

-				}

-			}

-			

-			if (pm != null) {

-				if (pm.isCanceled())

-					break;

-				if (workTicks > 0)

-					pm.worked(workTicks);

-			}

-		}

-		

-		/*

-		if (pm != null)

-			pm.subTask("Refreshing");

-		try {

-			target.refreshLocal(IResource.DEPTH_INFINITE, pm);

-		} catch (CoreException ex) {

-			ExceptionHandler.handle(ex,

-				PatchMessages.getString("Patcher.ErrorDialog.title"),	//$NON-NLS-1$

-				PatchMessages.getString("Patcher.RefreshError.message"));	//$NON-NLS-1$

-		}

-		*/

-		

-		// IWorkspace.validateEdit(IFile[], Object context);

-	}

-	

-	/**

-	 * Reads the contents from the given file and returns them as

-	 * a List of lines.

-	 */

-	private List load(IFile file, boolean create) {

-		List lines= null;

-		if (!create && file != null) {

-			// read current contents

-			InputStream is= null;

-			try {

-				is= file.getContents();

-				BufferedReader reader= new BufferedReader(new InputStreamReader(is));

-				lines= new LineReader(reader).readLines();

-			} catch(CoreException ex) {

-			} finally {

-				if (is != null)

-					try {

-						is.close();

-					} catch(IOException ex) {

-					}

-			}

-		}

-		

-		if (lines == null)

-			lines= new ArrayList();

-		return lines;

-	}

-	

-	List apply(Diff diff, IFile file, boolean create, List failedHunks) {

-		

-		List lines= load(file, create);

-		patch(diff, lines, failedHunks);

-		return lines;

-	}

-	

-	/**

-	 * Deletes the given file.

-	 */

-	private void deleteFile(IFile file, IProgressMonitor pm) {

-		try {

-			file.delete(true, true, pm);

-		} catch (CoreException ex) {

-			ExceptionHandler.handle(ex,

-				PatchMessages.getString("Patcher.ErrorDialog.title"),	//$NON-NLS-1$

-				PatchMessages.getString("Patcher.DeleteError.message"));	//$NON-NLS-1$

-		}

-	}

-	

-	/**

-	 * Converts the string into bytes and stores them in the given file.

-	 */

-	private void store(String contents, IFile file, IProgressMonitor pm) {

-		

-		// and save it

-		InputStream is= new ByteArrayInputStream(contents.getBytes());

-		try {

-			if (file.exists()) {

-				file.setContents(is, false, true, pm);

-			} else {

-				file.create(is, false, pm);

-			}

-		} catch (CoreException ex) {

-			ExceptionHandler.handle(ex,

-				PatchMessages.getString("Patcher.ErrorDialog.title"),	//$NON-NLS-1$

-				PatchMessages.getString("Patcher.UpdateError.message"));  //$NON-NLS-1$

-		} finally {

-			if (is != null)

-				try {

-					is.close();

-				} catch(IOException ex) {

-				}

-		}

-	}

-

-	/**

-	 * Concatenates all strings found in the gievn List.

-	 */

-	private String createString(List lines) {

-		StringBuffer sb= new StringBuffer();

-		Iterator iter= lines.iterator();

-		while (iter.hasNext())

-			sb.append((String)iter.next());

-		return sb.toString();

-	}

-

-	String getRejected(List failedHunks) {

-		if (failedHunks.size() <= 0)

-			return null;

-		

-		StringBuffer sb= new StringBuffer();

-		Iterator iter= failedHunks.iterator();

-		while (iter.hasNext()) {

-			Hunk hunk= (Hunk) iter.next();

-			sb.append(hunk.getRejectedDescription());

-			sb.append('\n');

-			sb.append(hunk.getContent());

-		}

-		return sb.toString();

-	}

-	

-	/**

-	 * Ensures that a file with the given path exists in

-	 * the given container. Folder are created as necessary.

-	 */

-	private IFile createPath(IContainer container, IPath path) {

-		if (path.segmentCount() > 1) {

-			IFolder f= container.getFolder(path.uptoSegment(1));

-			return createPath(f, path.removeFirstSegments(1));

-		}

-		// a leaf

-		return container.getFile(path);

-	}

-

-	/**

-	 * Returns the given string with all whitespace characters removed.

-	 * Whitespace is defined by <code>Character.isWhitespace(...)</code>.

-	 */

-	private static String stripWhiteSpace(String s) {

-		StringBuffer sb= new StringBuffer();

-		int l= s.length();

-		for (int i= 0; i < l; i++) {

-			char c= s.charAt(i);

-			if (!Character.isWhitespace(c))

-				sb.append(c);

-		}

-		return sb.toString();

-	}

-	

-	/**

-	 * Compares two strings.

-	 * If fIgnoreWhitespace is true whitespace and line endings are ignored.

-	 */

-	private boolean linesMatch(String line1, String line2) {

-		if (fIgnoreWhitespace)

-			return stripWhiteSpace(line1).equals(stripWhiteSpace(line2));

-		return line1.equals(line2);

-	}

-	

-	/**

-	 * Returns the length (exluding end-of-line characters) of the given string.

-	 */

-	/* package */ static int length(String s) {

-		int l= s.length();

-		if (l > 0 && s.charAt(l-1) == '\n')

-			l--;

-		if (l > 1 && s.charAt(l-2) == '\r')

-			l--;

-		return l;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java
deleted file mode 100644
index 8c2ca82..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java
+++ /dev/null
@@ -1,538 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.internal.patch;

-

-import java.io.*;

-import java.util.*;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.layout.*;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.viewers.Viewer;

-import org.eclipse.jface.wizard.WizardPage;

-import org.eclipse.jface.resource.ImageDescriptor;

-

-import org.eclipse.core.resources.*;

-import org.eclipse.core.runtime.*;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.*;

-import org.eclipse.compare.structuremergeviewer.*;

-

-

-/**

- * Shows the parsed patch file and any mismatches

- * between files, hunks and the currently selected

- * resources.

- */

-/* package */ class PreviewPatchPage extends WizardPage {

-	

-	/**

-	 * Used with CompareInput

-	 */

-	static class HunkInput implements ITypedElement, IStreamContentAccessor {

-		String fContent;

-		String fType;

-		

-		HunkInput(String type, String s) {

-			fType= type;

-			fContent= s;

-		}

-		public Image getImage() {

-			return null;

-		}

-		public String getName() {

-			return PatchMessages.getString("PreviewPatchPage.NoName.text"); //$NON-NLS-1$

-		}

-		public String getType() {

-			return fType;

-		}

-		public InputStream getContents() {

-			return new ByteArrayInputStream(fContent.getBytes());

-		}

-	};

-		

-	private PatchWizard fPatchWizard;

-	

-	private Tree fTree;

-	private Combo fStripPrefixSegments;

-	private CompareViewerSwitchingPane fHunkViewer;

-	private Button fIgnoreWhitespaceButton;

-	private Button fReversePatchButton;

-	private Text fFuzzField;

-	

-	private Image fNullImage;

-	private Image fAddImage;

-	private Image fDelImage;

-	private Image fErrorImage;

-	private Image fErrorAddImage;

-	private Image fErrorDelImage;

-	

-	private CompareConfiguration fCompareConfiguration;

-	

-	

-	/* package */ PreviewPatchPage(PatchWizard pw) {

-		super("PreviewPatchPage",	//$NON-NLS-1$ 

-			PatchMessages.getString("PreviewPatchPage.title"), null); //$NON-NLS-1$

-		

-		setMessage(PatchMessages.getString("PreviewPatchPage.message"));	//$NON-NLS-1$

-		

-		fPatchWizard= pw;

-		//setPageComplete(false);

-		

-		int w= 16;

-		

-		ImageDescriptor addId= CompareUIPlugin.getImageDescriptor("ovr16/add_ov.gif");	//$NON-NLS-1$

-		ImageDescriptor delId= CompareUIPlugin.getImageDescriptor("ovr16/del_ov.gif");	//$NON-NLS-1$

-

-		ImageDescriptor errId= CompareUIPlugin.getImageDescriptor("ovr16/error_ov.gif");	//$NON-NLS-1$

-		Image errIm= errId.createImage();

-		

-		fNullImage= new DiffImage(null, null, w).createImage();

-		fAddImage= new DiffImage(null, addId, w).createImage();

-		fDelImage= new DiffImage(null, delId, w).createImage();

-

-		fErrorImage= new DiffImage(errIm, null, w).createImage();

-		fErrorAddImage= new DiffImage(errIm, addId, w).createImage();

-		fErrorDelImage= new DiffImage(errIm, delId, w).createImage();

-		

-		fCompareConfiguration= new CompareConfiguration();

-		

-		fCompareConfiguration.setLeftEditable(false);

-		fCompareConfiguration.setLeftLabel(PatchMessages.getString("PreviewPatchPage.Left.title")); //$NON-NLS-1$

-		

-		fCompareConfiguration.setRightEditable(false);

-		fCompareConfiguration.setRightLabel(PatchMessages.getString("PreviewPatchPage.Right.title")); //$NON-NLS-1$

-	}

-	

-	/* (non-Javadoc)

-	 * Method declared in WizardPage

-	 */

-	public void setVisible(boolean visible) {

-		if (visible)

-			buildTree();

-		super.setVisible(visible);

-	}

-

-	Image getImage(Diff diff) {

-		if (diff.fMatches) {

-			switch (diff.getType()) {

-			case Differencer.ADDITION:

-				return fAddImage;

-			case Differencer.DELETION:

-				return fDelImage;

-			}

-			return fNullImage;

-		}

-		switch (diff.getType()) {

-		case Differencer.ADDITION:

-			return fErrorAddImage;

-		case Differencer.DELETION:

-			return fErrorDelImage;

-		}

-		return fErrorImage;

-	}

-	

-	Image getImage(Hunk hunk) {

-		if (hunk.fMatches)

-			return fNullImage;

-		return fErrorImage;

-	}

-	

-	public void createControl(Composite parent) {

-

-		Composite composite= new Composite(parent, SWT.NULL);

-		composite.setLayout(new GridLayout());

-		composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));

-

-		setControl(composite);

-		

-		buildPatchOptionsGroup(composite);

-		

-		Splitter splitter= new Splitter(composite, SWT.VERTICAL);

-		splitter.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL

-					| GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_VERTICAL));

-

-		

-		// top pane showing diffs and hunks in a check box tree 

-		fTree= new Tree(splitter, SWT.CHECK | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);

-		GridData gd= new GridData();

-		gd.verticalAlignment= GridData.FILL;

-		gd.horizontalAlignment= GridData.FILL;

-		gd.grabExcessHorizontalSpace= true;

-		gd.grabExcessVerticalSpace= true;

-		fTree.setLayoutData(gd);

-				

-		// bottom pane showing hunks in compare viewer 

-		fHunkViewer= new CompareViewerSwitchingPane(splitter, SWT.BORDER) {

-			protected Viewer getViewer(Viewer oldViewer, Object input) {

-				return CompareUI.findContentViewer(oldViewer, (ICompareInput)input, this, fCompareConfiguration);

-			}

-		};

-		gd= new GridData();

-		gd.verticalAlignment= GridData.FILL;

-		gd.horizontalAlignment= GridData.FILL;

-		gd.grabExcessHorizontalSpace= true;

-		gd.grabExcessVerticalSpace= true;

-		fHunkViewer.setLayoutData(gd);

-		

-		// register listeners

-		

-		fTree.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					TreeItem ti= (TreeItem) e.item;

-					Object data= e.item.getData();

-					if (e.detail == SWT.CHECK) {

-						boolean checked= ti.getChecked();

-						if (data instanceof Hunk) {

-							Hunk hunk= (Hunk) data;

-							checked= checked && hunk.fMatches;

-							hunk.setEnabled(checked);

-							ti.setChecked(checked);

-							updateGrayedState(ti);

-						} else if (data instanceof Diff) {

-							Diff diff= (Diff) data;

-							diff.setEnabled(checked && diff.fMatches);

-							updateCheckedState(ti);

-						}

-					} else {

-						if (data instanceof Hunk)

-							PreviewPatchPage.this.fHunkViewer.setInput(createInput((Hunk)data));

-						else

-							PreviewPatchPage.this.fHunkViewer.setInput(null);

-					}

-				}

-			}

-		);

-		

-		// creating tree's content

-		buildTree();

-

-		// WorkbenchHelp.setHelp(composite, new DialogPageContextComputer(this, PATCH_HELP_CONTEXT_ID));								

-	}

-	

-	/**

-	 *	Create the group for setting various patch options

-	 */

-	private void buildPatchOptionsGroup(Composite parent) {

-				

-		final Patcher patcher= fPatchWizard.getPatcher();

-		

-		Group group= new Group(parent, SWT.NONE);

-		group.setText(PatchMessages.getString("PreviewPatchPage.PatchOptions.title")); //$NON-NLS-1$

-		GridLayout layout= new GridLayout();

-		layout.numColumns= 5;

-		group.setLayout(layout);

-		group.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));

-		//fPatchFileGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

-	

-		// 1st row

-		new Label(group, SWT.NONE).setText(PatchMessages.getString("PreviewPatchPage.IgnoreSegments.text")); //$NON-NLS-1$

-

-		fStripPrefixSegments= new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.SIMPLE);

-		int prefixCnt= patcher.getStripPrefixSegments();

-		String prefix= Integer.toString(prefixCnt);

-		fStripPrefixSegments.add(prefix);

-		fStripPrefixSegments.setText(prefix);

-		

-		addSpacer(group);

-		

-		fReversePatchButton= new Button(group, SWT.CHECK);

-		fReversePatchButton.setText(PatchMessages.getString("PreviewPatchPage.ReversePatch.text")); //$NON-NLS-1$

-		

-		addSpacer(group);

-		

-		// 2nd row

-		Label l= new Label(group, SWT.NONE);

-		l.setText(PatchMessages.getString("PreviewPatchPage.FuzzFactor.text")); //$NON-NLS-1$

-		l.setToolTipText(PatchMessages.getString("PreviewPatchPage.FuzzFactor.tooltip")); //$NON-NLS-1$

-		fFuzzField= new Text(group, SWT.BORDER);

-		fFuzzField.setText("2"); //$NON-NLS-1$

-		GridData gd2= new GridData(GridData.HORIZONTAL_ALIGN_CENTER);

-		gd2.widthHint= 30;

-		fFuzzField.setLayoutData(gd2);

-

-		addSpacer(group);

-		

-		fIgnoreWhitespaceButton= new Button(group, SWT.CHECK);

-		fIgnoreWhitespaceButton.setText(PatchMessages.getString("PreviewPatchPage.IgnoreWhitespace.text")); //$NON-NLS-1$

-		

-		addSpacer(group);

-				

-		// register listeners

-			

-		if (fStripPrefixSegments != null) 

-			fStripPrefixSegments.addSelectionListener(

-				new SelectionAdapter() {

-					public void widgetSelected(SelectionEvent e) {

-						if (patcher.setStripPrefixSegments(getStripPrefixSegments()))

-							updateTree();

-					}

-				}

-			);

-		fReversePatchButton.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					if (patcher.setReversed(fReversePatchButton.getSelection()))

-						updateTree();

-				}

-			}

-		);

-		fIgnoreWhitespaceButton.addSelectionListener(

-			new SelectionAdapter() {

-				public void widgetSelected(SelectionEvent e) {

-					if (patcher.setIgnoreWhitespace(fIgnoreWhitespaceButton.getSelection()))

-						updateTree();

-				}

-			}

-		);

-		

-		fFuzzField.addModifyListener(

-			new ModifyListener() {

-				public void modifyText(ModifyEvent e) {

-					if (patcher.setFuzz(getFuzzFactor()))

-						updateTree();

-				}

-			}

-		);

-	}

-		

-	ICompareInput createInput(Hunk hunk) {

-		

-		String[] lines= hunk.fLines;

-		StringBuffer left= new StringBuffer();

-		StringBuffer right= new StringBuffer();

-		

-		for (int i= 0; i < lines.length; i++) {

-			String line= lines[i];

-			String rest= line.substring(1);

-			switch (line.charAt(0)) {

-			case ' ':

-				left.append(rest);

-				right.append(rest);

-				break;

-			case '-':

-				left.append(rest);

-				break;

-			case '+':

-				right.append(rest);

-				break;

-			}

-		}

-		

-		Diff diff= hunk.fParent;

-		IPath path= diff.getPath();

-		String type= path.getFileExtension();

-		

-		return new DiffNode(new HunkInput(type, left.toString()), new HunkInput(type, right.toString()));

-	}		

-	

-	/**

-	 * Builds a tree from list of Diffs.

-	 * As a side effect it calculates the maximum number of segments

-	 * in all paths.

-	 */

-	private void buildTree() {

-		setPageComplete(true);

-		if (fTree != null && !fTree.isDisposed()) {

-			fTree.removeAll();

-			fHunkViewer.setInput(null);

-			

-			int length= 99;

-			

-			Diff[] diffs= fPatchWizard.getPatcher().getDiffs();			

-			if (diffs != null) {

-				for (int i= 0; i < diffs.length; i++) {

-					Diff diff= diffs[i];

-					TreeItem d= new TreeItem(fTree, SWT.NULL);

-					d.setData(diff);

-					d.setImage(getImage(diff));

-					

-					if (diff.fOldPath != null)

-						length= Math.min(length, diff.fOldPath.segmentCount());

-					if (diff.fNewPath != null)

-						length= Math.min(length, diff.fNewPath.segmentCount());

-					

-					java.util.List hunks= diff.fHunks;

-					java.util.Iterator iter= hunks.iterator();

-					while (iter.hasNext()) {

-						Hunk hunk= (Hunk) iter.next();

-						TreeItem h= new TreeItem(d, SWT.NULL);

-						h.setData(hunk);

-						h.setText(hunk.getDescription());

-					}

-				}

-			}

-			if (fStripPrefixSegments != null && length != 99)

-				for (int i= 1; i < length; i++)

-					fStripPrefixSegments.add(Integer.toString(i));

-		}

-		

-		updateTree();

-	}

-	

-	private IFile existsInSelection(IPath path) {

-		IResource target= fPatchWizard.getTarget();

-		if (target instanceof IFile) {

-			IFile file= (IFile) target;

-			IPath path2= file.getFullPath().removeFirstSegments(1);

-			//System.out.println("target: " + path2.toOSString());

-			//System.out.println("  path: " + path.toOSString());

-			if (path.equals(path2))

-				return file;

-//			String name= file.getName();

-//			if (path.lastSegment().equals(name))

-//				return file;

-		} else if (target instanceof IContainer) {

-			IContainer c= (IContainer) target;

-			if (c.exists(path))

-				return c.getFile(path);

-		}

-		return null;

-	}

-	

-	/**

-	 * Updates label and checked state of tree items.

-	 */

-	private void updateTree() {

-		if (fTree == null || fTree.isDisposed())

-			return;

-		int strip= getStripPrefixSegments();

-		TreeItem[] children= fTree.getItems();

-		for (int i= 0; i < children.length; i++) {

-			TreeItem item= children[i];

-			Diff diff= (Diff) item.getData();

-			diff.fMatches= false;

-			String error= null;

-			

-			boolean create= false;	

-			IFile file= null;

-			if (diff.getType() == Differencer.ADDITION) {

-				IPath p= diff.fNewPath;

-				if (strip > 0 && strip < p.segmentCount())

-					p= p.removeFirstSegments(strip);

-				file= existsInSelection(p);

-				if (file == null) {

-					diff.fMatches= true;

-				} else {

-					// file already exists

-					error= PatchMessages.getString("PreviewPatchPage.FileExists.error"); //$NON-NLS-1$

-				}

-				create= true;

-			} else {

-				IPath p= diff.fOldPath;

-				if (strip > 0 && strip < p.segmentCount())

-					p= p.removeFirstSegments(strip);

-				file= existsInSelection(p);

-				diff.fMatches= file != null;

-				if (file != null) {

-					diff.fMatches= true;

-				} else {

-					// file doesn't exist

-					error= PatchMessages.getString("PreviewPatchPage.FileDoesNotExist.error"); //$NON-NLS-1$

-				}

-			}			

-			

-			boolean checked= false;

-				

-			ArrayList failedHunks= new ArrayList();

-			fPatchWizard.getPatcher().apply(diff, file, create, failedHunks);

-

-			if (failedHunks.size() > 0)

-				diff.fRejected= fPatchWizard.getPatcher().getRejected(failedHunks);

-			

-			int checkedSubs= 0;	// counts checked hunk items

-			TreeItem[] hunkItems= item.getItems();

-			for (int h= 0; h < hunkItems.length; h++) {

-				Hunk hunk= (Hunk) hunkItems[h].getData();

-				boolean failed= failedHunks.contains(hunk);

-				String hunkError= null;

-				if (failed)

-					hunkError= PatchMessages.getString("PreviewPatchPage.NoMatch.error"); //$NON-NLS-1$

-				hunk.setEnabled(diff.isEnabled() && !failed);

-				hunkItems[h].setChecked(hunk.isEnabled());

-				if (hunk.isEnabled()) {

-					checkedSubs++;

-					checked= true;

-				}

-				String hunkLabel= hunk.getDescription();

-				if (hunkError != null)

-					hunkLabel+= "   " + hunkError; //$NON-NLS-1$

-				hunkItems[h].setText(hunkLabel);

-				hunkItems[h].setImage(getImage(hunk));

-			}

-			

-			String label= diff.getDescription(strip);

-			if (error != null)

-				label+= "    " + error; //$NON-NLS-1$

-			item.setText(label);

-			item.setImage(getImage(diff));

-			item.setChecked(checked);

-			boolean gray= (checkedSubs > 0 &&  checkedSubs < hunkItems.length);

-			item.setGrayed(gray);

-			item.setExpanded(gray);

-		}

-	}

-	

-	/**

-	 * Updates the gray state of the given diff and the checked state of its children.

-	 */

-	private void updateCheckedState(TreeItem diff) {

-		boolean checked= diff.getChecked();

-		diff.setGrayed(false);

-		TreeItem[] hunks= diff.getItems();

-		for (int i= 0; i < hunks.length; i++)

-			hunks[i].setChecked(checked);

-	}

-	

-	/**

-	 * Updates the gray state of the given items parent.

-	 */

-	private void updateGrayedState(TreeItem hunk) {

-		TreeItem diff= hunk.getParentItem();

-		TreeItem[] hunks= diff.getItems();

-		int checked= 0;

-		for (int i= 0; i < hunks.length; i++)

-			if (hunks[i].getChecked())

-				checked++;

-		diff.setChecked(checked > 0);

-		diff.setGrayed(checked > 0 && checked < hunks.length);

-	}

-	

-	private void addSpacer(Composite parent) {

-		Label label= new Label(parent, SWT.NONE);

-		GridData gd= new GridData(GridData.FILL_HORIZONTAL);

-		gd.widthHint= 20;

-		label.setLayoutData(gd);

-	}

-	

-	private int getStripPrefixSegments() {

-		int stripPrefixSegments= 0;

-		if (fStripPrefixSegments != null) {

-			String s= fStripPrefixSegments.getText();

-			try {

-				stripPrefixSegments= Integer.parseInt(s);

-			} catch(NumberFormatException ex) {

-			}

-		}

-		return stripPrefixSegments;

-	}

-	

-	private int getFuzzFactor() {

-		int fuzzFactor= 0;

-		if (fFuzzField != null) {

-			String s= fFuzzField.getText();

-			try {

-				fuzzFactor= Integer.parseInt(s);

-			} catch(NumberFormatException ex) {

-			}

-		}

-		return fuzzFactor;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/package.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/package.html
deleted file mode 100644
index fb0ad62..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/package.html
+++ /dev/null
@@ -1,50 +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="Author" content="IBM">

-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">

-   <title>Package-level Javadoc</title>

-</head>

-<body>

-Provides support for performing structural and textual

-compare operations on arbitrary data and displaying the results.

-<h2>

-Package Specification</h2>

-The class <tt>CompareUI</tt> 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>A compare operation must be implemented as a subclass of <tt>CompareEditorInput</tt>.

-A <tt>CompareEditorInput</tt> runs a (potentially lengthy) compare operation

-under progress monitor control, creates a UI for drilling-down into the

-compare results, tracks the dirty state of the result in case of merge,

-and saves any changes that occured during a merge.

-<p>An instance of <tt>CompareConfiguration</tt> configures various UI aspects

-of compare/merge viewers like title labels and images, or whether a side

-of a merge viewer is editable. It is passed to the <tt>CompareEditorInput</tt>

-on creation.

-<p>When implementing a compare operation clients have to provide a tree

-of <tt>IStructureComparator</tt> (see package org.eclipse.compare.structuremergeviewer)

-and <tt>IStreamContentAccessor</tt> that can be passed as the input to

-the differencing engine (org.eclipse.compare.structuremergeviewer.Differencer).

-A <tt>ResourceNode</tt> is a convenience class that implements both interfaces

-for Eclipse workbench resources (org.eclipse.core.resources.IResource).

-It can be used without modification as the input to the differencing engine.

-<p>The <tt>EditionSelectionDialog</tt> is a simple selection dialog where

-one input element can be compared against a list of historic variants (<i>editions</i>)

-of the same input element. The dialog can be used to implement functions

-like <i>"Replace with Version"</i> or

-<br><i>"Replace with Edition"</i> on workbench 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 <i>path</i>. In this

-case the dialog compares only the subsection (as specified by the path)

-with the corresponding subsection in the list of editions. This functionality

-can be used to implement <i>"Replace with Method Edition"</i> for the Java

-language.

-<p>The <tt>EditionSelectionDialog</tt> requires that the editions implement

-the <tt>IStreamContentAccessor</tt> and <tt>IModificationDate</tt> interfaces.

-The <tt>HistoryItem</tt> is a convenience class that implements these interfaces

-for <tt>IFileState</tt> objects.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
deleted file mode 100644
index 4fa96b7..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-import java.util.ArrayList;

-import java.util.Iterator;

-import java.util.List;

-

-/**

- * A custom iterator to iterate over a List of <code>RangeDifferences</code>.

- * It is used internally by the <code>RangeDifferencer</code>.

- */

-/* package */ class DifferencesIterator {

-

-	List fRange;

-	int fIndex;

-	RangeDifference[] fArray;	

-	RangeDifference fDifference;

-	

-	/**

-	 * Creates a differences iterator on an array of <code>RangeDifference</code>s.

-	 */

-	DifferencesIterator(RangeDifference[] differenceRanges) {

-		

-		fArray= differenceRanges;

-		fIndex= 0;

-		fRange= new ArrayList();

-		if (fIndex < fArray.length)

-			fDifference= fArray[fIndex++];

-		else

-			fDifference= null;

-	}

-

-	/**

-	  * Returns the number of RangeDifferences

-	  */

-	int getCount() {

-		return fRange.size();

-	}

-

-	/**

-	 * Appends the edit to its list and moves to the next <code>RangeDifference</code>.

-	 */

-	void next() {

-		fRange.add(fDifference);

-		if (fDifference != null) {

-			if (fIndex < fArray.length)

-				fDifference= fArray[fIndex++];

-			else

-				fDifference= null;

-		}

-	}

-

-	/**

-	 * Difference iterators are used in pairs.

-	 * This method returns the other iterator.

-	 */

-	DifferencesIterator other(DifferencesIterator right, DifferencesIterator left) {

-		if (this == right)

-			return left;

-		return right;

-	}

-

-	/**

-	  * Removes all <code>RangeDifference</code>s

-	  */

-	void removeAll() {

-		fRange.clear();

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java
deleted file mode 100644
index ce01dc1..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-/**

- * For breaking an object to compare into a sequence of comparable entities.

- * <p>

- * It is used by <code>RangeDifferencer</code> to find longest sequences of

- * matching and non-matching ranges.

- * <p>

- * For example, to compare two text documents and find longest common sequences

- * of matching and non-matching lines, the implementation must break the document

- * into lines. <code>getRangeCount</code> would return the number of lines in the 

- * document, and <code>rangesEqual</code> would compare a specified line given 

- * with one in another <code>IRangeComparator</code>.

- * </p>

- * <p>

- * Clients should implement this interface; there is no standard implementation.

- * </p>

- */

-public interface IRangeComparator {

-

-	/**

-	 * Returns the number of comparable entities.

-	 *

-	 * @return the number of comparable entities 

-	 */

-	int getRangeCount();

-

-	/**

-	 * Returns whether the comparable entity given by the first index

-	 * matches an entity specified by the other <code>IRangeComparator</code> and index.

-	 *

-	 * @param thisIndex the index of the comparable entity within this <code>IRangeComparator</code>

-	 * @param other the IRangeComparator to compare this with

-	 * @param otherIndex the index of the comparable entity within the other <code>IRangeComparator</code>

-	 * @return <code>true</code> if the comparable entities are equal

-	 */

-	boolean rangesEqual(int thisIndex, IRangeComparator other, int otherIndex);

-

-	/**

-	 * Returns whether a comparison should be skipped because it would be too costly (or lengthy).

-	 * 

-	 * @param length a number on which to base the decision whether to return

-	 * 	<code>true</code> or <code>false</code>

-	 * @param maxLength another number on which to base the decision whether to return

-	 *	<code>true</code> or <code>false</code>

-	 * @param other the other <code>IRangeComparator</code> to compare with

-	 * @return <code>true</code> to avoid a too lengthy range comparison

-	 */

-	boolean skipRangeComparison(int length, int maxLength, IRangeComparator other);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java
deleted file mode 100644
index 9374957..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-/* package */ class LinkedRangeDifference extends RangeDifference {

-

-	static final int INSERT= 0;

-	static final int DELETE= 1;

-	static final int CHANGE= 2;

-	static final int ERROR= 3;

-

-	LinkedRangeDifference fNext;

-

-	/**

-	 * Creates a LinkedRangeDifference an initializes it to the error state

-	 */

-	LinkedRangeDifference() {

-		super(ERROR);

-		fNext= null;

-	}

-

-	/**

-	 * Constructs and links a LinkeRangeDifference to another LinkedRangeDifference

-	 */

-	LinkedRangeDifference(LinkedRangeDifference next, int operation) {

-		super(operation);

-		fNext= next;

-	}

-

-	/**

-	 * Follows the next link

-	 */

-	LinkedRangeDifference getNext() {

-		return fNext;

-	}

-

-	boolean isDelete() {

-		return kind() == DELETE;

-	}

-

-	boolean isInsert() {

-		return kind() == INSERT;

-	}

-

-	/**

-	 * Sets the next link of this LinkedRangeDifference

-	 */

-	void setNext(LinkedRangeDifference next) {

-		fNext= next;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java
deleted file mode 100644
index 2c4d62b..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-import org.eclipse.jface.*;

-import org.eclipse.jface.util.Assert;

-

-/**

- * Description of a change between two or three ranges of comparable entities.

- * <p>

- * <code>RangeDifference</code> objects are the elements of a compare result returned from

- * the <code>RangeDifferencer</code> <code>find* </code> methods.

- * Clients use these objects as they are returned from the differencer.

- * This class is not intended to be instantiated or subclassed.

- * <p>

- * Note: A range in the <code>RangeDifference</code> object is given as a start index

- * and length in terms of comparable entities. However, these entity indices and counts

- * are not necessarily character positions. For example, if an entity represents a line

- * in a document, the start index would be a line number and the count would be in lines.

- * </p>

- *

- * @see RangeDifferencer

- */

-public class RangeDifference {

-

-	/** Two-way change constant indicating no change. */

-	public final static int NOCHANGE= 0;

-	/** Two-way change constant indicating two-way change (same as <code>RIGHT</code>) */

-	public final static int CHANGE= 2;

-

-	/** Three-way change constant indicating a change in both right and left. */

-	public final static int CONFLICT= 1;

-	/** Three-way change constant indicating a change in right. */

-	public final static int RIGHT= 2;

-	/** Three-way change constant indicating a change in left. */

-	public final static int LEFT= 3;

-	/**

-	 * Three-way change constant indicating the same change in both right and left,

-	 * that is only the ancestor is different.

-	 */

-	public final static int ANCESTOR= 4;

-	

-	/** Constant indicating an unknown change kind. */

-	public final static int ERROR= 5;

-

-	/** the kind of change: NOCHANGE, CHANGE, LEFT, RIGHT, ANCESTOR, CONFLICT, ERROR */

-	int fKind;

-

-	int fLeftStart;

-	int fLeftLength;

-	int fRightStart;

-	int fRightLength;

-	int lAncestorStart;

-	int lAncestorLength;

-	

-	/**

-	 * Creates a new range difference with the given change kind.

-	 *

-	 * @param changeKind the kind of change

-	 */

-	/* package */ RangeDifference(int changeKind) {

-		fKind= changeKind;

-	}

-

-	/**

-	 * Creates a new <code>RangeDifference</code> with the given change kind

-	 * and left and right ranges.

-	 *

-	 * @param changeKind the kind of change

-	 * @param rightStart start index of entity on right side

-	 * @param rightLength number of entities on right side

-	 * @param leftStart start index of entity on left side

-	 * @param leftLength number of entities on left side

-	 */

-	/* package */ RangeDifference(int kind, int rightStart, int rightLength, int leftStart, int leftLength) {

-		fKind= kind;

-		fRightStart= rightStart;

-		fRightLength= rightLength;

-		fLeftStart= leftStart;

-		fLeftLength= leftLength;

-	}

-

-	/**

-	 * Creates a new <code>RangeDifference</code> with the given change kind

-	 * and left, right, and ancestor ranges.

-	 *

-	 * @param changeKind the kind of change

-	 * @param rightStart start index of entity on right side

-	 * @param rightLength number of entities on right side

-	 * @param leftStart start index of entity on left side

-	 * @param leftLength number of entities on left side

-	 * @param ancestorStart start index of entity on ancestor side

-	 * @param ancestorLength number of entities on ancestor side

-	 */

-	/* package */ RangeDifference(int kind, int rightStart, int rightLength, int leftStart, int leftLength,

-									int ancestorStart, int ancestorLength) {

-		this(kind, rightStart, rightLength, leftStart, leftLength);

-		lAncestorStart= ancestorStart;

-		lAncestorLength= ancestorLength;

-	}

-

-	/**

-	 * Returns the kind of difference.

-	 *

-	 * @return the kind of difference, one of

-	 * <code>NOCHANGE</code>, <code>CHANGE</code>, <code>LEFT</code>, <code>RIGHT</code>,

-	 * <code>ANCESTOR</code>, <code>CONFLICT</code>, <code>ERROR</code>

-	 */

-	public int kind() {

-		return fKind;

-	}

-

-	/**

-	 * Returns the start index of the entity range on the ancestor side.

-	 *

-	 * @return the start index of the entity range on the ancestor side

-	 */

-	public int ancestorStart() {

-		return lAncestorStart;

-	}

-

-	/**

-	 * Returns the number of entities on the ancestor side.

-	 *

-	 * @return the number of entities on the ancestor side

-	 */

-	public int ancestorLength() {

-		return lAncestorLength;

-	}

-

-	/**

-	 * Returns the end index of the entity range on the ancestor side.

-	 *

-	 * @return the end index of the entity range on the ancestor side

-	 */

-	public int ancestorEnd() {

-		return lAncestorStart + lAncestorLength;

-	}

-

-	/**

-	 * Returns the start index of the entity range on the right side.

-	 *

-	 * @return the start index of the entity range on the right side

-	 */

-	public int rightStart() {

-		return fRightStart;

-	}

-

-	/**

-	 * Returns the number of entities on the right side.

-	 *

-	 * @return the number of entities on the right side

-	 */

-	public int rightLength() {

-		return fRightLength;

-	}

-

-	/**

-	 * Returns the end index of the entity range on the right side.

-	 *

-	 * @return the end index of the entity range on the right side

-	 */

-	public int rightEnd() {

-		return fRightStart + fRightLength;

-	}

-

-	/**

-	 * Returns the start index of the entity range on the left side.

-	 *

-	 * @return the start index of the entity range on the left side

-	 */

-	public int leftStart() {

-		return fLeftStart;

-	}

-

-	/**

-	 * Returns the number of entities on the left side.

-	 *

-	 * @return the number of entities on the left side

-	 */

-	public int leftLength() {

-		return fLeftLength;

-	}

-

-	/**

-	 * Returns the end index of the entity range on the left side.

-	 *

-	 * @return the end index of the entity range on the left side

-	 */

-	public int leftEnd() {

-		return fLeftStart + fLeftLength;

-	}

-

-	/**

-	 * Returns the maximum number of entities in the left, right, and ancestor sides of this range.

-	 *

-	 * @return the maximum number of entities in the left, right, and ancestor sides of this range

-	 */

-	public int maxLength() {

-		return Math.max(fRightLength, Math.max(fLeftLength, lAncestorLength));

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
deleted file mode 100644
index 43b8808..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
+++ /dev/null
@@ -1,532 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.rangedifferencer;

-

-import java.util.*;

-

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.IProgressMonitor;

-

-/**

- * A <code>RangeDifferencer</code> finds the differences between two or three <code>IRangeComparator</code>s.

- * <p>

- * To use the differencer, clients provide an <code>IRangeComparator</code>

- * that breaks their input data into a sequence of comparable entities. The differencer

- * returns the differences among these sequences as an array of <code>RangeDifference</code> objects

- * (<code>findDifferences</code> methods).

- * Every <code>RangeDifference</code> represents a single kind of difference

- * and the corresponding ranges of the underlying comparable entities in the

- * left, right, and optionally ancestor sides.

- * <p>

- * Alternatively, the <code>findRanges</code> methods not only return objects for

- * the differing ranges but for non-differing ranges too.

- * <p>

- * The algorithm used is an objectified version of one described in:

- * <it>A File Comparison Program,</it> by Webb Miller and Eugene W. Myers, 

- * Software Practice and Experience, Vol. 15, Nov. 1985.

- *

- * @see IRangeComparator

- * @see RangeDifference

- */

-public final class RangeDifferencer {

-	

-	private static final RangeDifference[] EMPTY_RESULT= new RangeDifference[0];

-	

-	/* (non Javadoc)

-	 * Non instantiatiable!

-	 */

-	private RangeDifferencer() { 

-	}

-	

-	/**

-	 * Finds the differences between two <code>IRangeComparator</code>s.

-	 * The differences are returned as an array of <code>RangeDifference</code>s.

-	 * If no differences are detected an empty array is returned.

-	 * 

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences, or an empty array if no differences were found

-	 */

-	public static RangeDifference[] findDifferences(IRangeComparator left, IRangeComparator right) {

-		return findDifferences((IProgressMonitor)null, left, right);

-	}

-	

-	/**

-	 * Finds the differences between two <code>IRangeComparator</code>s.

-	 * The differences are returned as an array of <code>RangeDifference</code>s.

-	 * If no differences are detected an empty array is returned.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences, or an empty array if no differences were found

-	 */

-	public static RangeDifference[] findDifferences(IProgressMonitor pm, IRangeComparator left, IRangeComparator right) {

-

-		// assert that both IRangeComparators are of the same class

-		Assert.isTrue(right.getClass().equals(left.getClass()));

-

-		int rightSize= right.getRangeCount();

-		int leftSize= left.getRangeCount();

-		//

-		// Differences matrix:

-		// only the last d of each diagonal is stored, i.e., lastDiagonal[k] = row of d    

-		//

-		int diagLen= 2 * Math.max(rightSize, leftSize); // bound on the size of edit script

-		int maxDiagonal= diagLen;

-		int lastDiagonal[]= new int[diagLen + 1]; // the row containing the last d

-		// on diagonal k (lastDiagonal[k] = row)

-		int origin= diagLen / 2; // origin of diagonal 0

-

-		// script corresponding to d[k] 

-		LinkedRangeDifference script[]= new LinkedRangeDifference[diagLen + 1];

-		int row, col;

-

-		// find common prefix

-		for (row= 0; row < rightSize && row < leftSize && rangesEqual(right, row, left, row) == true; ++row)

-			;

-

-		lastDiagonal[origin]= row;

-		script[origin]= null;

-		int lower= (row == rightSize) ? origin + 1 : origin - 1;

-		int upper= (row == leftSize) ? origin - 1 : origin + 1;

-

-		if (lower > upper)

-			return EMPTY_RESULT;

-			

-		//System.out.println("findDifferences: " + maxDiagonal + " " + lower + " " + upper);

-		

-		// for each value of the edit distance

-		for (int d= 1; d <= maxDiagonal; ++d) { // d is the current edit distance

-			

-			if (pm != null)

-				pm.worked(1);

-

-			if (right.skipRangeComparison(d, maxDiagonal, left))

-				return EMPTY_RESULT; // should be something we already found

-

-			// for each relevant diagonal (-d, -d+2 ..., d-2, d)

-			for (int k= lower; k <= upper; k += 2) { // k is the current diagonal

-				LinkedRangeDifference edit;

-

-				if (pm != null && pm.isCanceled())

-					return EMPTY_RESULT;

-

-				if (k == origin - d || k != origin + d && lastDiagonal[k + 1] >= lastDiagonal[k - 1]) {

-					//

-					// move down

-					//

-					row= lastDiagonal[k + 1] + 1;

-					edit= new LinkedRangeDifference(script[k + 1], LinkedRangeDifference.DELETE);

-				} else {

-					//

-					// move right

-					//

-					row= lastDiagonal[k - 1];

-					edit= new LinkedRangeDifference(script[k - 1], LinkedRangeDifference.INSERT);

-				}

-				col= row + k - origin;

-				edit.fRightStart= row;

-				edit.fLeftStart= col;

-				Assert.isTrue(k >= 0 && k <= maxDiagonal);

-				script[k]= edit;

-

-				// slide down the diagonal as far as possible 

-				while (row < rightSize && col < leftSize && rangesEqual(right, row, left, col) == true) {

-					++row;

-					++col;

-				}

-

-				Assert.isTrue(k >= 0 && k <= maxDiagonal); // Unreasonable value for diagonal index

-				lastDiagonal[k]= row;

-

-				if (row == rightSize && col == leftSize) {

-					//showScript(script[k], right, left);

-					return createDifferencesRanges(script[k]);

-				}

-				if (row == rightSize)

-					lower= k + 2;

-				if (col == leftSize)

-					upper= k - 2;

-			}

-			--lower;

-			++upper;

-		}

-		// too many differences

-		Assert.isTrue(false);

-		return null;

-	}

-

-	/**

-	 * Finds the differences among three <code>IRangeComparator</code>s.

-	 * The differences are returned as a list of <code>RangeDifference</code>s.

-	 * If no differences are detected an empty list is returned.

-	 * If the ancestor range comparator is <code>null</code>, a two-way

-	 * comparison is performed.

-	 * 

-	 * @param ancestor the ancestor range comparator or <code>null</code>

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences, or an empty array if no differences were found

-	 */

-	public static RangeDifference[] findDifferences(IRangeComparator ancestor, IRangeComparator left, IRangeComparator right) {

-		return findDifferences(null, ancestor, left, right);

-	}

-	

-	/**

-	 * Finds the differences among three <code>IRangeComparator</code>s.

-	 * The differences are returned as a list of <code>RangeDifference</code>s.

-	 * If no differences are detected an empty list is returned.

-	 * If the ancestor range comparator is <code>null</code>, a two-way

-	 * comparison is performed.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param ancestor the ancestor range comparator or <code>null</code>

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences, or an empty array if no differences were found

-	 */

-	public static RangeDifference[] findDifferences(IProgressMonitor pm, IRangeComparator ancestor, IRangeComparator left, IRangeComparator right) {

-

-		if (ancestor == null)

-			return findDifferences(pm, left, right);

-

-		RangeDifference[] leftAncestorScript= null;

-		RangeDifference[] rightAncestorScript= findDifferences(pm, ancestor, right);

-		if (rightAncestorScript != null)

-			leftAncestorScript= findDifferences(pm, ancestor, left);

-		if (rightAncestorScript == null || leftAncestorScript == null)

-			return null;

-

-		DifferencesIterator myIter= new DifferencesIterator(rightAncestorScript);

-		DifferencesIterator yourIter= new DifferencesIterator(leftAncestorScript);

-

-		List diff3= new ArrayList();

-		diff3.add(new RangeDifference(RangeDifference.ERROR)); // add a sentinel

-

-		int changeRangeStart= 0;

-		int changeRangeEnd= 0;

-		//

-		// Combine the two two-way edit scripts into one

-		//

-		while (myIter.fDifference != null || yourIter.fDifference != null) {

-

-			DifferencesIterator startThread;

-			myIter.removeAll();

-			yourIter.removeAll();

-			//

-			// take the next diff that is closer to the start

-			//

-			if (myIter.fDifference == null)

-				startThread= yourIter;

-			else if (yourIter.fDifference == null)

-				startThread= myIter;

-			else { // not at end of both scripts take the lowest range

-				if (myIter.fDifference.fLeftStart <= yourIter.fDifference.fLeftStart) // 2 -> common (Ancestor) change range

-					startThread= myIter;

-				else

-					startThread= yourIter;

-			}

-			changeRangeStart= startThread.fDifference.fLeftStart;

-			changeRangeEnd= startThread.fDifference.leftEnd();

-

-			startThread.next();

-			//

-			// check for overlapping changes with other thread

-			// merge overlapping changes with this range

-			//

-			DifferencesIterator other= startThread.other(myIter, yourIter);

-			while (other.fDifference != null && other.fDifference.fLeftStart <= changeRangeEnd) {

-				int newMax= other.fDifference.leftEnd();

-				other.next();

-				if (newMax >= changeRangeEnd) {

-					changeRangeEnd= newMax;

-					other= other.other(myIter, yourIter);

-				}

-			}

-			diff3.add(createRangeDifference3(myIter, yourIter, diff3, right, left, changeRangeStart, changeRangeEnd));

-		}

-

-		// remove sentinel

-		diff3.remove(0);

-		return (RangeDifference[]) diff3.toArray(EMPTY_RESULT);

-	}

-

-	/**

-	 * Finds the differences among two <code>IRangeComparator</code>s.

-	 * In contrast to <code>findDifferences</code>, the result

-	 * contains <code>RangeDifference</code> elements for non-differing ranges too.

-	 * 

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences

-	 */

-	public static RangeDifference[] findRanges(IRangeComparator left, IRangeComparator right) {

-		return findRanges((IProgressMonitor)null, left, right);

-	}

-	

-	/**

-	 * Finds the differences among two <code>IRangeComparator</code>s.

-	 * In contrast to <code>findDifferences</code>, the result

-	 * contains <code>RangeDifference</code> elements for non-differing ranges too.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences

-	 */

-	public static RangeDifference[] findRanges(IProgressMonitor pm, IRangeComparator left, IRangeComparator right) {

-		RangeDifference[] in= findDifferences(pm, left, right);

-		List out= new ArrayList();

-

-		RangeDifference rd;

-

-		int mstart= 0;

-		int ystart= 0;

-

-		for (int i= 0; i < in.length; i++) {

-			RangeDifference es= in[i];

-

-			rd= new RangeDifference(RangeDifference.NOCHANGE, mstart, es.rightStart() - mstart, ystart, es.leftStart() - ystart);

-			if (rd.maxLength() != 0)

-				out.add(rd);

-

-			out.add(es);

-

-			mstart= es.rightEnd();

-			ystart= es.leftEnd();

-		}

-		rd= new RangeDifference(RangeDifference.NOCHANGE, mstart, right.getRangeCount() - mstart, ystart, left.getRangeCount() - ystart);

-		if (rd.maxLength() > 0)

-			out.add(rd);

-

-		return (RangeDifference[]) out.toArray(EMPTY_RESULT);

-	}

-

-	/**

-	 * Finds the differences among three <code>IRangeComparator</code>s.

-	 * In contrast to <code>findDifferences</code>, the result

-	 * contains <code>RangeDifference</code> elements for non-differing ranges too.

-	 * If the ancestor range comparator is <code>null</code>, a two-way

-	 * comparison is performed.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param ancestor the ancestor range comparator or <code>null</code>

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences

-	 */

-	public static RangeDifference[] findRanges(IRangeComparator ancestor, IRangeComparator left, IRangeComparator right) {

-		return findRanges(null, ancestor, left, right);

-	}

-	

-	/**

-	 * Finds the differences among three <code>IRangeComparator</code>s.

-	 * In contrast to <code>findDifferences</code>, the result

-	 * contains <code>RangeDifference</code> elements for non-differing ranges too.

-	 * If the ancestor range comparator is <code>null</code>, a two-way

-	 * comparison is performed.

-	 * 

-	 * @param pm if not <code>null</code> used to report progress

-	 * @param ancestor the ancestor range comparator or <code>null</code>

-	 * @param left the left range comparator

-	 * @param right the right range comparator

-	 * @return an array of range differences

-	 */

-	public static RangeDifference[] findRanges(IProgressMonitor pm, IRangeComparator ancestor, IRangeComparator left, IRangeComparator right) {

-

-		if (ancestor == null)

-			return findRanges(pm, left, right);

-

-		RangeDifference[] in= findDifferences(pm, ancestor, left, right);

-		List out= new ArrayList();

-

-		RangeDifference rd;

-

-		int mstart= 0;

-		int ystart= 0;

-		int astart= 0;

-

-		for (int i= 0; i < in.length; i++) {

-			RangeDifference es= (RangeDifference) in[i];

-

-			rd= new RangeDifference(RangeDifference.NOCHANGE, mstart, es.rightStart() - mstart, ystart, es.leftStart() - ystart, astart, es.ancestorStart() - astart);

-			if (rd.maxLength() > 0)

-				out.add(rd);

-

-			out.add(es);

-

-			mstart= es.rightEnd();

-			ystart= es.leftEnd();

-			astart= es.ancestorEnd();

-		}

-		rd= new RangeDifference(RangeDifference.NOCHANGE, mstart, right.getRangeCount() - mstart, ystart, left.getRangeCount() - ystart, astart, ancestor.getRangeCount() - astart);

-		if (rd.maxLength() > 0)

-			out.add(rd);

-

-		return (RangeDifference[]) out.toArray(EMPTY_RESULT);

-	}

-

-	//---- private methods

-

-	/**

-	 * Creates a Vector of DifferencesRanges out of the LinkedRangeDifference.

-	 * It coalesces adjacent changes.

-	 * In addition, indices are changed such that the ranges are 1) open, i.e,

-	 * the end of the range is not included, and 2) are zero based.

-	 */

-	private static RangeDifference[] createDifferencesRanges(LinkedRangeDifference start) {

-

-		LinkedRangeDifference ep= reverseDifferences(start);

-		ArrayList result= new ArrayList();

-		RangeDifference es= null;

-

-		while (ep != null) {

-			es= new RangeDifference(RangeDifference.CHANGE);

-

-			if (ep.isInsert()) {

-				es.fRightStart= ep.fRightStart + 1;

-				es.fLeftStart= ep.fLeftStart;

-				RangeDifference b= ep;

-				do {

-					ep= ep.getNext();

-					es.fLeftLength++;

-				} while (ep != null && ep.isInsert() && ep.fRightStart == b.fRightStart);

-			} else {

-				es.fRightStart= ep.fRightStart;

-				es.fLeftStart= ep.fLeftStart;

-

-				RangeDifference a= ep;

-				//

-				// deleted lines

-				//

-				do {

-					a= ep;

-					ep= ep.getNext();

-					es.fRightLength++;

-				} while (ep != null && ep.isDelete() && ep.fRightStart == a.fRightStart + 1);

-

-				boolean change= (ep != null && ep.isInsert() && ep.fRightStart == a.fRightStart);

-

-				if (change) {

-					RangeDifference b= ep;

-					//

-					// replacement lines

-					//

-					do {

-						ep= ep.getNext();

-						es.fLeftLength++;

-					} while (ep != null && ep.isInsert() && ep.fRightStart == b.fRightStart);

-				} else {

-					es.fLeftLength= 0;

-				}

-				es.fLeftStart++; // meaning of range changes from "insert after", to "replace with"

-

-			}

-			//

-			// the script commands are 1 based, subtract one to make them zero based

-			//

-			es.fRightStart--;

-			es.fLeftStart--;

-			result.add(es);

-		}

-		return (RangeDifference[]) result.toArray(EMPTY_RESULT);

-	}

-

-	/**

-	 * Creates a <code>RangeDifference3</code> given the

-	 * state of two DifferenceIterators.

-	 */

-	private static RangeDifference createRangeDifference3(

-		DifferencesIterator myIter, 

-		DifferencesIterator yourIter, 

-		List diff3, 

-		IRangeComparator right, 

-		IRangeComparator left, 

-		int changeRangeStart, 

-		int changeRangeEnd) {

-

-		int rightStart, rightEnd;

-		int leftStart, leftEnd;

-		int kind= RangeDifference.ERROR;

-		RangeDifference last= (RangeDifference) diff3.get(diff3.size() - 1);

-

-		Assert.isTrue((myIter.getCount() != 0 || yourIter.getCount() != 0));	// At least one range array must be non-empty

-		//

-		// find corresponding lines to fChangeRangeStart/End in right and left

-		//

-		if (myIter.getCount() == 0) { // only left changed

-			rightStart= changeRangeStart - last.ancestorEnd() + last.rightEnd();

-			rightEnd= changeRangeEnd - last.ancestorEnd() + last.rightEnd();

-			kind= RangeDifference.LEFT;

-		} else {

-			RangeDifference f= (RangeDifference) myIter.fRange.get(0);

-			RangeDifference l= (RangeDifference) myIter.fRange.get(myIter.fRange.size() - 1);

-			rightStart= changeRangeStart - f.fLeftStart + f.fRightStart;

-			rightEnd= changeRangeEnd - l.leftEnd() + l.rightEnd();

-		}

-

-		if (yourIter.getCount() == 0) { // only right changed

-			leftStart= changeRangeStart - last.ancestorEnd() + last.leftEnd();

-			leftEnd= changeRangeEnd - last.ancestorEnd() + last.leftEnd();

-			kind= RangeDifference.RIGHT;

-		} else {

-			RangeDifference f= (RangeDifference) yourIter.fRange.get(0);

-			RangeDifference l= (RangeDifference) yourIter.fRange.get(yourIter.fRange.size() - 1);

-			leftStart= changeRangeStart - f.fLeftStart + f.fRightStart;

-			leftEnd= changeRangeEnd - l.leftEnd() + l.rightEnd();

-		}

-

-		if (kind == RangeDifference.ERROR) { // overlapping change (conflict) -> compare the changed ranges

-			if (rangeSpansEqual(right, rightStart, rightEnd - rightStart, left, leftStart, leftEnd - leftStart))

-				kind= RangeDifference.ANCESTOR;

-			else

-				kind= RangeDifference.CONFLICT;

-		}

-		return new RangeDifference(kind, rightStart, rightEnd - rightStart, leftStart, leftEnd - leftStart, changeRangeStart, changeRangeEnd - changeRangeStart);

-	}

-

-	/**

-	 * Tests if two ranges are equal

-	 */

-	private static boolean rangesEqual(IRangeComparator a, int ai, IRangeComparator b, int bi) {

-		return a.rangesEqual(ai, b, bi);

-	}

-

-	/**

-	 * Tests whether <code>right</code> and <code>left</left> changed in the same way

-	 */

-	private static boolean rangeSpansEqual(IRangeComparator right, int rightStart, int rightLen, IRangeComparator left, int leftStart, int leftLen) {

-		if (rightLen == leftLen) {

-			int i= 0;

-			for (i= 0; i < rightLen; i++) {

-				if (!rangesEqual(right, rightStart + i, left, leftStart + i))

-					break;

-			}

-			if (i == rightLen)

-				return true;

-		}

-		return false;

-	}

-

-	/**

-	 * Reverses the range differences

-	 */

-	private static LinkedRangeDifference reverseDifferences(LinkedRangeDifference start) {

-		LinkedRangeDifference ep, behind, ahead;

-

-		ahead= start;

-		ep= null;

-		while (ahead != null) {

-			behind= ep;

-			ep= ahead;

-			ahead= ahead.getNext();

-			ep.setNext(behind);

-		}

-		return ep;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html
deleted file mode 100644
index 2e4ffaf..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html
+++ /dev/null
@@ -1,37 +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="Author" content="IBM">

-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">

-   <title>Package-level Javadoc</title>

-</head>

-<body>

-Provides support for finding the differences between

-two or three sequences of comparable entities.

-<h2>

-Package Specification</h2>

-The class <tt>Differencer</tt> finds longest sequences of matching and

-non-matching comparable entities.

-<p>Clients must supply the input to the differencer as an implementation

-of the <tt>IRangeComparator</tt> interface.

-<br>An <tt>IRangeComparator</tt> breaks the input data into a sequence

-of entities and provides a method for comparing

-<br>one entity with the entity in another <tt>IRangeComparator</tt>.

-<br>For example, to compare two text documents and find longest common

-sequences

-<br>of matching and non-matching lines, the implementation of <tt>IRangeComparator

-</tt>must break the document

-<br>into lines and provide a method for testing whether two lines are considered

-equal.

-<p>The differencer returns the differences among these sequences as an

-array of <tt>RangeDifference</tt> objects.

-<br>Every single <tt>RangeDifference</tt> describes kind of difference

-(no change, change, addition, deletion)

-<br>and the corresponding ranges of the underlying comparable entities

-in the two or three inputs.

-<p>The algorithm used is an objectified version of one described in:

-<br><i>A File Comparison Program,</i> by Webb Miller and Eugene W. Myers,

-<br>Software Practice and Experience, Vol. 15, Nov. 1985.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java
deleted file mode 100644
index f101c35..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.util.Iterator;

-import java.util.ArrayList;

-import org.eclipse.swt.graphics.Image;

-

-

-/**

- * The standard implementation of a diff container element.

- * <p>

- * This class may be instantiated, or further subclassed.

- * </p>

- */

-public abstract class DiffContainer extends DiffElement implements IDiffContainer {

-

-	private static IDiffElement[] fgEmptyArray= new IDiffElement[0];

-	private ArrayList fChildren;

-	

-	/**

-	 * Creates a new container with the specified kind under the given parent. 

-	 *

-	 * @param parent under which the new container is added as a child or <code>null</code>.

-	 * @param name of the container

-	 * @param kind of difference (defined in <code>Differencer</code>).

-	 */

-	public DiffContainer(IDiffContainer parent, int kind) {

-		super(parent, kind);

-	}

-	

-	/**

-	 * Tries to find the child with the given name.

-	 * Returns <code>null</code> if no such child exists.

-	 * 

-	 * @param name of the child to find

-	 * @return the first element with a matching name

-	 */

-	public IDiffElement findChild(String name) {

-		Object[] children= getChildren();

-		for (int i= 0; i < children.length; i++) {

-			IDiffElement child= (IDiffElement) children[i];

-			if (name.equals(child.getName()))

-				return child;

-		}

-		return null;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffContainer.add

-	 */

-	public void add(IDiffElement diff) {

-		if (fChildren == null)

-			fChildren= new ArrayList();

-		fChildren.add(diff);

-		diff.setParent(this);

-	}

-

-	/**

-	 * Removes the given child from this container.

-	 * If the container becomes empty it is removed from its container.

-	 */

-	/* (non Javadoc)

-	 * see IDiffContainer.removeToRoot

-	 */

-	public void removeToRoot(IDiffElement child) {

-		if (fChildren != null) {

-			fChildren.remove(child);

-			child.setParent(null);

-			if (fChildren.size() == 0) {

-				IDiffContainer p= getParent();

-				if (p != null)

-					p.removeToRoot(this);

-			}

-		}

-	}

-

-	/**

-	 * Removes the given child (non-recursively) from this container.

-	 *

-	 * @param child to remove

-	 */

-	public void remove(IDiffElement child) {

-		if (fChildren != null) {

-			fChildren.remove(child);

-			child.setParent(null);

-		}

-	}

-	

-	/* (non Javadoc)

-	 * see IDiffContainer.hasChildren

-	 */

-	public boolean hasChildren() {

-		return fChildren != null && fChildren.size() > 0;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffContainer.getChildren

-	 */

-	public IDiffElement[] getChildren() {

-		if (fChildren != null)

-			return (IDiffElement[]) fChildren.toArray(fgEmptyArray);

-		return fgEmptyArray;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java
deleted file mode 100644
index 7174a95..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.jface.util.Assert;

-

-/**

- * An abstract base implementation of the <code>IDiffElement</code> interface.

- * <p>

- * Subclasses may add behavior and state, and may override <code>getImage</code>

- * and <code>getType</code> to suit.

- * </p>

- */

-public abstract class DiffElement implements IDiffElement {

-

-	private int fKind;

-	private IDiffContainer fParent;

-

-	/**

-	 * Creates a new <code>DiffElement</code> as a child of the given parent.

-	 * If parent is not <code>null</code> the new element is added to the parent.

-	 *

-	 * @param parent the parent of this child; if not <code>null</code> this element is automatically added as a child

-	 * @param kind the kind of change

-	 */

-	public DiffElement(IDiffContainer parent, int kind) {

-		fParent= parent;

-		fKind= kind;

-		if (parent != null)

-			parent.add(this);

-	}

-

-	/**

-	 * The <code>DiffElement</code> implementation of this <code>ITypedInput</code>

-	 * method returns <code>null</code>. Subclasses may re-implement to provide

-	 * an image for this element.

-	 */

-	public Image getImage() {

-		return null;

-	}

-

-	/**

-	 * The <code>DiffElement</code> implementation of this <code>ITypedElement</code>

-	 * method returns <code>ITypedElement.UNKNOWN_TYPE</code>. Subclasses may

-	 * re-implement to provide a type for this element.

-	 */

-	public String getType() {

-		return ITypedElement.UNKNOWN_TYPE;

-	}

-

-	/**

-	 * Sets the kind of difference for this element.

-	 *

-	 * @param kind set the kind of difference this element represents

-	 * @see Differencer

-	 */

-	public void setKind(int kind) {

-		fKind= kind;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffElement.getKind

-	 */

-	public int getKind() {

-		return fKind;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffElement.getParent

-	 */

-	public IDiffContainer getParent() {

-		return fParent;

-	}

-

-	/* (non Javadoc)

-	 * see IDiffElement.setParent

-	 */

-	public void setParent(IDiffContainer parent) {

-		fParent= parent;

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java
deleted file mode 100644
index 75c91bb..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.text.MessageFormat;

-

-import org.eclipse.swt.graphics.Image;

-

-import org.eclipse.jface.util.ListenerList;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.Utilities;

-

-/**

- * Diff node are used as the compare result of the differencing engine.

- * Since it implements the <code>ITypedElement</code> and <code>ICompareInput</code>

- * interfaces it can be used directly to display the

- * compare result in a <code>DiffTreeViewer</code> and as the input to any other

- * compare/merge viewer.

- * <p>

- * <code>DiffNode</code>s are typically created as the result of performing

- * a compare with the <code>Differencer</code>.

- * <p>

- * Clients typically use this class as is, but may subclass if required.

- * 

- * @see DiffTreeViewer

- * @see Differencer

- */

-public class DiffNode extends DiffContainer implements ITypedElement, ICompareInput {

-

-	private ITypedElement fAncestor;

-	private ITypedElement fLeft;

-	private ITypedElement fRight;

-	private boolean fDontExpand;

-	private ListenerList fListener;

-	private boolean fSwapSides;

-

-	

-	/**

-	 * Creates a new <code>DiffNode</code> and initializes with the given values.

-	 *

-	 * @param parent under which the new container is added as a child or <code>null</code>

-	 * @param kind of difference (defined in <code>Differencer</code>)

-	 * @param ancestor the common ancestor input to a compare

-	 * @param left the left input to a compare

-	 * @param right the right input to a compare

-	 */

-	public DiffNode(IDiffContainer parent, int kind, ITypedElement ancestor, ITypedElement left, ITypedElement right) {

-		this(parent, kind);

-		fAncestor= ancestor;

-		fLeft= left;

-		fRight= right;

-	}

-

-	/**

-	 * Creates a new <code>DiffNode</code> with diff kind <code>Differencer.CHANGE</code>

-	 * and initializes with the given values.

-	 *

-	 * @param left the left input to a compare

-	 * @param right the right input to a compare

-	 */

-	public DiffNode(ITypedElement left, ITypedElement right) {

-		this(null, Differencer.CHANGE, null, left, right);

-	}

-

-	/**

-	 * Creates a new <code>DiffNode</code> and initializes with the given values.

-	 *

-	 * @param kind of difference (defined in <code>Differencer</code>)

-	 * @param ancestor the common ancestor input to a compare

-	 * @param left the left input to a compare

-	 * @param right the right input to a compare

-	 */

-	public DiffNode(int kind, ITypedElement ancestor, ITypedElement left, ITypedElement right) {

-		this(null, kind, ancestor, left, right);

-	}

-

-	/**

-	 * Creates a new <code>DiffNode</code> with the given diff kind.

-	 *

-	 * @param kind of difference (defined in <code>Differencer</code>)

-	 */

-	public DiffNode(int kind) {

-		super(null, kind);

-	}

-

-	/**

-	 * Creates a new <code>DiffNode</code> and initializes with the given values.

-	 *

-	 * @param parent under which the new container is added as a child or <code>null</code>

-	 * @param kind of difference (defined in <code>Differencer</code>)

-	 */

-	public DiffNode(IDiffContainer parent, int kind) {

-		super(parent, kind);

-	}

-

-	/**

-	 * Registers a listener for changes of this <code>ICompareInput</code>.

-	 * Has no effect if an identical listener is already registered.

-	 *

-	 * @param listener the listener to add

-	 */

-	public void addCompareInputChangeListener(ICompareInputChangeListener listener) {

-		if (fListener == null)

-			fListener= new ListenerList();

-		fListener.add(listener);

-	}

-	

-	/**

-	 * Unregisters a <code>ICompareInput</code> listener.

-	 * Has no effect if listener is not registered.

-	 *

-	 * @param listener the listener to remove

-	 */

-	public void removeCompareInputChangeListener(ICompareInputChangeListener listener) {

-		if (fListener != null) {

-			fListener.remove(listener);

-			if (fListener.isEmpty())

-				fListener= null;

-		}

-	}

-	

-	/**

-	 * Sends out notification that a change has occured on the <code>ICompareInput</code>.

-	 */

-	protected void fireChange() {

-		if (fListener != null) {

-			Object[] listeners= fListener.getListeners();

-			for (int i= 0; i < listeners.length; i++)

-				((ICompareInputChangeListener) listeners[i]).compareInputChanged(this);

-		}

-	}

-

-	//---- getters & setters

-

-	/**

-	 * Returns <code>true</code> if this node shouldn't automatically be expanded in

-	 * a </code>DiffTreeViewer</code>.

-	 *

-	 * @return <code>true</code> if node shouldn't automatically be expanded

-	 */

-	public boolean dontExpand() {

-		return fDontExpand;

-	}

-

-	/**

-	 * Controls whether this node is not automatically expanded when displayed in

-	 * a </code>DiffTreeViewer</code>.

-	 *

-	 * @param dontExpand if <code>true</code> this node is not automatically expanded in </code>DiffTreeViewer</code>

-	 */

-	public void setDontExpand(boolean dontExpand) {

-		fDontExpand= dontExpand;

-	}

-

-	/**

-	 * Returns the first not-<code>null</code> input of this node.

-	 * Method checks the three inputs in the order: ancestor, right, left.

-	 *

-	 * @return the first not-<code>null</code> input of this node

-	 */

-	public ITypedElement getId() {

-		if (fAncestor != null)

-			return fAncestor;

-		if (fRight != null)

-			return fRight;

-		return fLeft;

-	}

-

-	/**

-	 * Returns the (non-<code>null</code>) name of the left or right side if they are identical.

-	 * Otherwise both names are concatenated (separated with a slash ('/')).

-	 * <p>

-	 * Subclasses may re-implement to provide a different name for this node.

-	 */

-	/* (non Javadoc)

-	 * see ITypedElement.getName

-	 */

-	public String getName() {

-		String right= null;

-		if (fRight != null)

-			right= fRight.getName();

-

-		String left= null;

-		if (fLeft != null)

-			left= fLeft.getName();

-

-		if (right == null && left == null) {

-			if (fAncestor != null)

-				return fAncestor.getName();

-			return Utilities.getString("DiffNode.noName"); //$NON-NLS-1$

-		}

-

-		if (right == null)

-			return left;

-		if (left == null)

-			return right;

-

-		if (right.equals(left))

-			return right;

-			

-		String s1;

-		String s2;

-		

-		if (fSwapSides) {

-			s1= left;

-			s2= right;

-		} else {

-			s1= right;

-			s2= left;

-		}

-		

-		String fmt= Utilities.getString("DiffNode.nameFormat"); //$NON-NLS-1$

-		return MessageFormat.format(fmt, new String[] { s1, s2 });

-	}

-	

-	void swapSides(boolean swap) {

-		fSwapSides= swap;

-	}

-		

-	/* (non Javadoc)

-	 * see ITypedElement.getImage

-	 */

-	public Image getImage() {

-		ITypedElement id= getId();

-		if (id != null)

-			return id.getImage();

-		return null;

-	}

-

-	/* (non Javadoc)

-	 * see ITypedElement.getType

-	 */

-	public String getType() {

-		ITypedElement id= getId();

-		if (id != null)

-			return id.getType();

-		return ITypedElement.UNKNOWN_TYPE;

-	}

-

-	/* (non Javadoc)

-	 * see ICompareInput.getAncestor

-	 */

-	public ITypedElement getAncestor() {

-		return fAncestor;

-	}

-	

-	/**

-	 * Sets the left input to the given value.

-	 *

-	 * @param left the new value for the left input

-	 */

-	public void setLeft(ITypedElement left) {

-		fLeft= left;

-	}

-	

-	/* (non Javadoc)

-	 * see ICompareInput.getLeft

-	 */

-	public ITypedElement getLeft() {

-		return fLeft;

-	}

-

-	/**

-	 * Sets the right input to the given value.

-	 *

-	 * @param right the new value for the right input

-	 */

-	public void setRight(ITypedElement right) {

-		fRight= right;

-	}

-	

-	/* (non Javadoc)

-	 * see ICompareInput.getRight

-	 */

-	public ITypedElement getRight() {

-		return fRight;

-	}

-

-	/* (non Javadoc)

-	 * see ICompareInput.copy

-	 */

-	public void copy(boolean leftToRight) {

-		//System.out.println("DiffNode.copy: " + leftToRight);

-		

-		IDiffContainer pa= getParent();

-		if (pa instanceof ICompareInput) {

-			ICompareInput parent= (ICompareInput) pa;

-			Object dstParent= leftToRight ? parent.getRight() : parent.getLeft();

-			

-			if (dstParent instanceof IEditableContent) {

-				ITypedElement dst= leftToRight ? getRight() : getLeft();

-				ITypedElement src= leftToRight ? getLeft() : getRight();

-				dst= ((IEditableContent)dstParent).replace(dst, src);

-				if (leftToRight)

-					setRight(dst);

-				else

-					setLeft(dst);

-				setKind(Differencer.NO_CHANGE);

-				

-				fireChange();

-			}

-		}

-	}

-	

-	/* (non Javadoc)

-	 * see Object.hashCode

-	 */

-	public int hashCode() {

-		String[] path= getPath(this, 0);

-		int hashCode= 1;

-		for (int i= 0; i < path.length; i++) {

-	    	String s= path[i];

-	   	 	hashCode= (31*hashCode) + (s != null ? s.hashCode() : 0);

-		}

-		return hashCode;

-	}

-	

-	/* (non Javadoc)

-	 * see Object.equals

-	 */

-	public boolean equals(Object other) {

-		if (other != null && getClass() == other.getClass()) {

-			String[] path1= getPath(this, 0);

-			String[] path2= getPath((DiffNode) other, 0);

-			if (path1.length != path2.length)

-				return false;

-			for (int i= 0; i < path1.length; i++)

-				if (! path1[i].equals(path2[i]))

-					return false;

-			return true;

-		}

-		return super.equals(other);

-	}

-	

-	private static String[] getPath(ITypedElement el, int level) {

-		String[] path= null;

-		if (el instanceof IDiffContainer) {

-			IDiffContainer parent= ((IDiffContainer)el).getParent();

-			if (parent instanceof ITypedElement)

-				path= getPath((ITypedElement)parent, level+1);

-		}

-		if (path == null)

-			path= new String[level+1];

-		path[(path.length-1)-level]= el.getName();

-		return path;

-	}

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java
deleted file mode 100644
index d5930d8..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java
+++ /dev/null
@@ -1,675 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.util.Iterator;

-import java.util.ResourceBundle;

-

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.DisposeEvent;

-import org.eclipse.swt.events.FocusListener;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.util.*;

-import org.eclipse.jface.action.*;

-import org.eclipse.jface.viewers.*;

-import org.eclipse.jface.preference.IPreferenceStore;

-

-import org.eclipse.compare.internal.*;

-import org.eclipse.compare.*;

-

-/**

- * A tree viewer that works on objects implementing

- * the <code>IDiffContainer</code> and <code>IDiffElement</code> interfaces.

- * <p>

- * This class may be instantiated; it is not intended to be subclassed outside

- * this package.

- * </p>

- *

- * @see IDiffContainer

- * @see IDiffElement

- */

-public class DiffTreeViewer extends TreeViewer {

-	

-	static class DiffViewerSorter extends ViewerSorter {

-	

-		public boolean isSorterProperty(Object element, Object property) {

-			return false;

-		}

-	

-		public int category(Object node) {

-			if (node instanceof DiffNode) {

-				Object o= ((DiffNode) node).getId();

-				if (o instanceof DocumentRangeNode)

-					return ((DocumentRangeNode) o).getTypeCode();

-			}

-			return 0;

-		}

-	}	

-

-	class DiffViewerContentProvider implements ITreeContentProvider {

-			

-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

-		}

-	

-		public boolean isDeleted(Object element) {

-			return false;

-		}

-			

-		public void dispose() {

-			inputChanged(DiffTreeViewer.this, getInput(), null);

-		}

-			

-		public Object getParent(Object element) {

-			if (element instanceof IDiffElement) 

-				return ((IDiffElement)element).getParent();

-			return null;

-		}

-		

-		public final boolean hasChildren(Object element) {

-			if (element instanceof IDiffContainer) 

-				return ((IDiffContainer)element).hasChildren();

-			return false;

-		}

-		

-		public final Object[] getChildren(Object element) {

-			if (element instanceof IDiffContainer)

-				return ((IDiffContainer)element).getChildren();

-			return new Object[0];

-		}

-		

-		public Object[] getElements(Object element) {

-			return getChildren(element);

-		}				

-	}

-	

-	/*

-	 * Takes care of swapping left and right if fLeftIsLocal

-	 * is true.

-	 */

-	class DiffViewerLabelProvider extends LabelProvider {

-		

-		public String getText(Object element) {

-			

-			if (element instanceof IDiffElement)

-				return ((IDiffElement)element).getName();

-						

-			return Utilities.getString(fBundle, "defaultLabel"); //$NON-NLS-1$

-		}

-	

-		public Image getImage(Object element) {

-			if (element instanceof IDiffElement) {

-				IDiffElement input= (IDiffElement) element;

-				

-				int kind= input.getKind();

-				if (fLeftIsLocal) {

-					switch (kind & Differencer.DIRECTION_MASK) {

-					case Differencer.LEFT:

-						kind= (kind &~ Differencer.LEFT) | Differencer.RIGHT;

-						break;

-					case Differencer.RIGHT:

-						kind= (kind &~ Differencer.RIGHT) | Differencer.LEFT;

-						break;

-					}

-				}

-				

-				return fCompareConfiguration.getImage(input.getImage(), kind);

-			}

-			return null;

-		}

-	}

-

-	static class FilterSame extends ViewerFilter {

-		public boolean select(Viewer viewer, Object parentElement, Object element) {

-			if (element instanceof IDiffElement)

-				return (((IDiffElement)element).getKind() & Differencer.PSEUDO_CONFLICT) == 0;

-			return true;

-		}

-		public boolean isFilterProperty(Object element, Object property) {

-			return false;

-		}

-	}

-	

-	private ResourceBundle fBundle;

-	private CompareConfiguration fCompareConfiguration;

-	/* package */ boolean fLeftIsLocal;

-	private ViewerFilter fViewerFilter;

-	private IPropertyChangeListener fPropertyChangeListener;

-	private IPropertyChangeListener fPreferenceChangeListener;

-

-	private Action fCopyLeftToRightAction;

-	private Action fCopyRightToLeftAction;

-	private Action fNextAction;

-	private Action fPreviousAction;

-	private Action fEmptyMenuAction;

-		

-	/**

-	 * Creates a new viewer for the given SWT tree control with the specified configuration.

-	 *

-	 * @param tree the tree control

-	 * @param configuration the configuration for this viewer

-	 */

-	public DiffTreeViewer(Tree tree, CompareConfiguration configuration) {

-		super(tree);

-		initialize(configuration);

-	}

-	

-	/**

-	 * Creates a new viewer under the given SWT parent and with the specified configuration.

-	 *

-	 * @param parent the SWT control under which to create the viewer

-	 * @param configuration the configuration for this viewer

-	 */

-	public DiffTreeViewer(Composite parent, CompareConfiguration configuration) {

-		super(new Tree(parent, SWT.MULTI));

-		initialize(configuration);

-	}

-	

-	private void initialize(CompareConfiguration configuration) {

-		

-		Control tree= getControl();

-		

-		CompareNavigator.hookNavigation(tree);

-

-		INavigatable nav= new INavigatable() {

-			public boolean gotoDifference(boolean next) {

-				return internalNavigate(next);

-			}

-		};

-		tree.setData(INavigatable.NAVIGATOR_PROPERTY, nav);

-		

-		fLeftIsLocal= Utilities.getBoolean(configuration, "LEFT_IS_LOCAL", false); //$NON-NLS-1$

-

-		tree.setData(CompareUI.COMPARE_VIEWER_TITLE, getTitle());

-

-		Composite parent= tree.getParent();

-		

-		fBundle= ResourceBundle.getBundle("org.eclipse.compare.structuremergeviewer.DiffTreeViewerResources"); //$NON-NLS-1$

-		

-		// register for notification with the CompareConfiguration 

-		fCompareConfiguration= configuration;

-		if (fCompareConfiguration != null) {

-			fPropertyChangeListener= new IPropertyChangeListener() {

-				public void propertyChange(PropertyChangeEvent event) {

-					DiffTreeViewer.this.propertyChange(event);

-				}

-			};

-			fCompareConfiguration.addPropertyChangeListener(fPropertyChangeListener);

-		}	

-		

-		// register for notification with the Compare plugin's PreferenceStore 

-		fPreferenceChangeListener= new IPropertyChangeListener() {

-			public void propertyChange(PropertyChangeEvent event) {

-				if (event.getProperty().equals(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS))

-					syncShowPseudoConflictFilter();			

-			}

-		};

-		IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-		if (ps != null)

-			ps.addPropertyChangeListener(fPreferenceChangeListener);

-			

-	

-		setContentProvider(new DiffViewerContentProvider());

-		setLabelProvider(new DiffViewerLabelProvider());

-		

-		addSelectionChangedListener(

-			new ISelectionChangedListener() {

-				public void selectionChanged(SelectionChangedEvent se) {

-					updateActions();

-				}

-			}

-		);

-						

-		syncShowPseudoConflictFilter();			

-				

-		setSorter(new DiffViewerSorter());

-		

-		ToolBarManager tbm= CompareViewerSwitchingPane.getToolBarManager(parent);

-		if (tbm != null) {

-			tbm.removeAll();

-			

-			tbm.add(new Separator("merge")); //$NON-NLS-1$

-			tbm.add(new Separator("modes")); //$NON-NLS-1$

-			tbm.add(new Separator("navigation")); //$NON-NLS-1$

-			

-			createToolItems(tbm);

-			updateActions();

-			

-			tbm.update(true);

-		}

-		

-		MenuManager mm= new MenuManager();

-		mm.setRemoveAllWhenShown(true);

-		mm.addMenuListener(

-			new IMenuListener() {

-				public void menuAboutToShow(IMenuManager mm) {

-					fillContextMenu(mm);

-					if (mm.isEmpty()) {

-						if (fEmptyMenuAction == null) {

-							fEmptyMenuAction=

-								new Action(Utilities.getString(fBundle, "emptyMenuItem")) {};	//$NON-NLS-1$

-							fEmptyMenuAction.setEnabled(false);

-						}

-						mm.add(fEmptyMenuAction);

-					}

-				}

-			}

-		);

-		tree.setMenu(mm.createContextMenu(tree));

-	}

-			

-	/**

-	 * Returns the viewer's name.

-	 *

-	 * @return the viewer's name

-	 */

-	public String getTitle() {

-		String title= Utilities.getString(fBundle, "title", null); //$NON-NLS-1$

-		if (title == null)

-			title= Utilities.getString("DiffTreeViewer.title"); //$NON-NLS-1$

-		return title;

-	}

-	

-	/**

-	 * Returns the resource bundle.

-	 *

-	 * @return the viewer's resource bundle

-	 */

-	protected ResourceBundle getBundle() {

-		return fBundle;

-	}

-

-	/**

-	 * Returns the compare configuration of this viewer.

-	 *

-	 * @return the compare configuration of this viewer

-	 */

-	public CompareConfiguration getCompareConfiguration() {

-		return fCompareConfiguration;

-	}

-			

-	/**

-	 * 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 (fPreferenceChangeListener != null) {

-			IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-			if (ps != null)

-				ps.removePropertyChangeListener(fPreferenceChangeListener);

-			fPreferenceChangeListener= null;

-		}

-				

-		if (fCompareConfiguration != null) {

-			if (fPropertyChangeListener != null)

-				fCompareConfiguration.removePropertyChangeListener(fPropertyChangeListener);

-			fCompareConfiguration= null;

-		}

-		fPropertyChangeListener= null;

-		

-		super.handleDispose(event);

-	}

-	

-	/**

-	 * Tracks property changes of the configuration object.

-	 * Clients may extend to track their own property changes.

-	 */

-	protected void propertyChange(PropertyChangeEvent event) {

-	}

-	

-	protected void inputChanged(Object in, Object oldInput) {

-		super.inputChanged(in, oldInput);

-		

-		if (in != oldInput) {

-			initialSelection();

-			updateActions();

-		}

-	}

-	

-	/**

-	 * This hook method is called from within <code>inputChanged</code>

-	 * after a new input has been set but before any controls are updated.

-	 * This default implementation calls <code>navigate(true)<code>

-	 * to select and expand the first leaf node.

-	 * Clients can override this method and are free to decide whether

-	 * they want to call the inherited method.

-	 */

-	protected void initialSelection() {

-		navigate(true);

-	}

-

-	/**

-	 * Overridden to avoid expanding <code>DiffNode</code>s that shouldn't expand

-	 * (i.e. where the <code>dontExpand</code> method returns <code>true</code>).

-	 */

-	protected void internalExpandToLevel(Widget node, int level) {

-				

-		Object data= node.getData();

-		

-		if (dontExpand(data))

-			return;

-		

-		super.internalExpandToLevel(node, level);

-	}

-	

-	protected boolean dontExpand(Object o) {

-		return o instanceof DiffNode && ((DiffNode)o).dontExpand();

-	}

-	

-	//---- merge action support

-

-	/**

-	 * This factory method is called after the viewer's controls have been created.

-	 * It installs four actions in the given <code>ToolBarManager</code>. Two actions

-	 * allow for copying one side of a <code>DiffNode</code> to the other side.

-	 * Two other actions are for navigating from one node to the next (previous).

-	 * <p>

-	 * Clients can override this method and are free to decide whether they want to call

-	 * the inherited method.

-	 *

-	 * @param toolbarManager the toolbar manager for which to add the actions

-	 */

-	protected void createToolItems(ToolBarManager toolbarManager) {

-		

-//		fCopyLeftToRightAction= new Action() {

-//			public void run() {

-//				copySelected(true);

-//			}

-//		};

-//		Utilities.initAction(fCopyLeftToRightAction, fBundle, "action.TakeLeft.");

-//		toolbarManager.appendToGroup("merge", fCopyLeftToRightAction);

-

-//		fCopyRightToLeftAction= new Action() {

-//			public void run() {

-//				copySelected(false);

-//			}

-//		};

-//		Utilities.initAction(fCopyRightToLeftAction, fBundle, "action.TakeRight.");

-//		toolbarManager.appendToGroup("merge", fCopyRightToLeftAction);

-		

-		fNextAction= new Action() {

-			public void run() {

-				navigate(true);

-			}

-		};

-		Utilities.initAction(fNextAction, fBundle, "action.NextDiff."); //$NON-NLS-1$

-		toolbarManager.appendToGroup("navigation", fNextAction); //$NON-NLS-1$

-

-		fPreviousAction= new Action() {

-			public void run() {

-				navigate(false);

-			}

-		};

-		Utilities.initAction(fPreviousAction, fBundle, "action.PrevDiff."); //$NON-NLS-1$

-		toolbarManager.appendToGroup("navigation", fPreviousAction); //$NON-NLS-1$

-	}

-	

-	/**

-	 * This method is called to add actions to the viewer's context menu.

-	 * It installs actions for copying one side of a <code>DiffNode</code> to the other side.

-	 * Clients can override this method and are free to decide whether they want to call

-	 * the inherited method.

-	 *

-	 * @param manager the menu manager for which to add the actions

-	 */

-	protected void fillContextMenu(IMenuManager manager) {

-		if (fCopyLeftToRightAction != null)

-			manager.add(fCopyLeftToRightAction);

-		if (fCopyRightToLeftAction != null)

-			manager.add(fCopyRightToLeftAction);

-	}

-

-	/**

-	 * Copies one side of all <code>DiffNode</code>s in the current selection to the other side.

-	 * Called from the (internal) actions for copying the sides of a <code>DiffNode</code>.

-	 * Clients may override. 

-	 * 

-	 * @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

-	 */

-	protected void copySelected(boolean leftToRight) {

-		ISelection selection= getSelection();

-		if (selection instanceof IStructuredSelection) {

-			Iterator e= ((IStructuredSelection) selection).iterator();

-			while (e.hasNext()) {

-				Object element= e.next();

-				if (element instanceof ICompareInput)

-					copyOne((ICompareInput) element, leftToRight);

-			}

-		}

-	}

-	

-	/**

-	 * Called to copy one side of the given node to the other.

-	 * This default implementation delegates the call to <code>ICompareInput.copy(...)</code>.

-	 * Clients may override. 

-	 * 

-	 * @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

-	 */

-	protected void copyOne(ICompareInput node, boolean leftToRight) {

-		

-		node.copy(leftToRight);

-		

-		// update node's image

-		update(new Object[] { node }, null);

-	}

-	

-	/**

-	 * Selects the next (or previous) node of the current selection.

-	 * If there is no current selection the first (last) node in the tree is selected.

-	 * Wraps around at end or beginning.

-	 * Clients may override. 

-	 *

-	 * @param next if <code>true</code> the next node is selected, otherwise the previous node

-	 */

-	protected void navigate(boolean next) {	

-		internalNavigate(next);

-	}

-	

-	//---- private

-	

-	/**

-	 * Selects the next (or previous) node of the current selection.

-	 * If there is no current selection the first (last) node in the tree is selected.

-	 * Wraps around at end or beginning.

-	 * Clients may override. 

-	 *

-	 * @param next if <code>true</code> the next node is selected, otherwise the previous node

-	 * @return <code>true</code> if at end (or beginning)

-	 */

-	private boolean internalNavigate(boolean next) {

-		

-		Control c= getControl();

-		if (!(c instanceof Tree))

-			return false;

-			

-		Tree tree= (Tree) c;

-		TreeItem item= null;

-		TreeItem children[]= tree.getSelection();

-		if (children != null && children.length > 0)

-			item= children[0];

-		if (item == null) {

-			children= tree.getItems();

-			if (children != null && children.length > 0) {

-				item= children[0];

-				if (item != null && item.getItemCount() <= 0) {

-					internalSetSelection(item);

-					return false;

-				}

-			}

-		}

-			

-		while (true) {

-			item= findNextPrev(item, next);

-			if (item == null)

-				break;

-			if (item.getItemCount() <= 0)

-				break;

-		}

-		

-		if (item != null) {

-			internalSetSelection(item);

-			return false;

-		}

-		return true;

-	}

-

-	private TreeItem findNextPrev(TreeItem item, boolean next) {

-		

-		if (item == null)

-			return null;

-		

-		TreeItem children[]= null;

-

-		if (!next) {

-		

-			TreeItem parent= item.getParentItem();

-			if (parent != null)

-				children= parent.getItems();

-			else

-				children= item.getParent().getItems();

-			

-			if (children != null && children.length > 0) {

-				// goto previous child

-				int index= 0;

-				for (; index < children.length; index++)

-					if (children[index] == item)

-						break;

-				

-				if (index > 0) {

-					

-					item= children[index-1];

-					

-					while (true) {

-						createChildren(item);

-						int n= item.getItemCount();

-						if (n <= 0)

-							break;

-							

-						item.setExpanded(true);

-						item= item.getItems()[n-1];

-					}

-

-					// previous

-					return item;

-				}

-			}

-			

-			// go up

-			return parent;

-					

-		} else {

-			item.setExpanded(true);

-			createChildren(item);

-			

-			if (item.getItemCount() > 0) {

-				// has children: go down

-				children= item.getItems();

-				return children[0];

-			}

-			

-			while (item != null) {

-				children= null;

-				TreeItem parent= item.getParentItem();

-				if (parent != null)

-					children= parent.getItems();

-				else

-					children= item.getParent().getItems();

-				

-				if (children != null && children.length > 0) {

-					// goto next child

-					int index= 0;

-					for (; index < children.length; index++)

-						if (children[index] == item)

-							break;

-					

-					if (index < children.length-1) {

-						// next

-						return children[index+1];

-					}

-				}

-				

-				// go up

-				item= parent;

-			}

-		}

-				

-		return item;

-	}

-	

-	private void internalSetSelection(TreeItem ti) {

-		if (ti != null) {

-			Object data= ti.getData();

-			if (data != null)

-				setSelection(new StructuredSelection(data), true);

-		}

-	}

-	

-	private void syncShowPseudoConflictFilter() {

-		

-		IPreferenceStore ps= CompareUIPlugin.getDefault().getPreferenceStore();

-		boolean showPseudoConflicts= ps.getBoolean(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS);

-		

-		Control tree= getControl();

-		if (!tree.isDisposed()) {

-			if (showPseudoConflicts) {

-				if (fViewerFilter != null) {

-					removeFilter(fViewerFilter);

-				}

-			} else {

-				if (fViewerFilter == null)

-					fViewerFilter= new FilterSame();	

-				addFilter(fViewerFilter);

-			}

-		}

-	}

-		

-	private final boolean isEditable(Object element, boolean left) {

-		if (element instanceof ICompareInput) {

-			ICompareInput diff= (ICompareInput) element;

-			Object side= left ? diff.getLeft() : diff.getRight();

-			if (side == null && diff instanceof IDiffElement) {

-				IDiffContainer container= ((IDiffElement)diff).getParent();

-				if (container instanceof ICompareInput) {

-					ICompareInput parent= (ICompareInput) container;

-					side= left ? parent.getLeft() : parent.getRight();

-				}

-			}

-			if (side instanceof IEditableContent)

-				return ((IEditableContent) side).isEditable();

-		}

-		return false;

-	}

-		

-	private void updateActions() {

-		int leftToRight= 0;

-		int rightToLeft= 0;

-		ISelection selection= getSelection();

-		if (selection instanceof IStructuredSelection) {

-			IStructuredSelection ss= (IStructuredSelection) selection;

-			Iterator e= ss.iterator();

-			while (e.hasNext()) {

-				Object element= e.next();

-				if (element instanceof ICompareInput) {

-					if (isEditable(element, false))

-						leftToRight++;

-					if (isEditable(element, true))

-						rightToLeft++;

-					if (leftToRight > 0 && rightToLeft > 0)

-						break;

-				}

-			}

-		}

-		if (fCopyLeftToRightAction != null)

-			fCopyLeftToRightAction.setEnabled(leftToRight > 0);

-		if (fCopyRightToLeftAction != null)

-			fCopyRightToLeftAction.setEnabled(rightToLeft > 0);

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties
deleted file mode 100644
index 9a91be4..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties
+++ /dev/null
@@ -1,41 +0,0 @@
-# =====================================

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-# =====================================

-

-# @(#)DiffTreeViewerResources.properties

-#

-# Resource strings for DiffTreeViewer.java

-

-title= Structure Compare

-defaultLabel= <no name>

-

-#####################################################

-# Dummy menu item for empty context menu

-#####################################################

-

-emptyMenuItem= <Empty Menu>

-

-#####################################################

-# Actions

-#####################################################

-

-action.Smart.label=Smart

-action.Smart.tooltip=Try to Guess Corresponding Elements

-action.Smart.image=smartmode_co.gif

-

-action.NextDiff.label=Next

-action.NextDiff.tooltip=Select Next Change

-action.NextDiff.image=next_nav.gif

-

-action.PrevDiff.label=Previous

-action.PrevDiff.tooltip=Select Previous Change

-action.PrevDiff.image=prev_nav.gif

-

-action.TakeLeft.label=Copy Left to Right

-action.TakeLeft.tooltip=Copy Selected Nodes from Left to Right

-action.TakeLeft.image=copycont_r_co.gif

-

-action.TakeRight.label=Copy Right to Left

-action.TakeRight.tooltip=Copy selected Nodes from Right to Left

-action.TakeRight.image=copycont_l_co.gif

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java
deleted file mode 100644
index e8c8ab3..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java
+++ /dev/null
@@ -1,515 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.io.*;

-import java.util.*;

-import java.text.MessageFormat;

-

-import org.eclipse.jface.util.Assert;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.OperationCanceledException;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.Utilities;

-

-

-/**

- * A generic two-way or three-way differencing engine.

- * <p>

- * The engine is used by calling one of the <code>findDifferences</code> methods and passing

- * in the objects to compare.

- * The engine calls the following methods on the input objects to perform the compare:

- * <UL>

- * <LI><code>getChildren</code>: for enumerating the children of an object (if any),

- * <LI><code>contentsEqual</code>: for comparing the content of leaf objects, that is, objects without children,

- * <LI><code>visit</code>: for every pair of compared object the compare result is passed in.

- * </UL>

- * Clients may use as is, or subclass to provide a custom implementation for the three hooks. 

- * However the default implementation already deals with the typical case:

- * <UL>

- * <LI><code>getChildren</code>: tries to apply the <code>IStructureComparator</code>

- * 	interface to enumerate the children,

- * <LI><code>contentsEqual</code>: tries to apply the <code>IStreamContentAccessor</code> interface

- *	to perform a byte-wise content comparison,

- * <LI><code>visit</code>: creates a <code>DiffNode</code> for any detected difference between the compared objects and

- *	links it under a parent node effectively creating a tree of differences.

- * </UL>

- * The different kind of changes detected by the engine are decoded as follows:

- * In the two-way case only NO_CHANGE, ADDITION, DELETION, and CHANGE are used.

- * In the three-way case these constants are bitwise ORed with one of directional constants

- * LEFT, RIGHT, and CONFLICTING.

- */

-public class Differencer {

-	

-	// The kind of differences.

-	/**

-	 * Difference constant (value 0) indicating no difference.

-	 */

-	public static final int NO_CHANGE= 0;

-	/**

-	 * Difference constant (value 1) indicating one side was added.

-	 */

-	public static final int ADDITION= 1;

-	/**

-	 * Difference constant (value 2) indicating one side was removed.

-	 */

-	public static final int DELETION= 2;

-	/**

-	 * Difference constant (value 3) indicating side changed.

-	 */

-	public static final int CHANGE= 3;

-

-	/**

-	 * Bit mask (value 3) for extracting the kind of difference.

-	 */

-	public static final int CHANGE_TYPE_MASK= 3;

-

-	// The direction of a three-way change.

-	/**

-	 * Three-way change constant (value 4) indicating a change on left side.

-	 */

-	public static final int LEFT= 4;

-	

-	/**

-	 * Three-way change constant (value 8) indicating a change on right side.

-	 */

-	public static final int RIGHT= 8;

-	

-	/**

-	 * Three-way change constant (value 12) indicating a change on left and

-	 * right sides.

-	 */

-	public static final int CONFLICTING= 12;

-

-	/**

-	 * Bit mask (value 12) for extracting the direction of a three-way change.

-	 */

-	public static final int DIRECTION_MASK= 12;

-

-	/**

-	 * Constant (value 16) indicating a change on left and 

-	 * right side (with respect to ancestor) but left and right are identical.

-	 */

-	public static final int PSEUDO_CONFLICT= 16;

-

-	

-	static class Node {

-		List fChildren;

-		int fCode;

-		Object fAncestor;

-		Object fLeft;

-		Object fRight;

-		

-		Node() {

-		}

-		Node(Node parent, Object ancestor, Object left, Object right) {

-			parent.add(this);

-			fAncestor= ancestor;

-			fLeft= left;

-			fRight= right;

-		}

-		void add(Node child) {

-			if (fChildren == null)

-				fChildren= new ArrayList();

-			fChildren.add(child);

-		}

-		Object visit(Differencer d, Object parent, int level) {

-			if (fCode == NO_CHANGE)

-				return null;

-			//dump(level);

-			Object data= d.visit(parent, fCode, fAncestor, fLeft, fRight);

-			if (fChildren != null) {

-				Iterator i= fChildren.iterator();

-				while (i.hasNext()) {

-					Node n= (Node) i.next();

-					n.visit(d, data, level+1);

-				}

-			}

-			return data;

-		}

-		private void dump(int level) {

-			String name= null;

-			if (fAncestor instanceof ITypedElement)

-				name= ((ITypedElement)fAncestor).getName();

-			if (name == null && fLeft instanceof ITypedElement)

-				name= ((ITypedElement)fLeft).getName();

-			if (name == null && fRight instanceof ITypedElement)

-				name= ((ITypedElement)fRight).getName();

-			if (name == null)

-				name= "???"; //$NON-NLS-1$

-			

-			for (int i= 0; i < level; i++)

-				System.out.print("  "); //$NON-NLS-1$

-			

-			System.out.println(getDiffType(fCode) + name);

-		}

-		private String getDiffType(int code) {

-			String dir= " "; //$NON-NLS-1$

-			switch (code & DIRECTION_MASK) {

-			case LEFT:

-				dir= ">"; //$NON-NLS-1$

-				break;

-			case RIGHT:

-				dir= "<"; //$NON-NLS-1$

-				break;

-			case CONFLICTING:

-				dir= "!"; //$NON-NLS-1$

-				break;

-			}

-			String change= "="; //$NON-NLS-1$

-			switch (code & CHANGE_TYPE_MASK) {

-			case ADDITION:

-				change= "+"; //$NON-NLS-1$

-				break;

-			case DELETION:

-				change= "-"; //$NON-NLS-1$

-				break;

-			case CHANGE:

-				change= "#"; //$NON-NLS-1$

-				break;

-			}

-			return dir + change + " "; //$NON-NLS-1$

-		}

-	} 

-	

-	/**

-	 * Creates a new differencing engine.

-	 */

-	public Differencer() {

-	}

-	

-	/**

-	 * Starts the differencing engine on the three input objects. If threeWay is <code>true</code> a 

-	 * three-way comparison is performed, otherwise a two-way compare (in the latter case the ancestor argument is ignored).

-	 * The progress monitor is passed to the method <code>updateProgress</code> which is called for every node or

-	 * leaf compare. The method returns the object that was returned from the top-most call to method <code>visit</code>.

-	 * At most two of the ancestor, left, and right parameters are allowed to be <code>null</code>.

-	 *

-	 * @param threeWay if <code>true</code> a three-way comparison is performed, otherwise a two-way compare

-	 * @param pm a progress monitor which is passed to method <code>updateProgress</code>

-	 * @param data a client data that is passed to the top-level call to <code>visit</code>

-	 * @param ancestor the ancestor object of the compare (may be <code>null</code>)

-	 * @param left the left object of the compare 

-	 * @param right the right object of the compare

-	 * @return the object returned from the top most call to method <code>visit</code>,

-	 *   possibly <code>null</code>

-	 */

-	public Object findDifferences(boolean threeWay, IProgressMonitor pm, Object data, Object ancestor, Object left, Object right) {

-		

-		Node root= new Node();

-		

-		int code= traverse(threeWay, root, pm, threeWay ? ancestor : null, left, right);

-				

-		if (code != NO_CHANGE) {

-			List l= root.fChildren;

-			if (l.size() > 0) {

-				Node first= (Node)l.get(0);

-				return first.visit(this, data, 0);

-			}

-		}

-		return null;

-	}

-	

-	/**

-	 * Traverse tree in postorder.

-	 */

-	private int traverse(boolean threeWay, Node parent, IProgressMonitor pm, Object ancestor, Object left, Object right) {

-				

-		Object[] ancestorChildren= getChildren(ancestor);

-		Object[] rightChildren= getChildren(right);

-		Object[] leftChildren= getChildren(left);

-		

-		int code= NO_CHANGE;

-		

-		Node node= new Node(parent, ancestor, left, right);

-			

-		boolean content= true;	// we reset this if we have at least one child

-		

-		if (((threeWay && ancestorChildren != null) || !threeWay)

-					 && rightChildren != null && leftChildren != null) {

-			// we only recurse down if no leg is null

-			// a node

-			

-			Set allSet= new HashSet(20);

-			Map ancestorSet= null;

-			Map rightSet= null;

-			Map leftSet= null;

-						

-			if (ancestorChildren != null) {

-				ancestorSet= new HashMap(10);

-				for (int i= 0; i < ancestorChildren.length; i++) {

-					Object ancestorChild= ancestorChildren[i];

-					ancestorSet.put(ancestorChild, ancestorChild);

-					allSet.add(ancestorChild);

-				}

-			}

-

-			if (rightChildren != null) {

-				rightSet= new HashMap(10);

-				for (int i= 0; i < rightChildren.length; i++) {

-					Object rightChild= rightChildren[i];

-					rightSet.put(rightChild, rightChild);

-					allSet.add(rightChild);

-				}

-			}

-

-			if (leftChildren != null) {

-				leftSet= new HashMap(10);

-				for (int i= 0; i < leftChildren.length; i++) {

-					Object leftChild= leftChildren[i];

-					leftSet.put(leftChild, leftChild);

-					allSet.add(leftChild);

-				}

-			}

-						

-			Iterator e= allSet.iterator();

-			while (e.hasNext()) {

-				Object keyChild= e.next();

-				

-				content= false;

-				

-				if (pm != null) {

-					

-					if (pm.isCanceled())

-						throw new OperationCanceledException();

-						

-					updateProgress(pm, keyChild);

-				}

-				

-				Object ancestorChild= ancestorSet != null ? ancestorSet.get(keyChild) : null;

-				Object leftChild= leftSet != null ? leftSet.get(keyChild) : null;

-				Object rightChild= rightSet != null ? rightSet.get(keyChild) : null;

-				

-				int c= traverse(threeWay, node, pm, ancestorChild, leftChild, rightChild);

-			

-				if ((c & CHANGE_TYPE_MASK) != NO_CHANGE) {

-					code|= CHANGE;	// deletions and additions of child result in a change of the container

-					code|= (c & DIRECTION_MASK);	// incoming & outgoing are just ored

-				}

-			}

-		}

-

-		if (content)			// a leaf

-			code= compare(threeWay, ancestor, left, right);

-								

-		node.fCode= code;

-							

-		return code;

-	}

-	

-	/**

-	 * Called for every node or leaf comparison.

-	 * The differencing engine passes in the input objects of the compare and the result of the compare.

-	 * The data object is the value returned from a call to the <code>visit</code> method on the parent input.

-	 * It can be considered the "parent" reference and is useful when building a tree.

-	 * <p>

-	 * The <code>Differencer</code> implementation returns a new

-	 * <code>DiffNode</code> which is initialized with the corresponding values.

-	 * Subclasses may override.

-	 *

-	 * @param data object returned from parent call to <code>visit</code>,

-	 *   possibly <code>null</code>

-	 * @param result the result of the compare operation performed on the three inputs

-	 * @param ancestor the compare ancestor of the left and right inputs

-	 * @param left the left input to the compare

-	 * @param right the right input to the compare

-	 * @return the result, possibly <code>null</code>

-	 */

-	protected Object visit(Object data, int result, Object ancestor, Object left, Object right) {

-		return new DiffNode((IDiffContainer) data, result, (ITypedElement)ancestor, (ITypedElement)left, (ITypedElement)right);

-	}

-	

-	/**

-	 * Performs a 2-way or 3-way compare of the given leaf elements and returns an integer

-	 * describing the kind of difference.

-	 */

-	private int compare(boolean threeway, Object ancestor, Object left, Object right) {

-		

-		int description= NO_CHANGE;

-		

-		if (threeway) {

-			if (ancestor == null) {

-				if (left == null) {

-					if (right == null) {

-						Assert.isTrue(false);

-						// shouldn't happen

-					} else {

-						description= RIGHT | ADDITION;

-					}

-				} else {

-					if (right == null) {

-						description= LEFT | ADDITION;

-					} else {

-						description= CONFLICTING | ADDITION;

-						if (contentsEqual(left, right))

-							description|= PSEUDO_CONFLICT;

-					}

-				}

-			} else {

-				if (left == null) {

-					if (right == null) {

-						description= CONFLICTING | DELETION | PSEUDO_CONFLICT;

-					} else {

-						if (contentsEqual(ancestor, right))		

-							description= LEFT | DELETION;

-						else

-							description= CONFLICTING | CHANGE;	

-					}

-				} else {

-					if (right == null) {

-						if (contentsEqual(ancestor, left))	

-							description= RIGHT | DELETION;

-						else

-							description= CONFLICTING | CHANGE;	

-					} else {

-						boolean ay= contentsEqual(ancestor, left);

-						boolean am= contentsEqual(ancestor, right);

-						

-						if (ay && am)

-							;

-						else if (ay && !am) {

-							description= RIGHT | CHANGE;

-						} else if (!ay && am) {

-							description= LEFT | CHANGE;

-						} else {

-							description= CONFLICTING | CHANGE;

-							if (contentsEqual(left, right))

-								description|= PSEUDO_CONFLICT;

-						}

-					}

-				}

-			}

-		} else {	// two way compare ignores ancestor

-			if (left == null) {

-				if (right == null) {

-					Assert.isTrue(false);

-					// shouldn't happen

-				} else {

-					description= ADDITION;

-				}

-			} else {

-				if (right == null) {

-					description= DELETION;

-				} else {

-					if (! contentsEqual(left, right))

-						description= CHANGE;

-				}

-			}

-		}

-							

-		return description;

-	}

-		

-	/**

-	 * Performs a content compare on the two given inputs.

-	 * <p>

-	 * The <code>Differencer</code> implementation

-	 * returns <code>true</code> if both inputs implement <code>IStreamContentAccessor</code>

-	 * and their byte contents is identical. Subclasses may override to implement 

-	 * a different content compare on the given inputs.

-	 * </p>

-	 *

-	 * @param input1 first input to contents compare

-	 * @param input2 second input to contents compare

-	 * @return <code>true</code> if content is equal

-	 */

-	protected boolean contentsEqual(Object input1, Object input2) {

-		

-		if (input1 == input2)

-			return true;

-			

-		InputStream is1= getStream(input1);

-		InputStream is2= getStream(input2);

-		

-		if (is1 == null && is2 == null)	// no byte contents

-			return true;

-		

-		try {

-			if (is1 == null || is2 == null)	// only one has contents

-				return false;

-			

-			while (true) {

-				int c1= is1.read();

-				int c2= is2.read();

-				if (c1 == -1 && c2 == -1)

-					return true;

-				if (c1 != c2)

-					break;

-				

-			}

-		} catch (IOException ex) {

-		} finally {

-			if (is1 != null) {

-				try {

-					is1.close();

-				} catch(IOException ex) {

-				}

-			}

-			if (is2 != null) {

-				try {

-					is2.close();

-				} catch(IOException ex) {

-				}

-			}

-		}

-		return false;

-	}

-	

-	/**

-	 * Tries to return an InputStream for the given object.

-	 * Returns <code>null</code> if the object not an IStreamContentAccessor

-	 * or an error occured.

-	 */

-	private InputStream getStream(Object o) {

-		if (o instanceof IStreamContentAccessor) {

-			try {

-				return ((IStreamContentAccessor)o).getContents();

-			} catch(CoreException ex) {

-			}

-		}

-		return null;

-	}

-	

-	/**

-	 * Returns the children of the given input or <code>null</code> if there are no children.

-	 * <p>

-	 * The <code>Differencer</code> implementation checks whether the input 

-	 * implements the <code>IStructureComparator</code> interface. If yes it is used

-	 * to return an array containing all children. Otherwise <code>null</code> is returned.

-	 * Subclasses may override to implement a different strategy to enumerate children.

-	 * </p>

-	 *

-	 * @param input the object for which to return children

-	 */

-	protected Object[] getChildren(Object input) {

-		if (input instanceof IStructureComparator)

-			return ((IStructureComparator)input).getChildren();

-		return null;

-	}

-	

-	/**

-	 * Called for every leaf or node compare to update progress information.

-	 * <p>

-	 * The <code>Differencer</code> implementation shows the name of the input object

-	 * as a subtask. Subclasses may override.

-	 * </p>

-	 *

-	 * @param progressMonitor the progress monitor for reporting progress

-	 * @name input a non-<code>null</code> input object

-	 */

-	protected void updateProgress(IProgressMonitor progressMonitor, Object node) {

-		if (node instanceof ITypedElement) {

-			String name= ((ITypedElement)node).getName();

-			String fmt= Utilities.getString("Differencer.progressFormat"); //$NON-NLS-1$

-			String msg= MessageFormat.format(fmt, new String[] { name });

-			progressMonitor.subTask(msg);

-			//progressMonitor.worked(1);

-		}

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java
deleted file mode 100644
index a5c7b97..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java
+++ /dev/null
@@ -1,348 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.io.ByteArrayInputStream;

-import java.io.InputStream;

-import java.util.ArrayList;

-import java.util.Iterator;

-

-import org.eclipse.jface.text.*;

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.Utilities;

-import org.eclipse.compare.contentmergeviewer.IDocumentRange;

-

-

-/**

- * A document range node represents a structural element

- * when performing a structure compare of documents.

- * <code>DocumentRangeNodes</code> are created while parsing the document and represent

- * a semantic entity (e.g. a Java class or method).

- * As a consequence of the parsing a <code>DocumentRangeNode</code> maps to a range

- * of characters in the document.

- * <p>

- * Since a <code>DocumentRangeNode</code> implements the <code>IStructureComparator</code>

- * and <code>IStreamContentAccessor</code> interfaces it can be used as input to the

- * differencing engine. This makes it possible to perform

- * a structural diff on a document and have the nodes and leaves of the compare easily map

- * to character ranges within the document.

- * <p>

- * Subclasses may add additional state collected while parsing the document.

- * </p> 

- * @see Differencer

- */

-public class DocumentRangeNode

-		implements IDocumentRange, IStructureComparator, IEditableContent, IStreamContentAccessor {

-

-	private static final boolean POS_UPDATE= true;

-	

-	private IDocument fBaseDocument;

-	private Position fRange; // the range in the base document

-	private int fTypeCode;

-	private String fID;

-	private Position fAppendPosition; // a position where to insert a child textually

-	private ArrayList fChildren;

-

-	/**

-	 * Creates a new <code>DocumentRangeNode</code> for the given range within the specified

-	 * document. The <code>typeCode</code> is uninterpreted client data. The ID is used when comparing

-	 * two nodes with each other: i.e. the differencing engine performs a content compare 

-	 * on two nodes if their IDs are equal.

-	 *

-	 * @param typeCode a type code for this node

-	 * @param id an identifier for this node

-	 * @param document document on which this node is based on

-	 * @param start start position of range within document

-	 * @param length length of range

-	 */

-	public DocumentRangeNode(int typeCode, String id, IDocument document, int start, int length) {

-		

-		fTypeCode= typeCode;

-		fID= id;

-		

-		fBaseDocument= document;

-		fRange= new Position(start, length);

-		

-		if (POS_UPDATE) {

-			try {

-				document.addPosition(fRange);

-			} catch (BadLocationException ex) {

-			}

-		}

-	}

-

-	/* (non Javadoc)

-	 * see IDocumentRange.getDocument

-	 */

-	public IDocument getDocument() {

-		return fBaseDocument;

-	}

-	

-	/* (non Javadoc)

-	 * see IDocumentRange.getRange

-	 */

-	public Position getRange() {

-		return fRange;

-	}

-	

-	/**

-	 * Returns the type code of this node.

-	 * The type code is uninterpreted client data which can be set in the constructor.

-	 *

-	 * @return the type code of this node

-	 */

-	public int getTypeCode() {

-		return fTypeCode;

-	}

-	

-	/**

-	 * Returns this node's id.

-	 * It is used in <code>equals</code> and <code>hashcode</code>.

-	 *

-	 * @return the node's id

-	 */

-	public String getId() {

-		return fID;

-	}

-

-	/**

-	 * Sets this node's id.

-	 * It is used in <code>equals</code> and <code>hashcode</code>.

-	 *

-	 * @param id the new id for this node

-	 */

-	public void setId(String id) {

-		fID= id;

-	}

-

-	/**

-	 * Adds the given node as a child.

-	 *

-	 * @param node the node to add as a child

-	 */

-	public void addChild(DocumentRangeNode node) {

-		if (fChildren == null)

-			fChildren= new ArrayList();

-		fChildren.add(node);

-	}

-

-	/* (non Javadoc)

-	 * see IStructureComparator.getChildren

-	 */

-	public Object[] getChildren() {

-		if (fChildren != null)

-			return fChildren.toArray(); 

-		return null;

-	}

-

-	/**

-	 * Sets the length of the range of this node.

-	 *

-	 * @param length the length of the range

-	 */

-	public void setLength(int length) {

-		getRange().setLength(length);

-	}

-

-	/**

-	 * Sets a position within the document range that can be used to (legally) insert

-	 * text without breaking the syntax of the document.

-	 * <p>

-	 * E.g. when parsing a Java document the "append position" of a <code>DocumentRangeNode</code>

-	 * representating a Java class could be the character position just before the closing bracket.

-	 * Inserting the text of a new method there would not disturb the syntax of the class.

-	 *

-	 * @param pos the character position within the underlying document where text can be legally inserted

-	 */

-	public void setAppendPosition(int pos) {

-		if (POS_UPDATE) {

-			fBaseDocument.removePosition(fAppendPosition);

-			try {

-				Position p= new Position(pos);

-				fBaseDocument.addPosition(p);

-				fAppendPosition= p;

-			} catch (BadLocationException ex) {

-				// ignore

-			}

-		} else {

-			fAppendPosition= new Position(pos);

-		}

-	}

-

-	/**

-	 * Returns the position that has been set with <code>setAppendPosition</code>.

-	 * If <code>setAppendPosition</code> hasn't been called, the position after the last character

-	 * of this range is returned.

-	 *

-	 * @return a position where text can be legally inserted

-	 */

-	public Position getAppendPosition() {

-		if (fAppendPosition == null) {

-			if (POS_UPDATE) {

-				try {

-					Position p= new Position(fBaseDocument.getLength());

-					fBaseDocument.addPosition(p);

-					fAppendPosition= p;

-				} catch (BadLocationException ex) {

-					// ignore

-				}

-			} else {

-				fAppendPosition= new Position(fBaseDocument.getLength());

-			}

-		}

-		return fAppendPosition;

-	}

-

-	/**

-	 * Implementation based on <code>getID</code>.

-	 */

-	public boolean equals(Object other) {

-		if (other != null && other.getClass() == getClass()) {

-			DocumentRangeNode tn= (DocumentRangeNode) other;

-			return fTypeCode == tn.fTypeCode && fID.equals(tn.fID);

-		}

-		return super.equals(other);

-	}

-

-	/**

-	 * Implementation based on <code>getID</code>.

-	 */

-	public int hashCode() {

-		return fID.hashCode();

-	}

-

-	/**

-	 * Find corresponding position

-	 */

-	private Position findCorrespondingPosition(DocumentRangeNode otherParent, DocumentRangeNode child) {

-

-		// we try to find a predecessor of left Node which exists on the right side

-

-		if (child != null && fChildren != null) {

-			int ix= otherParent.fChildren.indexOf(child);

-			if (ix >= 0) {

-

-				for (int i= ix - 1; i >= 0; i--) {

-					DocumentRangeNode c1= (DocumentRangeNode) otherParent.fChildren.get(i);

-					int i2= fChildren.indexOf(c1);

-					if (i2 >= 0) {

-						DocumentRangeNode c= (DocumentRangeNode) fChildren.get(i2);

-						//System.out.println("  found corresponding: " + i2 + " " + c);

-						Position p= c.fRange;

-

-						//try {

-						Position po= new Position(p.getOffset() + p.getLength() + 1, 0);

-						//c.fBaseDocument.addPosition(po);

-						return po;

-						//} catch (BadLocationException ex) {

-						//}

-						//break;

-					}

-				}

-

-				for (int i= ix; i < otherParent.fChildren.size(); i++) {

-					DocumentRangeNode c1= (DocumentRangeNode) otherParent.fChildren.get(i);

-					int i2= fChildren.indexOf(c1);

-					if (i2 >= 0) {

-						DocumentRangeNode c= (DocumentRangeNode) fChildren.get(i2);

-						//System.out.println("  found corresponding: " + i2 + " " + c);

-						Position p= c.fRange;

-						//try {

-						Position po= new Position(p.getOffset(), 0);

-						//c.fBaseDocument.addPosition(po);

-						return po;

-						//} catch (BadLocationException ex) {

-						//}

-						//break;

-					}

-				}

-

-			}

-		}

-		return getAppendPosition();

-	}

-

-	private void add(String s, DocumentRangeNode parent, DocumentRangeNode child) {

-

-		Position p= findCorrespondingPosition(parent, child);

-		if (p != null) {

-			try {

-				fBaseDocument.replace(p.getOffset(), p.getLength(), s);

-			} catch (BadLocationException ex) {

-				// ignore

-			}

-		}

-	}

-	

-	/* (non Javadoc)

-	 * see IStreamContentAccessor.getContents

-	 */

-	public InputStream getContents() {

-		String s;

-		try {

-			s= fBaseDocument.get(fRange.getOffset(), fRange.getLength());

-		} catch (BadLocationException ex) {

-			s= ""; //$NON-NLS-1$

-		}

-		return new ByteArrayInputStream(s.getBytes());

-	}

-

-	/* (non Javadoc)

-	 * see IEditableContent.isEditable

-	 */

-	public boolean isEditable() {

-		return true;

-	}

-		

-	/* (non Javadoc)

-	 * see IEditableContent.replace

-	 */

-	public ITypedElement replace(ITypedElement child, ITypedElement other) {

-

-		DocumentRangeNode src= null;

-		String srcContents= ""; //$NON-NLS-1$

-		

-		if (other != null) {

-			src= (DocumentRangeNode) child;

-			

-			if (other instanceof IStreamContentAccessor) {

-				try {

-					InputStream is= ((IStreamContentAccessor)other).getContents();

-					byte[] bytes= Utilities.readBytes(is);

-					srcContents= new String(bytes);

-				} catch(CoreException ex) {

-				}

-			}

-		}

-

-		if (child != null) { // there is a destination

-			

-//			if (child instanceof DocumentRangeNode) {

-//				DocumentRangeNode drn= (DocumentRangeNode) child;

-//

-//				IDocument doc= drn.getDocument();

-//				Position range= drn.getRange();

-//				try {

-//					doc.replace(range.getOffset(), range.getLength(), srcContents);

-//				} catch (BadLocationException ex) {

-//				}

-//			}

-		} else {

-			// no destination: we have to add the contents into the parent

-			add(srcContents, null /*srcParentNode*/, src);

-		}

-		return child;

-	}

-	

-	/* (non Javadoc)

-	 * see IEditableContent.setContent

-	 */

-	public void setContent(byte[] content) {

-//		fBaseDocument.set(new String(content));

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java
deleted file mode 100644
index badc216..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.swt.graphics.Image;

-

-/**

- * Interface for objects used as input to a two-way or three-way compare viewer.

- * It defines API for accessing the three sides for the compare,

- * and a name and image which is used when displaying the three way input

- * in the UI, for example, in a title bar.

- * <p>

- * Note: at most two sides of an <code>ICompareInput</code> can be <code>null</code>,

- * (as it is normal for additions or deletions) but not all three.

- * <p>

- * <code>ICompareInput</code> provides methods for registering

- * <code>ICompareInputChangeListener</code>s

- * that get informed if one (or more)

- * of the three sides of an <code>ICompareInput</code> object changes its value.

- * <p>

- * For example when accepting an incoming addition

- * the (non-<code>null</code>) left side of an <code>ICompareInput</code>

- * is copied to the right side by means of method <code>copy</code>.

- * This should trigger a call to <code>compareInputChanged</code> of registered

- * <code>ICompareInputChangeListener</code>s. 

- * <p>

- * Clients can implement this interface, or use the convenience implementation 

- * <code>DiffNode</code>.

- * </p>

- * 

- * @see StructureDiffViewer

- * @see org.eclipse.compare.contentmergeviewer.ContentMergeViewer

- * @see DiffNode

- */

-public interface ICompareInput {

-

-	/**

-	 * Returns name of input.

-	 * This name is displayed when this input is shown in a viewer.

-	 * In many cases this name is the name of one of the non-<code>null</code> sides or a combination

-	 * thereof.

-	 *

-	 * @return name of input

-	 */

-	String getName();

-	

-	/**

-	 * Returns an image representing this input.

-	 * This image is typically displayed when this input is shown in a viewer.

-	 * In many cases this image is the image of one of the non-<code>null</code> sides.

-	 *

-	 * @return image representing this input, or <code>null</code> if no icon should be shown

-	 */

-	Image getImage();

-

-	/**

-	 * Returns the kind of difference between the

-	 * three sides ancestor, left and right.

-	 * This field is only meaningful if the <code>ICompareInput</code>

-	 * is the result of another compare. In this case it is used

-	 * together with <code>getImage</code> to compose a icon

-	 * which reflects the kind of difference between the two or three elements.

-	 *

-	 * @return kind of difference (see <code>Differencer</code>)

-	 */

-	int getKind();

-	

-	/**

-	 * Returns the ancestor side of this input.

-	 * Returns <code>null</code> if this input has no ancestor

-	 * or in the two-way compare case.

-	 *

-	 * @return the ancestor of this input, or <code>null</code>

-	 */

-	ITypedElement getAncestor();

-	

-	/**

-	 * Returns the left side of this input.

-	 * Returns <code>null</code> if there is no left side (deletion or addition).

-	 *

-	 * @return the left side of this input, or <code>null</code>

-	 */

-	ITypedElement getLeft();

-	

-	/**

-	 * Returns the right side of this input.

-	 * Returns <code>null</code> if there is no right side (deletion or addition).

-	 *

-	 * @return the right side of this input, or <code>null</code>

-	 */

-	ITypedElement getRight();

-	

-	/**

-	 * Registers the given listener for notification.

-	 * If the identical listener is already registered the method has no effect.

-	 *

-	 * @param listener the listener to register for changes of this input

-	 */

-	void addCompareInputChangeListener(ICompareInputChangeListener listener);

-	

-	/**

-	 * Unregisters the given listener.

-	 * If the identical listener is not registered the method has no effect.

-	 *

-	 * @param listener the listener to unregister

-	 */

-	void removeCompareInputChangeListener(ICompareInputChangeListener listener);

-	

-	/**

-	 * Copy one side (source) to the other side (destination) depending on the 

-	 * value of <code>leftToRight</code>. This method is called from

-	 * a merge viewer if a corresponding action ("take left" or "take right")

-	 * has been pressed.

-	 * <p>

-	 * The implementation should handle the following cases:

-	 * <UL>

-	 * <LI>

-	 * if the source side is <code>null</code> the destination must be deleted,

-	 * <LI>

-	 * if the destination is <code>null</code> the destination must be created

-	 * and filled with the contents from the source,

-	 * <LI>

-	 * if both sides are non-<code>null</code> the contents of source must be copied to destination.

-	 * </UL>

-	 * In addition the implementation should send out notification to the registered

-	 * <code>ICompareInputChangeListener</code>.

-	 * 

-	 * @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

-	 */

-	void copy(boolean leftToRight);

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java
deleted file mode 100644
index ba8d967..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-/**

- * Listener that gets informed if one (or more)

- * of the three sides of an <code>ICompareInput</code> object changes its value.

- * <p>

- * For example when accepting an incoming addition

- * the (non-null) left side of an <code>ICompareInput</code>

- * is copied to the right side (which was <code>null</code>).

- * This triggers a call to <code>compareInputChanged</code> of registered

- * <code>ICompareInputChangeListener</code>. 

- * <p>

- * Note however, that listener are not informed if the content of one of the sides changes.

- * <p>

- * Clients may implement this interface. It is also implemented by viewers that take 

- * an <code>ICompareInput</code> as input.

- * </p>

- */

-public interface ICompareInputChangeListener {

-	

-	/**

-	 * Called whenever the value (not the content) of one or more of the three sides 

- 	 * of a <code>ICompareInput</code> has changed.

-	 *

-	 * @param source the <code>ICompareInput</code> that has changed

-	 */

-	void compareInputChanged(ICompareInput source);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java
deleted file mode 100644
index c87f30c..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.util.Iterator;

-

-/**

- * <code>IDiffContainer</code> is a <code>IDiffElement</code> with children.

- * <p>

- * <code>IDiffContainer</code> are the inner nodes displayed

- * by the <code>DiffTreeViewer</code>.

- * <code>IDiffContainer</code> are typically created as the result of performing

- * a compare with the <code>Differencer</code>.

- * <p>

- * Clients may implement this interface, or use one of the standard implementations,

- * <code>DiffContainer</code> or <code>DiffNode</code>.

- *

- * @see Differencer

- * @see DiffTreeViewer

- */

-public interface IDiffContainer extends IDiffElement {

-

-	/**

-	 * Returns whether this container has at least one child.

-	 * In some cases this methods avoids having to call the

-	 * potential more costly <code>getChildren</code> method.

-	 * 

-	 * @return <code>true</code> if this container has at least one child 

-	 */

-	boolean hasChildren();

-

-	/**

-	 * Returns the children of this container.

-	 * If this container has no children an empty array is returned (not <code>null</code>).

-	 * 

-	 * @return the children of this container as an array

-	 */

-	IDiffElement[] getChildren();

-

-	/**

-	 * Adds the given child to this container.

-	 * If the child is already contained in this container, this method has no effect.

-	 *

-	 * @param child the child to be added to this container

-	 */

-	void add(IDiffElement child);

-	

-	/**

-	 * Removes the given child from this container.

-	 * If the container becomes empty it is removed from its container.

-	 * If the child is not contained in this container, this method has no effect.

-	 *

-	 * @param child the child to be removed from this container

-	 */

-	void removeToRoot(IDiffElement child);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java
deleted file mode 100644
index 32e858a..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.compare.ITypedElement;

-

-/**

- * An <code>IDiffElement</code> is used in the <code>DiffTreeViewer</code>

- * to display the kind of change detected as the result of a two-way or three-way compare.

- * <p>

- * The base interface <code>ITypedElement</code> provides a name, a type, and an image.

- * <code>IDiffElement</code> adds API for maintaining a parent relationship.

- * <p>

- * <code>DiffTreeViewer</code> works on a tree of <code>IDiffElements</code>.

- * Leaf elements must implement the

- * <code>IDiffElement</code> interface, inner nodes the <code>IDiffContainer</code> interface.

- * <p>

- * <code>IDiffElement</code>s are typically created as the result of performing

- * a compare with the <code>Differencer</code>.

- * <p>

- * Clients may implement this interface, or use one of the standard implementations,

- * <code>DiffElement</code>, <code>DiffContainer</code>, or <code>DiffNode</code>.

- *

- * @see DiffTreeViewer

- * @see DiffElement

- * @see DiffContainer

- * @see DiffNode

- */

-public interface IDiffElement extends ITypedElement {

-	

-	/**

-	 * Returns the kind of difference as defined in <code>Differencer</code>.

-	 *

-	 * @return the kind of difference as defined in <code>Differencer</code>

-	 */

-	int getKind();

-

-	/**

-	 * Returns the parent of this element.

-	 * If the object is the root of a hierarchy <code>null</code> is returned.

-	 *

-	 * @return the parent of this element, or <code>null</code> if the element has no parent

-	 */

-	IDiffContainer getParent();

-

-	/**

-	 * Sets the parent of this element.

-	 *

-	 * @param parent the new parent of this element, or <code>null</code> if this

-	 *   element is to have no parent

-	 */

-	void setParent(IDiffContainer parent);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java
deleted file mode 100644
index 6862653..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import java.util.Iterator;

-

-import org.eclipse.compare.ITypedElement;

-

-/**

- * Interface used to compare hierarchical structures.

- * It is used by the differencing engine.

- * <p>

- * Clients typically implement this interface in an adaptor class which 

- * wrappers the objects to be compared.

- *

- * @see org.eclipse.compare.ResourceNode

- * @see Differencer

- */

-public interface IStructureComparator {

-

-	/**

-	 * Returns an iterator for all children of this object or <code>null</code>

-	 * if there are no children.

-	 *

-	 * @return an array with all children of this object, or an empty array if there are no children

-	 */

-	Object[] getChildren();

-

-	/**

-	 * Returns whether some other object is "equal to" this one

-	 * with respect to a structural comparison. For example, when comparing

-	 * Java class methods, <code>equals</code> would return <code>true</code>

-	 * if two methods have the same signature (the argument names and the 

-	 * method body might differ).

-	 *

-	 * @param other the reference object with which to compare

-	 * @return <code>true</code> if this object is the same as the other argument; <code>false</code> otherwise

-	 * @see java.lang.Object#equals

-	 */

-	boolean equals(Object other);

-}

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java
deleted file mode 100644
index d3e9f3c..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.jface.text.IDocument;

-

-/**

- * For creating a hierarchical structure of <code>IStructureComparators</code> for a

- * given input object.

- * In addition, it provides methods for locating a path in the hierarchical structure

- * and to map a node of this structure back to the corresponding input object.

- * <p>

- * Structure creators are used in the following contexts:

- * <ul>

- * <li>

- * the <code>StructureDiffViewer</code> uses an <code>IStructureCreator</code> to

- * build two (or three) tree structures of its input elements (method <code>getStructure</code>).

- * These trees are then compared with each other by means of the differencing engine and displayed

- * with the <code>DiffTreeViewer</code>,

- * </li>

- * <li>

- * the <code>ReplaceWithEditionDialog</code> uses an <code>IStructureCreator</code>

- * to map a path back to a range of characters in the textual representation.

- * </li>

- * </ul>

- * A <code>IStructureCreator</code> provides methods for rewriting the tree produced by the differencing

- * engine to support "smart" structural differencing. E.g. certain patterns of pairs of "addition"

- * and "deletion" nodes can be detected as renames and merged into a single node.

- * </p>

- * <p>

- * Clients may implement this interface; there is no standard implementation.

- * </p>

- *

- * @see StructureDiffViewer

- * @see org.eclipse.compare.EditionSelectionDialog

- * @see Differencer

- */

-public interface IStructureCreator {

-

-	/**

-	 * Returns a descriptive name which can be used in the UI of the <code>StructureDiffViewer</code>.

-	 *

-	 * @return a descriptive name for this <code>IStructureCreator</code>

-	 */

-	String getName();

-

-	/**

-	 * Creates a tree structure consisting of <code>IStructureComparator</code>s

-	 * from the given object and returns its root object.

-	 * Implementing this method typically involves parsing the input object.

-	 * In case of an error (e.g. a parsing error) the value <code>null</code> is returned.

-	 *

-	 * @param input the object from which to create the tree of <code>IStructureComparator</code>

-	 * @return the root node of the structure or <code>null</code> in case of error

-	 */

-	IStructureComparator getStructure(Object input);

-

-	/**

-	 * Creates the single node specified by path from the given input object.

-	 * In case of an error (e.g. a parsing error) the value <code>null</code> is returned.

-	 * This method is similar to <code>getStructure</code> but in

-	 * contrast to <code>getStructure</code> only a single node without any children must be returned.

-	 * This method is used in the <code>ReplaceWithEditionDialog</code> to locate a sub element

-	 * (e.g. a method) within an input object (e.g. a file containing source code).

-	 * <p>

-	 * One (not optimized) approach to implement this method is calling <code>getStructure(input)</code>

-	 * to build the full tree, and then finding that node within the tree that is specified

-	 * by <code>path</code>.

-	 * <p>

-	 * The syntax of <code>path</code> is not specified, because it is treated by the compare subsystem

-	 * as an opaque entity and is not further interpreted. Clients using this functionality

-	 * will pass a value of <code>path</code> to the <code>selectEdition</code>

-	 * method of <code>ReplaceWithEditionDialog</code> and will receive this value unchanged

-	 * as an argument to <code>locate</code>.

-	 *

-	 * @param path specifies a sub object within the input object

-	 * @param input the object from which to create the <code>IStructureComparator</code>

-	 * @return the single node specified by <code>path</code> or <code>null</code>

-	 *

-	 * @see org.eclipse.compare.EditionSelectionDialog#selectEdition

-	 */

-	IStructureComparator locate(Object path, Object input);

-

-	/**

-	 * Returns the contents of the given node as a string for the purpose

-	 * of performing a content comparison only (that is the string will not be visible in the UI).

-	 * If <code>ignoreWhitespace</code> is <code>true</code> all character sequences considered

-	 * whitespace should be removed from the returned string.

-	 *

-	 * @param node the node for which to return a string representation

-	 * @param ignoreWhitespace if <code>true</code> the returned string should not contain whitespace

-	 * @return the string contents of the given node

-	 */

-	String getContents(Object node, boolean ignoreWhitespace);

-

-	/**

-	 * FIXME: need better name?

-	 * Called whenever a copy operation has been performed on a tree node.

-	 *

-	 * @param node the node for which to save the new content

-	 * @param input the object from which the structure tree was created in <code>getStructure</code>

-	 */

-	void save(IStructureComparator node, Object input);

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java
deleted file mode 100644
index 58f6065..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-package org.eclipse.compare.structuremergeviewer;

-

-import org.eclipse.swt.events.DisposeEvent;

-import org.eclipse.swt.widgets.*;

-

-import org.eclipse.jface.util.PropertyChangeEvent;

-

-import org.eclipse.compare.*;

-import org.eclipse.compare.internal.*;

-

-

-/**

- * A diff tree viewer that can be configured with a <code>IStructureCreator</code>

- * to retrieve a hierarchical structure from the input object (an <code>ICompareInput</code>)

- * and perform a two-way or three-way compare on it.

- * <p>

- * This <code>DiffTreeViewer</code> supports the so called "smart" mode of the structure creator

- * by installing a button in the viewer's pane title bar.

- * <p>

- * This class may be instantiated; it is not intended to be subclassed outside

- * this package.

- * </p>

- *

- * @see IStructureCreator

- * @see ICompareInput

- */

-public class StructureDiffViewer extends DiffTreeViewer {

-		

-	private Differencer fDifferencer;

-	private boolean fThreeWay= false;

-	

-	private ITypedElement fAncestorInput;

-	private ITypedElement fLeftInput;

-	private ITypedElement fRightInput;

-	

-	private IStructureComparator fAncestorStructure;

-	private IStructureComparator fLeftStructure;

-	private IStructureComparator fRightStructure;

-	

-	private IStructureCreator fStructureCreator;

-	private IDiffContainer fRoot;

-	private IContentChangeListener fContentChangedListener;

-	private ICompareInputChangeListener fThreeWayInputChangedListener;

-	private CompareViewerSwitchingPane fParent;

-		

-	/**

-	 * Creates a new viewer for the given SWT tree control with the specified configuration.

-	 *

-	 * @param tree the tree control

-	 * @param configuration the configuration for this viewer

-	 */

-	public StructureDiffViewer(Tree tree, CompareConfiguration configuration) {

-		super(tree, configuration);

-		Composite c= tree.getParent();

-		if (c instanceof CompareViewerSwitchingPane)

-			fParent= (CompareViewerSwitchingPane) c;

-		initialize();

-	}

-	

-	/**

-	 * Creates a new viewer under the given SWT parent with the specified configuration.

-	 *

-	 * @param parent the SWT control under which to create the viewer

-	 * @param configuration the configuration for this viewer

-	 */

-	public StructureDiffViewer(Composite parent, CompareConfiguration configuration) {

-		super(parent, configuration);

-		if (parent instanceof CompareViewerSwitchingPane)

-			fParent= (CompareViewerSwitchingPane) parent;

-		initialize();

-	}

-	

-	private void initialize() {

-		

-		setAutoExpandLevel(3);

-		

-		fContentChangedListener= new IContentChangeListener() {

-			public void contentChanged(IContentChangeNotifier changed) {

-				StructureDiffViewer.this.contentChanged(changed);

-			}

-		};

-		fThreeWayInputChangedListener= new ICompareInputChangeListener() {

-			public void compareInputChanged(ICompareInput input) {

-				StructureDiffViewer.this.compareInputChanged(input);

-			}

-		};

-	}

-	

-	/**

-	 * Configures the <code>StructureDiffViewer</code> with a structure creator.

-	 * The structure creator is used to create a hierarchical structure

-	 * for each side of the viewer's input element of type <code>ICompareInput</code>.

-	 * <p>

-	 * If the structure creator's <code>canRewriteTree</code> returns <code>true</code>

-	 * the "smart" button in the viewer's pane control bar is enabled.

-	 *

-	 * @param structureCreator the new structure creator

-	 */

-	public void setStructureCreator(IStructureCreator structureCreator) {

-		if (fStructureCreator != structureCreator) {

-			fStructureCreator= structureCreator;

-			Control tree= getControl();

-			if (tree != null && !tree.isDisposed())

-				tree.setData(CompareUI.COMPARE_VIEWER_TITLE, getTitle());

-		}

-	}

-	

-	/**

-	 * Returns the structure creator or <code>null</code> if no

-	 * structure creator has been set with <code>setStructureCreator</code>.

-	 *

-	 * @return the structure creator or <code>null</code>

-	 */

-	public IStructureCreator getStructureCreator() {

-		return fStructureCreator;

-	}

-	

-	/**

-	 * Reimplemented to get the descriptive title for this viewer from the <code>IStructureCreator</code>.

-	 */

-	public String getTitle() {

-		if (fStructureCreator != null)

-			return fStructureCreator.getName();

-		return super.getTitle();

-	}

-	

-	/**

-	 * Overridden because the input of this viewer is not identical to the root of the tree.

-	 * The tree's root is a IDiffContainer that was returned from the method <code>diff</code>.

-	 * 

-	 * @return the root of the diff tree produced by method <code>diff</code>

-	 */

-	protected Object getRoot() {

-		return fRoot;

-	}

-	

-	/**

-	 * Overridden to create the comparable structures from the input object

-	 * and to feed them through the differencing engine. Note: for this viewer

-	 * the value from <code>getInput</code> is not identical to <code>getRoot</code>.

-	 */

-	protected void inputChanged(Object input, Object oldInput) {

-		if (input instanceof ICompareInput) {

-			compareInputChanged((ICompareInput) input);

-			if (input != oldInput)

-				navigate(true);

-		}

-	}

-	

-	/* (non Javadoc)

-	 * Overridden to unregister all listeners.

-	 */

-	protected void handleDispose(DisposeEvent event) {

-		

-		compareInputChanged(null);

-		

-		fContentChangedListener= null;

-		fThreeWayInputChangedListener= null;

-				

-		super.handleDispose(event);

-	}

-	

-	/**

-	 * Recreates the comparable structures for the input sides.

-	 */

-	protected void compareInputChanged(ICompareInput input) {

-		ITypedElement t= null;

-		boolean changed= false;

-		

-		if (input != null)

-			t= input.getAncestor();

-			

-		fThreeWay= (t != null);

-		

-		if (t != fAncestorInput) {

-			if (fAncestorInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fAncestorInput).removeContentChangeListener(fContentChangedListener);

-			fAncestorInput= t;

-			if (fAncestorInput != null) {

-				fAncestorStructure= fStructureCreator.getStructure(fAncestorInput);

-				changed= true;

-			} else

-				fAncestorStructure= null;

-			if (fAncestorInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fAncestorInput).addContentChangeListener(fContentChangedListener);

-		}

-		

-		if (input != null)

-			t= input.getLeft();

-		if (t != fLeftInput) {

-			if (fLeftInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fLeftInput).removeContentChangeListener(fContentChangedListener);

-			fLeftInput= t;

-			if (fLeftInput != null) {

-				fLeftStructure= fStructureCreator.getStructure(fLeftInput);

-				changed= true;

-			} else

-				fLeftStructure= null;

-			if (fLeftInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fLeftInput).addContentChangeListener(fContentChangedListener);

-		}

-		

-		if (input != null)

-			t= input.getRight();

-		if (t != fRightInput) {

-			if (fRightInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fRightInput).removeContentChangeListener(fContentChangedListener);

-			fRightInput= t;

-			if (fRightInput != null) {

-				fRightStructure= fStructureCreator.getStructure(fRightInput);

-				changed= true;

-			} else

-				fRightStructure= null;

-			if (fRightInput instanceof IContentChangeNotifier)

-				((IContentChangeNotifier)fRightInput).addContentChangeListener(fContentChangedListener);

-		}

-		

-		if (changed)

-			diff();

-	}

-	

-	/**

-	 * Calls <code>diff</code> whenever the byte contents changes.

-	 */

-	protected void contentChanged(IContentChangeNotifier changed) {

-		

-		if (fStructureCreator == null)

-			return;

-			

-		if (changed != null) {

-			if (changed == fAncestorInput) {

-				fAncestorStructure= fStructureCreator.getStructure(fAncestorInput);

-			} else if (changed == fLeftInput) {

-				fLeftStructure= fStructureCreator.getStructure(fLeftInput);

-			} else if (changed == fRightInput) {

-				fRightStructure= fStructureCreator.getStructure(fRightInput);

-			} else

-				return;

-		} else {

-			fAncestorStructure= fStructureCreator.getStructure(fAncestorInput);

-			fLeftStructure= fStructureCreator.getStructure(fLeftInput);

-			fRightStructure= fStructureCreator.getStructure(fRightInput);

-		}

-		

-		diff();

-	}

-

-	protected void preDiffHook(IStructureComparator ancestor, IStructureComparator left, IStructureComparator right) {

-		// we do nothing here

-	}

-	

-	/**

-	 * Runs the difference engine and refreshes the tree.

-	 */

-	protected void diff() {

-		

-		preDiffHook(fAncestorStructure, fLeftStructure, fRightStructure);

-							

-		String message= null;

-		

-		if ((fThreeWay && fAncestorStructure == null) || fLeftStructure == null || fRightStructure == null) {

-			// could not get structure of one (or more) of the legs

-			fRoot= null;

-			message= CompareMessages.getString("StructureDiffViewer.StructureError");	//$NON-NLS-1$

-			

-		} else {	// calculate difference of the two (or three) structures

-

-			if (fDifferencer == null)

-				fDifferencer= new Differencer() {

-					protected boolean contentsEqual(Object o1, Object o2) {

-						return StructureDiffViewer.this.contentsEqual(o1, o2);

-					}

-					protected Object visit(Object data, int result, Object ancestor, Object left, Object right) {

-						Object o= super.visit(data, result, ancestor, left, right);

-						if (fLeftIsLocal && o instanceof DiffNode)

-							((DiffNode)o).swapSides(fLeftIsLocal);

-						return o;

-					}

-				};

-			

-			fRoot= (IDiffContainer) fDifferencer.findDifferences(fThreeWay, null, null,

-					fAncestorStructure, fLeftStructure, fRightStructure);

-					

-			if (fRoot == null || fRoot.getChildren().length == 0) {

-				message= CompareMessages.getString("StructureDiffViewer.NoStructuralDifferences");	//$NON-NLS-1$

-			} else {

-				postDiffHook(fDifferencer, fRoot);

-			}

-		}

-		if (fParent != null)

-			fParent.setTitleArgument(message);

-			

-		refresh(getRoot());

-	}

-	

-	protected void postDiffHook(Differencer differencer, IDiffContainer root) {

-		// we do nothing here

-	}

-	

-	/**

-	 * Performs a byte compare on the given objects.

-	 * Called from the difference engine.

-	 * Returns <code>null</code> if no structure creator has been set.

-	 */

-	private boolean contentsEqual(Object o1, Object o2) {

-		if (fStructureCreator != null) {

-			boolean ignoreWhiteSpace= Utilities.getBoolean(getCompareConfiguration(), CompareConfiguration.IGNORE_WHITESPACE, false);		

-			String s1= fStructureCreator.getContents(o1, ignoreWhiteSpace);

-			String s2= fStructureCreator.getContents(o2, ignoreWhiteSpace);

-			if (s1 == null || s2 == null)

-				return false;

-			return s1.equals(s2);

-		}

-		return false;

-	}

-	

-	/**

-	 * Tracks property changes of the configuration object.

-	 * Clients may override to track their own property changes.

-	 * In this case they must call the inherited method.

-	 */

-	protected void propertyChange(PropertyChangeEvent event) {

-		String key= event.getProperty();

-		if (key.equals(CompareConfiguration.IGNORE_WHITESPACE))

-			diff();

-		else

-			super.propertyChange(event);

-	}

-		

-	/**

-	 * Overridden to call the <code>save</code> method on the structure creator after

-	 * nodes have been copied from one side to the other side of an 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

-	 */

-	protected void copySelected(boolean leftToRight) {

-		super.copySelected(leftToRight);

-		

-		if (fStructureCreator != null)

-			fStructureCreator.save(

-							leftToRight ? fRightStructure : fLeftStructure,

-							leftToRight ? fRightInput : fLeftInput);

-	}

-}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html
deleted file mode 100644
index b0cc1b3..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html
+++ /dev/null
@@ -1,50 +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="Author" content="IBM">

-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">

-   <title>Package-level Javadoc</title>

-</head>

-<body>

-Provides support for finding and displaying the differences

-between hierarchically structured data.

-<h2>

-Package Specification</h2>

-The class <tt>Differencer</tt> is a differencing engine for hierarchically

-structured data. It takes two or three inputs and performs a two-way or

-three-way compare on them.

-<p>If the input elements to the differencing engine implement the <tt>IStructureComparator</tt>

-interface the engine recursively applies itself&nbsp; to the children of

-the input element. Leaf elements must implement the <tt>IStreamContentAccessor</tt>

-interface (see package <tt>org.eclipse.compare</tt>) so that the

-differencer can perform a bytewise comparison on them.

-<p>By default the differencing engine returns the result of the compare

-as a tree of <tt>DiffNode</tt> objects. Every <tt>DiffNode</tt> describes

-the changes among the two or three inputs.

-<p>A tree of <tt>DiffNodes</tt> can be displayed in a <tt>DiffTreeViewer</tt>.

-The <tt>DiffTreeViewer</tt> requires that inner nodes of the tree implement

-the <tt>IDiffContainer</tt> interface and leafs the <tt>IDiffElement</tt>

-interface.

-<p>The typical steps to compare hierarchically structured data and to display

-the differences would be to:

-<ul>

-<li>

-map the input data into a tree of <tt>IStructureComparator</tt> and <tt>IStreamContentAccessor</tt>s,</li>

-

-<li>

-perform the compare operation by means of the <tt>Differencer</tt>, and</li>

-

-<li>

-feed the differencing result into the <tt>DiffTreeViewer</tt>.</li>

-

-</ul>

-The <tt>StructureDiffViewer</tt> is a specialized <tt>DiffTreeViewer</tt>

-that automates the three steps from above. It takes a single input object

-of type <tt>ICompareInput</tt> from which it retrieves the two or three

-input elements to compare. Then it uses a <tt>IStructureCreator</tt> to

-extract a tree of <tt>IStructureComparator</tt> and <tt>IStreamContentAccessor</tt>

-from them. These trees are then compared with the differencing engine and

-the result is displayed in the tree viewer.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/hglegal.htm b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/hglegal.htm
deleted file mode 100644
index b071dbd..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/hglegal.htm
+++ /dev/null
@@ -1,14 +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.73 [en] (Win98; U) [Netscape]">

-   <title>Legal Notices</title>

-</head>

-<body>

-

-<h3>

-<a NAME="Notices"></a>Notices</h3>

-(c) Copyright IBM Corp. 2000, 2001. All Rights Reserved.

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/ngibmcpy.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/ngibmcpy.gif
deleted file mode 100644
index 360f8e9..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/ngibmcpy.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare.html
deleted file mode 100644
index c0e152c..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare.html
+++ /dev/null
@@ -1,43 +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]">

-   <title>Compare Infrastructure Extension Points</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-IBM Eclipse Platform Compare</h1></center>

-This document lists all of the extension points that the compare plug-in

-makes available to tool developers.

-<p>All XML sub-elements defined in the individual extension point documents

-may appear more than once inside an extension element. For example, an

-<tt>org.eclipse.compare.contentMergeViewers</tt> extension may contain

-several instances of <tt>viewer</tt> elements. Although making one extension

-per sub-element is not technically incorrect, we recommend grouping for

-consistent style. It can also improve platform startup time because there

-will be fewer extensions to process.

-<br>

-<hr WIDTH="100%">

-<h1>

-Extension Points</h1>

-The following extension points can be used to extend the capabilities of

-the compare infrastructure:

-<ul>

-<li>

-<a href="org_eclipse_compare_contentMergeViewers.html">org.eclipse.compare.contentMergeViewers</a></li>

-

-<li>

-<a href="org_eclipse_compare_contentViewers.html">org.eclipse.compare.contentViewers</a></li>

-

-<li>

-<a href="org_eclipse_compare_structureMergeViewers.html">org.eclipse.compare.structureMergeViewers</a></li>

-

-<li>

-<a href="org_eclipse_compare_structureCreators.html">org.eclipse.compare.structureCreators</a></li>

-</ul>

-<a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html
deleted file mode 100644
index aebc43e..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html
+++ /dev/null
@@ -1,55 +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]">

-   <title>Compare Extension Points: contentMergeViewers</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-ContentMergeViewers</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.compare.contentMergeViewers

-<p><b><i>Description: </i></b>This extension point allows to plug in a

-compare/merge viewer for specific content types. The viewer must extend

-<tt>org.eclipse.jface.viewers.Viewer</tt>.

-<br>However since viewers don't have a default constructor the extension

-point must implement a factory object for viewers: the interface <tt>org.eclipse.compare.IViewerCreator</tt>.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT viewer EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST viewer</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-<ul>

-<li>

-<b>id</b> - a unique identifier that can be used to reference the viewer</li>

-

-<li>

-<b>class</b> - name of a class that implements a factory for the content

-merge viewer and implements <tt>org.eclipse.compare.IViewerCreator</tt></li>

-

-<li>

-<b>extensions </b>- a comma separated list of file extensions e.g . "java,

-gif"</li>

-</ul>

-<b><i>Examples:</i></b>

-<br>The following is an example of compare/merge viewer for text files

-(extension "txt"):

-<p>&lt;extension point = "org.eclipse.compare.contentMergeViewers">

-<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;viewer

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="org.eclipse.compare.contentmergeviewer.TextMergeViewer"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.eclipse.compare.internal.TextMergeViewerCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions="txt"

-<br>&nbsp;&nbsp;&nbsp; />

-<br>&lt;/extension>

-<p><b><i>Supplied Implementation:</i></b>

-<br>The Compare UI plugin defines content viewers for text, binary contents,

-and images.

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html
deleted file mode 100644
index 1a877ed..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html
+++ /dev/null
@@ -1,56 +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]">

-   <title>Compare Extension Points: contentViewers</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-ContentViewers</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.compare.contentViewers

-<p><b><i>Description: </i></b>This extension point allows to plug in a

-viewer for specific content types. These viewers are used in the EditionSelectionDialog

-when presenting an edition of a resource or a subsection thereof. The viewer

-must extend

-<tt>org.eclipse.jface.viewers.Viewer</tt> and must accept a

-viewer input of type <tt>IStreamContentAccessor</tt>.

-<br>However since viewers don't have a default constructor the extension

-point must implement a factory object for viewers: the interface <tt>org.eclipse.compare.IViewerCreator</tt>.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT viewer EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST viewer</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-<ul>

-<li>

-<b>id</b> - a unique identifier that can be used to reference the viewer</li>

-

-<li>

-<b>class</b> - name of a class that implements a factory for the content

-merge viewer and implements <tt>org.eclipse.compare.IViewerCreator</tt></li>

-

-<li>

-<b>extensions </b>- a comma separated list of file extensions e.g . "java,

-gif"</li>

-</ul>

-<b><i>Examples:</i></b>

-<br>The following is an example of a viewer for text files (extension "txt"):

-<p>&lt;extension point = "org.eclipse.compare.contentViewers">

-<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;viewer

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="org.eclipse.compare.internal.TextViewer"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.eclipse.compare.internal.TextViewerCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions="txt"

-<br>&nbsp;&nbsp;&nbsp; />

-<br>&lt;/extension>

-<p><b><i>Supplied Implementation:</i></b>

-<br>The Compare UI plugin defines content viewers for text and images.

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html
deleted file mode 100644
index d48dd73..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html
+++ /dev/null
@@ -1,53 +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]">

-   <title>Compare Extension Points: structureCreators</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-StructureCreators</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.compare.structureCreators

-<p><b><i>Description: </i></b>This extension point allows to plug in an

-object that produces a tree structure of <tt>IStructureComparator</tt>

-for a given content.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT structureCreator EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST structureCreator</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-<ul>

-<li>

-<b>id</b> - a unique identifier that can be used to reference the structure

-creator</li>

-

-<li>

-<b>class</b> - name of a class that implements the strcuture creator and

-implements <tt>org.eclipse.compare.structuremergeviewer.IStructureComparator</tt></li>

-

-<li>

-<b>extensions </b>- a comma separated list of file extensions e.g . "java,

-properties"</li>

-</ul>

-<b><i>Examples:</i></b>

-<br>The following is an example of a structure creator for java files (extension

-"java"):

-<p>&lt;extension point = "org.eclipse.compare.structureCreators">

-<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;structureCreator

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="org.eclipse.compare.JavaStructureCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.eclipse.compare.JavaStructureCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions="java"

-<br>&nbsp;&nbsp;&nbsp; />

-<br>&lt;/extension>

-<p><b><i>Supplied Implementation:</i></b>

-<br>The Compare UI plugin defines a structure creator for zip archives.

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html
deleted file mode 100644
index 187fc44..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html
+++ /dev/null
@@ -1,53 +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]">

-   <title>Compare Extension Points: structureMergeViewers</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-StructureMergeViewers</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.compare.structureMergeViewers

-<p><b><i>Description: </i></b>This extension point allows to plug in a

-compare/merge viewer for structured content. The viewer must extend <tt>org.eclipse.jface.viewers.Viewer</tt>.

-However since viewers don't have a default constructor the extension point

-must implement a factory object for viewers: the interface <tt>org.eclipse.compare.IViewerCreator</tt>.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT viewer EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST viewer</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-<ul>

-<li>

-<b>id</b> - a unique identifier that can be used to reference the viewer</li>

-

-<li>

-<b>class</b> - name of a class that implements a factory for the strcuture

-merge viewer and implements <tt>org.eclipse.compare.IViewerCreator</tt></li>

-

-<li>

-<b>extensions </b>- a comma separated list of file extensions e.g . "zip,

-jar"</li>

-</ul>

-<b><i>Examples:</i></b>

-<br>The following is an example of compare/merge viewer for zip files (extension

-"zip"):

-<p>&lt;extension point = "org.eclipse.compare.structureMergeViewers">

-<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;viewer

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="org.eclipse.compare.ZipCompareViewer"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.eclipse.compare.ZipCompareViewerCreator"

-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensions="zip"

-<br>&nbsp;&nbsp;&nbsp; />

-<br>&lt;/extension>

-<p><b><i>Supplied Implementation:</i></b>

-<br>The Compare UI plugin defines a structure compare viewer for zip archives.

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif
deleted file mode 100644
index 0088c97..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif
deleted file mode 100644
index 6c83c45..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif
deleted file mode 100644
index a3a444a..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif
deleted file mode 100644
index 706dc02..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif
deleted file mode 100644
index b95e26a..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/next_nav.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/next_nav.gif
deleted file mode 100644
index 8392f33..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/next_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/prev_nav.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/prev_nav.gif
deleted file mode 100644
index 9b278e6..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/prev_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif
deleted file mode 100644
index c2a47b6..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif
deleted file mode 100644
index 3aabbce..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif
deleted file mode 100644
index 2045dae..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif
deleted file mode 100644
index ecde52e..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif
deleted file mode 100644
index 097ecdd..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/cview16/compare_view.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/cview16/compare_view.gif
deleted file mode 100644
index 41800a0..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/cview16/compare_view.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif
deleted file mode 100644
index 6e00dee..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif
deleted file mode 100644
index cb11ac9..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif
deleted file mode 100644
index 202b041..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif
deleted file mode 100644
index 4e9a3eb..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif
deleted file mode 100644
index e84103f..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/next_nav.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/next_nav.gif
deleted file mode 100644
index 6cbeced..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/next_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif
deleted file mode 100644
index a3441a0..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif
deleted file mode 100644
index 6f55d90..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif
deleted file mode 100644
index 2a8541c..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif
deleted file mode 100644
index ecab864..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif
deleted file mode 100644
index c76fcc7..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif
deleted file mode 100644
index 55147cc..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif
deleted file mode 100644
index 3ce77c8..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif
deleted file mode 100644
index d9f5900..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif
deleted file mode 100644
index 61289f1..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif
deleted file mode 100644
index 4fdde61..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif
deleted file mode 100644
index feb14bf..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/next_nav.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/next_nav.gif
deleted file mode 100644
index 03b7af3..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/next_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/prev_nav.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/prev_nav.gif
deleted file mode 100644
index dd65c52..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/prev_nav.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif
deleted file mode 100644
index e0a262e..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif
deleted file mode 100644
index 3e45390..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif
deleted file mode 100644
index 4c25322..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/conflict_edit.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/conflict_edit.gif
deleted file mode 100644
index b4451ec..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/conflict_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif
deleted file mode 100644
index f816c9e..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/eview16/compare_view.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/eview16/compare_view.gif
deleted file mode 100644
index 1030b6e..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/eview16/compare_view.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/day_obj.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/day_obj.gif
deleted file mode 100644
index 96aae05..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/day_obj.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/resource_obj.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/resource_obj.gif
deleted file mode 100644
index d1e679e..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/resource_obj.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/add_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/add_ov.gif
deleted file mode 100644
index 2a81156..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/add_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/chg_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/chg_ov.gif
deleted file mode 100644
index 67b25c4..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/chg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif
deleted file mode 100644
index e049755..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif
deleted file mode 100644
index 020fc54..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif
deleted file mode 100644
index 39ed511..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/del_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/del_ov.gif
deleted file mode 100644
index 675c20f..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/del_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/error_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/error_ov.gif
deleted file mode 100644
index 95e4db6..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/error_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif
deleted file mode 100644
index 0dc3ea8..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif
deleted file mode 100644
index f719405..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/indel_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/indel_ov.gif
deleted file mode 100644
index 3e107d2..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/indel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif
deleted file mode 100644
index 780da98..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif
deleted file mode 100644
index 4f6a316..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif
deleted file mode 100644
index ab48981..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif
deleted file mode 100644
index 14ba011..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif
deleted file mode 100644
index 0aca3c4..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif
deleted file mode 100644
index c377537..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif
deleted file mode 100644
index 11c2d5d..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif
deleted file mode 100644
index 704d706..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif
deleted file mode 100644
index 95ec301..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.properties
deleted file mode 100644
index cdfca29..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.properties
+++ /dev/null
@@ -1,111 +0,0 @@
-#########################################

-# (c) Copyright IBM Corp. 2000, 2001.

-# All Rights Reserved.

-#########################################

-#

-# Resource strings for Compare Plug-in

-#

-pluginName= Compare Support

-

-#

-# Extension point names

-#

-structureCreators= Structure Creator

-structureMergeViewers= Structure Merge Viewer

-contentMergeViewers= Content Merge Viewer

-contentViewers= Content Viewer

-

-#

-# CompareUIPlugin

-#

-CompareUIPlugin.dialogTitle=Compare

-CompareUIPlugin.noActiveWorkbenchPage=Can't find active workbench page

-CompareUIPlugin.compareFailed=Compare Failed

-CompareUIPlugin.openEditorError=Problems Opening Editor

-CompareUIPlugin.noDifferences=There are no differences between the selected inputs.

-

-#

-# Compare Editor

-#

-defaultCompareEditor.name= Default Compare Editor

-CompareEditor.saveError.title= Save Error

-CompareEditor.cantSaveError= Can''t save contents ({0})

-CompareEditor.invalidInput=Invalid Input: Must be CompareEditorInput

-

-#

-# Context menu & actions

-#

-CompareWithMenu.label= Comp&are With

-

-CompareWithEachOtherAction.label= &Each Other

-CompareWithEachOtherAction.tooltip= Compare the Selected Resources

-

-CompareWithPatchAction.label= Patch...

-CompareWithPatchAction.tooltip= Compare the Selected Resource with a Patch

-

-CompareWithHistoryAction.label= &Local History...

-CompareWithHistoryAction.tooltip= Compare the Selected Resource with Local History

-

-ReplaceWithMenu.label= Rep&lace With

-

-ReplaceFromHistoryAction.label= &Local History...

-ReplaceFromHistoryAction.tooltip= Replace the Selected Resource with Local History

-

-ReplaceWithPreviousFromHistoryAction.label= &Previous From Local History

-ReplaceWithPreviousFromHistoryAction.tooltip= Replace the Selected Resource with the Previous from Local History

-

-#

-# Preference Page

-#

-ComparePreferencePage.name= Compare Viewers

-ComparePreferences.initiallyShowAncestorPane.label= Show A&ncestor Pane Initially

-ComparePreferences.showPseudoConflicts.label= Show &Pseudo Conflicts

-ComparePreferences.synchronizeScrolling.label= Synchronize &Scrolling Between Panes in Compare/Merge Viewers

-ComparePreferences.textFont.label= Text Font:

-

-#

-# Toolbar actions

-#

-action.IgnoreWhiteSpace.label=Ignore White Space

-action.IgnoreWhiteSpace.tooltip=Ignore White Space Where Applicable

-action.IgnoreWhiteSpace.image=etool16/ignorews_edit.gif

-

-action.Next.label=Next Difference

-action.Next.tooltip=Go To Next Difference  Ctrl+E

-action.Next.image=elcl16/next_nav.gif

-

-action.Previous.label=Previous Difference

-action.Previous.tooltip=Go To Previous Difference  Ctrl+Shift+E

-action.Previous.image=elcl16/prev_nav.gif

-

-#

-# Built in Structure Creators

-#

-ZipStructureCreator.name=Zip Archive Compare

-

-#

-# Compare Dialog

-#

-CompareDialog.commit.label=Commit

-CompareDialog.saveErrorTitle=Save Error 

-CompareDialog.saveErrorMessage=Can't save

-

-#

-# Compare With Each Other

-#

-ResourceCompare.taskName=Operation in Progress...

-ResourceCompare.twoWay.title=Compare ({0}-{1})

-ResourceCompare.threeWay.title=Compare ({0}-{1}-{2})

-

-#

-# DiffTreeViewer & DiffNodes

-#

-DiffTreeViewer.title= Structure Compare

-DiffNode.noName= <no name>

-DiffNode.nameFormat= {0} / {1}

-

-#

-# Differencing engine

-#

-Differencer.progressFormat= Comparing {0}

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.xml b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.xml
deleted file mode 100644
index e6a811f..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.xml
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-

-<!-- ======================================================================= -->

-<!-- Compare UI Plugin                                                       -->

-<!-- ======================================================================= -->

-

-<plugin

-	name="%pluginName"

-	id="org.eclipse.compare"

-	version="1.0"

-	provider-name="Object Technology International, Inc."

-	class="org.eclipse.compare.internal.CompareUIPlugin">

-

-	<requires>

-      <import plugin="org.eclipse.ui"/>

-      <import plugin="org.eclipse.core.resources"/>

-	</requires>

-

-	<runtime>

-		<library name="compare.jar" >

-			<export name="*"/>

-		</library>

-	</runtime>

-		   

-<!-- Compare extension point definitions -->

-

-	<extension-point

-		name="%structureCreators"

-		id="structureCreators"/>

-		

-	<extension-point

-		name="%structureMergeViewers"

-		id="structureMergeViewers"/>

-		

-	<extension-point

-		name="%contentMergeViewers"

-		id="contentMergeViewers"/>

-

-	<extension-point

-		name="%contentViewers"

-		id="contentViewers"/>

-

-<!-- Extensions -->

-

-	<extension point="org.eclipse.core.resources.markers"

-		id="rejectedPatchMarker" name="RejectedPatchMarker">

-		<super type="org.eclipse.core.resources.taskmarker"/>

-		<persistent value="true"/>

-	</extension>

-

-	<extension point="org.eclipse.ui.editors">

-    	<editor id="org.eclipse.compare.CompareEditor"

-      		name="%defaultCompareEditor.name"

- 			icon="icons/full/cview16/compare_view.gif"     	  

-      		class="org.eclipse.compare.internal.CompareEditor"

-			contributorClass="org.eclipse.compare.internal.CompareEditorContributor">

-    	</editor>

-	</extension>

-

-	<extension

-		point="org.eclipse.ui.preferencePages">

-		<page name="%ComparePreferencePage.name"

-			id="org.eclipse.compare.internal.ComparePreferencePage"

-			class="org.eclipse.compare.internal.ComparePreferencePage"

-			category= "org.eclipse.ui.preferencePages.Workbench">

-		</page>	

-	</extension>

-

-	<extension point="org.eclipse.ui.popupMenus">

-	

-		<objectContribution

-			id="org.eclipse.compare.CompareAction"

-			objectClass="org.eclipse.core.resources.IResource" adaptable="true">

-			<menu

-				id="replaceWithMenu"

-				path="additions"

-				label="%ReplaceWithMenu.label">

-				<separator name="replaceWithGroup"/>

-			</menu>

-			<menu

-				id="compareWithMenu"

-				path="additions"

-				label="%CompareWithMenu.label">

-				<separator name="compareWithGroup"/>

-			</menu>

-			<action

-				id="compareWithEachOther"

-				label="%CompareWithEachOtherAction.label"

-				tooltip="%CompareWithEachOtherAction.tooltip"

-				menubarPath="compareWithMenu/compareWithGroup"

-				enablesFor="2+"

-				class="org.eclipse.compare.internal.CompareAction">

-			</action>

-			<action

-				id="compareWithPatch"

-				label="%CompareWithPatchAction.label"

-				tooltip="%CompareWithPatchAction.tooltip"

-				menubarPath="compareWithMenu/compareWithGroup"

-				enablesFor="1"

-				class="org.eclipse.compare.internal.patch.CompareWithPatchAction">

-			</action>

-		</objectContribution>

-		

-		<objectContribution

-			id="org.eclipse.compare.ReplaceWithEditionAction"

-			objectClass="org.eclipse.core.resources.IFile" adaptable="true">

-			<menu

-				id="replaceWithMenu"

-				path="additions"

-				label="%ReplaceWithMenu.label">

-				<separator name="replaceWithGroup"/>

-			</menu>

-			<action

-				id="replaceFromHistory"

-				label="%ReplaceFromHistoryAction.label"

-				tooltip="%ReplaceFromHistoryAction.tooltip"

-				menubarPath="replaceWithMenu/replaceWithGroup"

-				enablesFor="1"

-				class="org.eclipse.compare.internal.ReplaceWithEditionAction">

-			</action>

-			<action

-				id="replaceWithPreviousFromHistory"

-				label="%ReplaceWithPreviousFromHistoryAction.label"

-				tooltip="%ReplaceWithPreviousFromHistoryAction.tooltip"

-				menubarPath="replaceWithMenu/replaceWithGroup"

-				enablesFor="1"

-				class="org.eclipse.compare.internal.ReplaceWithPreviousEditionAction">

-			</action>

-		</objectContribution>

-		

-		<objectContribution

-			id="org.eclipse.compare.CompareWithEditionAction"

-			objectClass="org.eclipse.core.resources.IFile" adaptable="true">

-			<menu

-				id="compareWithMenu"

-				path="additions"

-				label="%CompareWithMenu.label">

-				<separator name="compareWithGroup"/>

-			</menu>

-			<action

-				id="compareWithHistory"

-				label="%CompareWithHistoryAction.label"

-				tooltip="%CompareWithHistoryAction.tooltip"

-				menubarPath="compareWithMenu/compareWithGroup"

-				enablesFor="1"

-				class="org.eclipse.compare.internal.CompareWithEditionAction">

-			</action>

-		</objectContribution>

-			

-	</extension>

-

-	<extension point="org.eclipse.compare.structureCreators">

-		<structureCreator

-			extensions="zip"

-			class="org.eclipse.compare.ZipFileStructureCreator">

-		</structureCreator>

-	</extension>

-	

-	<extension point="org.eclipse.compare.contentMergeViewers">

-		<viewer

-			extensions="class,exe,dll,binary,zip,jar"

-			class="org.eclipse.compare.internal.BinaryCompareViewerCreator">

-		</viewer>

-		<viewer

-			extensions="txt"

-			class="org.eclipse.compare.internal.TextMergeViewerCreator">

-		</viewer>

-		<viewer

-			extensions="gif,jpg"

-			class="org.eclipse.compare.internal.ImageMergeViewerCreator">

-		</viewer>

-	</extension>

-	

-	<extension point="org.eclipse.compare.contentViewers">

-		<viewer

-			extensions="txt"

-			class="org.eclipse.compare.internal.TextViewerCreator">

-		</viewer>

-	</extension>

-

-</plugin>

-

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/scripts/exportplugin.xml b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/scripts/exportplugin.xml
deleted file mode 100644
index 6130577..0000000
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/scripts/exportplugin.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<project name="org.eclipse.compare" default="export" basedir="..">

-	<target name="init">

-		<tstamp/>

-		<property name="destdir" value="../../plugin-export" />

-		<property name="plugin"  value="org.eclipse.compare" />

-		<property name="dest"  value="${destdir}/${plugin}" />

-	</target>

-

-	<target name="build" depends="init">

-    	<incremental project="${plugin}" kind="incr"/>

-	</target>

-

-	<target name="export" depends="build">

-		<mkdir dir="${destdir}" />

-		<delete dir="${dest}" />

-		<mkdir dir="${dest}" />

-		<jar 

-			jarfile="${dest}/compare.jar"

-			basedir="bin"

-		/>

-		<copy file="plugin.xml" todir="${dest}"/>

-		<copy file="plugin.properties" todir="${dest}"/>

-		<copy todir="${dest}/icons">

-			<fileset dir="icons" />

-		</copy>

-		<zip zipfile="${dest}/comparesrc.zip">

-		    <fileset dir="compare" />

-  		</zip>				

-	</target>

-</project>

diff --git a/bundles/org.eclipse.compare/scripts/exportplugin.xml b/bundles/org.eclipse.compare/scripts/exportplugin.xml
deleted file mode 100644
index 6130577..0000000
--- a/bundles/org.eclipse.compare/scripts/exportplugin.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<project name="org.eclipse.compare" default="export" basedir="..">

-	<target name="init">

-		<tstamp/>

-		<property name="destdir" value="../../plugin-export" />

-		<property name="plugin"  value="org.eclipse.compare" />

-		<property name="dest"  value="${destdir}/${plugin}" />

-	</target>

-

-	<target name="build" depends="init">

-    	<incremental project="${plugin}" kind="incr"/>

-	</target>

-

-	<target name="export" depends="build">

-		<mkdir dir="${destdir}" />

-		<delete dir="${dest}" />

-		<mkdir dir="${dest}" />

-		<jar 

-			jarfile="${dest}/compare.jar"

-			basedir="bin"

-		/>

-		<copy file="plugin.xml" todir="${dest}"/>

-		<copy file="plugin.properties" todir="${dest}"/>

-		<copy todir="${dest}/icons">

-			<fileset dir="icons" />

-		</copy>

-		<zip zipfile="${dest}/comparesrc.zip">

-		    <fileset dir="compare" />

-  		</zip>				

-	</target>

-</project>

diff --git a/bundles/org.eclipse.team.core/.classpath b/bundles/org.eclipse.team.core/.classpath
deleted file mode 100644
index 4432f27..0000000
--- a/bundles/org.eclipse.team.core/.classpath
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="src" path="src/"/>
-    <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
-    <classpathentry kind="src" path="/org.apache.xerces"/>
-    <classpathentry kind="src" path="/org.eclipse.core.resources"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
-    <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.team.core/.cvsignore b/bundles/org.eclipse.team.core/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/bundles/org.eclipse.team.core/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/.vcm_meta b/bundles/org.eclipse.team.core/.vcm_meta
deleted file mode 100644
index 7241ae1..0000000
--- a/bundles/org.eclipse.team.core/.vcm_meta
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-description>
-	<nature id="org.eclipse.jdt.core.javanature"/>
-	<nature id="org.eclipse.pde.PluginNature"/>
-	<nature id="org.eclipse.team.cvs.core.cvsnature"/>
-	<reference project-name="org.apache.xerces"/>
-	<reference project-name="org.eclipse.core.resources"/>
-	<reference project-name="org.eclipse.core.runtime"/>
-	<builder name="org.eclipse.jdt.core.javabuilder">
-	</builder>
-	<builder name="org.eclipse.pde.ManifestBuilder">
-	</builder>
-	<builder name="org.eclipse.pde.SchemaBuilder">
-	</builder>
-</project-description>
diff --git a/bundles/org.eclipse.team.core/README b/bundles/org.eclipse.team.core/README
deleted file mode 100644
index e5bced7..0000000
--- a/bundles/org.eclipse.team.core/README
+++ /dev/null
@@ -1,13 +0,0 @@
-Note to users of this plug-in

-

-The classes and interfaces in this plug-in are part of an API that is 

-still under development and expected to change significantly before 

-reaching stability. It is being made available at this early stage to 

-solicit feedback from pioneering adopters on the understanding 

-that any code that uses this API will almost certainly be broken 

-(repeatedly) as the API evolves.

-

-For up-to-date information on these APIs and other related news see 

-our component page:

-

-http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-vcm-home/main.html
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/about.html b/bundles/org.eclipse.team.core/about.html
deleted file mode 100644
index 768324e..0000000
--- a/bundles/org.eclipse.team.core/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>

-<head>

-<title>About</title>

-<style type="text/css">

-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}

-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}

-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}

-code { font-family: "Courier New", Courier, mono; font-size: 10pt}

-sup { font-family: arial,helvetica,geneva; font-size: 10px}

-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}

-li { font-family: arial, helvetica, geneva; font-size: 10pt}

-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}

-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect(   ); margin-top: 5mm; margin-left: 3mm}

-</style>

-</head>

-<body lang="EN-US" link="blue" vlink="purple">

-<table border="0" cellspacing="5" cellpadding="2" width="100%" >

-  <tr> 

-    <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>

-  </tr>

-  <tr> 

-    <td> 

-<p>11th December, 2001</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

-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> &quot;CPL&quot;.  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>

-</td></tr></table>

-</body>

-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/build.properties b/bundles/org.eclipse.team.core/build.properties
deleted file mode 100644
index d97adb8..0000000
--- a/bundles/org.eclipse.team.core/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Eclipse build contribution
-bin.includes = about.html,plugin.xml.off,plugin.properties,*.jar
-source.team.jar=src/
diff --git a/bundles/org.eclipse.team.core/buildnotes_team.html b/bundles/org.eclipse.team.core/buildnotes_team.html
deleted file mode 100644
index eb6548b..0000000
--- a/bundles/org.eclipse.team.core/buildnotes_team.html
+++ /dev/null
@@ -1,334 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

-<html xmlns:v="urn:schemas-microsoft-com:vml"

-xmlns:o="urn:schemas-microsoft-com:office:office"

-xmlns:w="urn:schemas-microsoft-com:office:word"

-xmlns="http://www.w3.org/TR/REC-html40">

-

-<head>

-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">

-<meta name=ProgId content=Word.Document>

-<meta name=Generator content="Microsoft Word 9">

-<meta name=Originator content="Microsoft Word 9">

-<link rel=File-List href="./buildnotes_team_files/filelist.xml">

-<title>Eclipse Platform Release Notes - VCM</title>

-<style>

-<!--

- /* Style Definitions */

-p.MsoNormal, li.MsoNormal, div.MsoNormal

-	{mso-style-parent:"";

-	margin:0in;

-	margin-bottom:.0001pt;

-	mso-pagination:widow-orphan;

-	font-size:12.0pt;

-	font-family:"Times New Roman";

-	mso-fareast-font-family:"Times New Roman";}

-h1

-	{margin-right:0in;

-	mso-margin-top-alt:auto;

-	mso-margin-bottom-alt:auto;

-	margin-left:0in;

-	mso-pagination:widow-orphan;

-	mso-outline-level:1;

-	font-size:24.0pt;

-	font-family:"Times New Roman";

-	mso-font-kerning:18.0pt;

-	font-weight:bold;}

-h2

-	{margin-right:0in;

-	mso-margin-top-alt:auto;

-	mso-margin-bottom-alt:auto;

-	margin-left:0in;

-	mso-pagination:widow-orphan;

-	mso-outline-level:2;

-	font-size:18.0pt;

-	font-family:"Times New Roman";

-	font-weight:bold;}

-h3

-	{margin-right:0in;

-	mso-margin-top-alt:auto;

-	mso-margin-bottom-alt:auto;

-	margin-left:0in;

-	mso-pagination:widow-orphan;

-	mso-outline-level:3;

-	font-size:13.5pt;

-	font-family:"Times New Roman";

-	font-weight:bold;}

-a:link, span.MsoHyperlink

-	{color:blue;

-	text-decoration:underline;

-	text-underline:single;}

-a:visited, span.MsoHyperlinkFollowed

-	{color:purple;

-	text-decoration:underline;

-	text-underline:single;}

-p

-	{margin-right:0in;

-	mso-margin-top-alt:auto;

-	mso-margin-bottom-alt:auto;

-	margin-left:0in;

-	mso-pagination:widow-orphan;

-	font-size:12.0pt;

-	font-family:"Times New Roman";

-	mso-fareast-font-family:"Times New Roman";}

-@page Section1

-	{size:8.5in 11.0in;

-	margin:1.0in 1.25in 1.0in 1.25in;

-	mso-header-margin:.5in;

-	mso-footer-margin:.5in;

-	mso-paper-source:0;}

-div.Section1

-	{page:Section1;}

- /* List Definitions */

-@list l0

-	{mso-list-id:180434102;

-	mso-list-type:hybrid;

-	mso-list-template-ids:-764372184 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}

-ol

-	{margin-bottom:0in;}

-ul

-	{margin-bottom:0in;}

--->

-</style>

-<!--[if gte mso 9]><xml>

- <u1:DocumentProperties>

-  <u1:Author>johnart</u1:Author>

-  <u1:LastAuthor>johnart</u1:LastAuthor>

-  <u1:Revision>2</u1:Revision>

-  <u1:TotalTime>14</u1:TotalTime>

-  <u1:Created>2001-05-14T20:34:00Z</u1:Created>

-  <u1:LastSaved>2001-05-14T20:58:00Z</u1:LastSaved>

-  <u1:Pages>9</u1:Pages>

-  <u1:Words>3732</u1:Words>

-  <u1:Characters>21276</u1:Characters>

-  <u1:Lines>177</u1:Lines>

-  <u1:Paragraphs>42</u1:Paragraphs>

-  <u1:CharactersWithSpaces>26128</u1:CharactersWithSpaces>

-  <u1:Version>9.3821</u1:Version>

- </u1:DocumentProperties>

-</xml><![endif]-->

-</head>

-

-<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>

-

-<div class=Section1>

-

-<h1 style='tab-stops:7.55in 696.15pt center 10.25in'>Eclipse Platform Build

-Notes &#8211; Team Support</h1>

-

-<p class=MsoNormal>Team build I20020214 &#8211; February 14, 2002<o:p></o:p></p>

-

-<p class=MsoNormal>Build submission for Integration Build 20020214<o:p></o:p></p>

-

-<h2>What's new in this drop<o:p></o:p></h2>

-

-<p class=MsoNormal>Bug fixes:<o:p></o:p></p>

-

-<p class=MsoNormal>Change in semantics to validateEdit (9802)<o:p></o:p></p>

-

-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>All Team plug-ins are turned off by default. If you wish to

-use Team support,<o:p></o:p></p>

-

-<ol style='margin-top:0in' start=1 type=1>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.ui/plugin.xml.off to

-     plugins/org.eclipse.team.ui/plugin.xml <o:p></o:p></li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.ui/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.ui/plugin.xml <o:p></o:p></li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.core/plugin.xml.off to

-     plugins/org.eclipse.team.core/plugin.xml <o:p></o:p></li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.core/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.core/plugin.xml <o:p></o:p></li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.ssh/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.ssh/plugin.xml <o:p></o:p></li>

-</ol>

-

-<h1 style='tab-stops:7.55in 696.15pt center 10.25in'>Eclipse Platform Build

-Notes &#8211; Team Support</h1>

-

-<p class=MsoNormal>Team build V2_0_6 &#8211; February 12, 2002</p>

-

-<p class=MsoNormal>Build submission for Integration Build 20020212</p>

-

-<h2>What's new in this drop</h2>

-

-<p class=MsoNormal>48 bugs fixed.</p>

-

-<p class=MsoNormal>Global ignore facility added to the core team support.</p>

-

-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>All Team plug-ins are turned off by default. If you wish to

-use Team support,</p>

-

-<ol style='margin-top:0in' start=6 type=1>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.ui/plugin.xml.off to

-     plugins/org.eclipse.team.ui/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.ui/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.ui/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.core/plugin.xml.off to

-     plugins/org.eclipse.team.core/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.core/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.core/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.ssh/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.ssh/plugin.xml</li>

-</ol>

-

-<p class=MsoNormal style='margin-left:.25in'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>Please report any problems to the VCM team, and use the VCM

-component for bug tracking.</p>

-

-<h1 style='tab-stops:7.55in 696.15pt center 10.25in'>Eclipse Platform Build

-Notes &#8211; Team Support</h1>

-

-<p class=MsoNormal>Team build V2_0_5 &#8211; February 5, 2002</p>

-

-<p class=MsoNormal>Build submission for Integration Build 20020205</p>

-

-<h2>What's new in this drop</h2>

-

-<p class=MsoNormal>41 bugs fixed.</p>

-

-<p class=MsoNormal>CVS operations move from the CVS submenu to the Team

-submenu.</p>

-

-<p class=MsoNormal>Proper plugin.xml files will be included with this build.</p>

-

-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>All Team plug-ins are turned off by default. If you wish to

-use Team support,</p>

-

-<ol style='margin-top:0in' start=11 type=1>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.ui/plugin.xml.off to

-     plugins/org.eclipse.team.ui/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.ui/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.ui/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.core/plugin.xml.off to plugins/org.eclipse.team.core/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.core/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.core/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.ssh/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.ssh/plugin.xml</li>

-</ol>

-

-<p class=MsoNormal style='margin-left:.25in'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>Please report any problems to the VCM team, and use the VCM

-component for bug tracking.</p>

-

-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>Run <a

-href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;resolution=FIXED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfield=bug_status&amp;chfieldfr%20">this</a>

-query to determine which bugs have been fixed since January 29<sup>th</sup>. If

-you wish to narrow the search, edit the query and change the dates.</p>

-

-<h1 style='tab-stops:7.55in 696.15pt center 10.25in'>Eclipse Platform Build

-Notes &#8211; Team Support</h1>

-

-<p class=MsoNormal>Team build V2_0_4 &#8211; January 29, 2002</p>

-

-<p class=MsoNormal>Build submission for Integration Build 20020129</p>

-

-<h2>What's new in this drop</h2>

-

-<p class=MsoNormal>Merge support has been added</p>

-

-<p class=MsoNormal>Numerous bug fixes</p>

-

-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>All Team plug-ins are turned off by default. If you wish to

-use Team support,</p>

-

-<ol style='margin-top:0in' start=16 type=1>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.ui/plugin.xml.off to

-     plugins/org.eclipse.team.ui/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.ui/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.ui/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.core/plugin.xml.off to

-     plugins/org.eclipse.team.core/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.core/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.core/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.ssh/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.ssh/plugin.xml</li>

-</ol>

-

-<p class=MsoNormal style='margin-left:.25in'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>Please report any problems to the VCM team, and use the VCM

-component for bug tracking.</p>

-

-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>Run <a

-href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;resolution=FIXED&amp;priority=P1&amp;priority=P2&amp;priority=P3&amp;priority=P4&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id%20">this</a>

-query to determine which bugs have been fixed since January 15<sup>th</sup>. If

-you wish to narrow the search, edit the query and change the dates.</p>

-

-<h1 style='tab-stops:7.55in 696.15pt center 10.25in'>Eclipse Platform Build

-Notes &#8211; Team Support</h1>

-

-<p class=MsoNormal>Team build V2_0_2 &#8211; January 15, 2002</p>

-

-<p class=MsoNormal>Build submission for Integration Build 20020115</p>

-

-<h2>What's new in this drop</h2>

-

-<p class=MsoNormal>This is the initial release for the Team support plug-ins.

-Team support is intended to be an eventual replacement for the VCM codebase.</p>

-

-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>The plug-ins are turned off by default. If you wish to use

-Team support,</p>

-

-<ol style='margin-top:0in' start=21 type=1>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.ui/plugin.xml.off to

-     plugins/org.eclipse.team.ui/plugin.xml</li>

- <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'>Rename

-     plugins/org.eclipse.team.cvs.ui/plugin.xml.off to

-     plugins/org.eclipse.team.cvs.ui/plugin.xml</li>

-</ol>

-

-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>Please report any problems to the VCM team, and use the VCM

-component for bug tracking.</p>

-

-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

-

-<p class=MsoNormal>Run <a

-href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;resolution=FIXED&amp;priority=P1&amp;priority=P2&amp;priority=P3&amp;priority=P4&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugi%20">this</a>

-query to determine which bugs have been fixed since January 7<sup>th</sup>. If

-you wish to narrow the search, edit the query and change the dates.</p>

-

-<h1 style='tab-stops:7.55in 696.15pt center 10.25in'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></h1>

-

-</div>

-

-</body>

-

-</html>

diff --git a/bundles/org.eclipse.team.core/doc/hglegal.htm b/bundles/org.eclipse.team.core/doc/hglegal.htm
deleted file mode 100644
index b071dbd..0000000
--- a/bundles/org.eclipse.team.core/doc/hglegal.htm
+++ /dev/null
@@ -1,14 +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.73 [en] (Win98; U) [Netscape]">

-   <title>Legal Notices</title>

-</head>

-<body>

-

-<h3>

-<a NAME="Notices"></a>Notices</h3>

-(c) Copyright IBM Corp. 2000, 2001. All Rights Reserved.

-</body>

-</html>

diff --git a/bundles/org.eclipse.team.core/doc/ngibmcpy.gif b/bundles/org.eclipse.team.core/doc/ngibmcpy.gif
deleted file mode 100644
index 360f8e9..0000000
--- a/bundles/org.eclipse.team.core/doc/ngibmcpy.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.core/doc/org_eclipse_team_core.html b/bundles/org.eclipse.team.core/doc/org_eclipse_team_core.html
deleted file mode 100644
index de5e2b3..0000000
--- a/bundles/org.eclipse.team.core/doc/org_eclipse_team_core.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

-<html>

-<head>

-   <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

-   <title>Team Core Extension Points</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>Team Core Plug-in</h1></center>

-This document lists all of the extension points that the Team Core plug-in makes available to provider developers.

-<p>

-<hr WIDTH="100%">

-<h1>

-General Extension Points</h1>

-The following extension point can be used to register a team provider nature id with the platform:

-<ul>

-<li>

-<a href="org_eclipse_team_core_providers.html">org.eclipse.team.core.providers</a></li>

-</ul>

-<a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.team.core/doc/org_eclipse_team_core_providers.html b/bundles/org.eclipse.team.core/doc/org_eclipse_team_core_providers.html
deleted file mode 100644
index 2fcc2ff..0000000
--- a/bundles/org.eclipse.team.core/doc/org_eclipse_team_core_providers.html
+++ /dev/null
@@ -1,32 +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.5 [en] (WinNT; I) [Netscape]">

-   <title>Workbench Extension Points</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-Applications</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.team.core.providers

-<p><b><i>Description:</i></b> This extension point is used to register

-a provider nature with the Team Core plugin. Registered provider natures

-benefit from the services provided by the Team Core plug-in. These include

-programmatic configuration of providers and cardinality enforcement (e.g.

-only one team nature can be assigned to a project at a time).

-<p>Configuration Markup:

-<p><tt>&lt;!ELEMENT perspective (description?)></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST perspective</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; natureId&nbsp; CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp; ></tt><tt></tt>

-<p><b>natureId</b> - the nature identifier to register

-<p><b><i>Examples:</i></b> The following is an example of a providers extension:

-<p><tt>&lt;extension id="CVSProvider" point="org.eclipse.team.core.providers"></tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp; &lt;providers natureId="org.eclipse.team.provider.cvs.core.cvsnature"/></tt>

-<br><tt>&nbsp;&lt;/extension></tt><tt></tt>

-<a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

- 
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/plugin.properties b/bundles/org.eclipse.team.core/plugin.properties
deleted file mode 100644
index 7bb56ae..0000000
--- a/bundles/org.eclipse.team.core/plugin.properties
+++ /dev/null
@@ -1 +0,0 @@
-pluginName = Team Support Core
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/plugin.xml b/bundles/org.eclipse.team.core/plugin.xml
deleted file mode 100644
index 9016b95..0000000
--- a/bundles/org.eclipse.team.core/plugin.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- File written by PDE 1.0 -->
-<plugin
-   id="org.eclipse.team.core"
-   name="%pluginName"
-   version="2.0.0"
-   provider-name="Object Technology International, Inc."
-   class="org.eclipse.team.core.TeamPlugin">
-<requires>
-   <import plugin="org.eclipse.core.resources"/>
-   <import plugin="org.eclipse.core.runtime"/>
-</requires>
-
-<runtime>
-   <library name="team.jar">
-      <export name="*"/>
-   </library>
-</runtime>
-
-</plugin>
diff --git a/bundles/org.eclipse.team.core/plugin.xml.off b/bundles/org.eclipse.team.core/plugin.xml.off
deleted file mode 100644
index e898963..0000000
--- a/bundles/org.eclipse.team.core/plugin.xml.off
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!-- File written by PDE 1.0 -->

-<plugin

-   id="org.eclipse.team.core"

-   name="%pluginName"

-   version="2.0.0"

-   provider-name="Object Technology International, Inc."

-   class="org.eclipse.team.core.TeamPlugin">

-<requires>

-   <import plugin="org.eclipse.core.resources"/>

-   <import plugin="org.eclipse.core.runtime"/>

-</requires>

-

-<runtime>

-   <library name="team.jar">

-      <export name="*"/>

-   </library>

-</runtime>

-

-<extension-point id="providers" name="Providers"/>

-<extension-point id="fileTypes" name="File Types Registry"/>

-<extension-point id="ignore" name="Global Ignore Registry"/>

-

-<extension point="org.eclipse.core.resources.fileModificationValidator">

-	<fileModificationValidator class="org.eclipse.team.core.internal.FileModificationValidator"/>

-</extension>

-

-</plugin>

diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/IFileTypeRegistry.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/IFileTypeRegistry.java
deleted file mode 100644
index c40a2bd..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/IFileTypeRegistry.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.team.core;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- * Provides a generic registry for keys and values based on file extensions.
- * 
- * File extensions should be considered without the usual "*." prefix.
- */
-public interface IFileTypeRegistry {
-	/**
-	 * Return the value of the given key for the given file extension.
-	 * <p>
-	 * Example:
-	 * <p>
-	 * String value = getValue("txt", "isText");
-	 * 
-	 * @param extension  the extension
-	 * @param key  the key
-	 * @return the value for the given extension and key
-	 */
-	public String getValue(String extension, String key);
-	/**
-	 * Return all extensions for which the given key is defined.
-	 * <p>
-	 * Example:
-	 * <p>
-	 * String[] extensions = getValue("isText");
-	 * 
-	 * @param key  the key
-	 * @return the extensions for which the given key is defined
-	 */
-	public String[] getExtensions(String key);
-	
-	/**
-	 * Set the value of the given key, for files of type extension.
-	 * <p>
-	 * Example:
-	 * <p>
-	 * setValue("txt", "isText", "true"); 
-	 *
-	 * @param extension  the file extension
-	 * @param key  the key
-	 * @param value  the value
-	 */
-	public void setValue(String extension, String key, String value);
-	
-	/**
-	 * Return whether the registry contains a value for the specified 
-	 * extension and key.
-	 * 
-	 * @param extension  the file extension
-	 * @param key  the key
-	 * @return the value for the extension and key, if applicable
-	 */
-	public boolean containsKey(String extension, String key);
-}
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/IIgnoreInfo.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/IIgnoreInfo.java
deleted file mode 100644
index ef15faf..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/IIgnoreInfo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.eclipse.team.core;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- * An ignore info specifies both the pattern and the enabled state
- * of a globally ignored pattern.
- */
-public interface IIgnoreInfo {
-	/**
-	 * Return the string specifying the pattern of this ignore. The string
-	 * may include the wildcard characters '*' and '?'. If you wish to
-	 * include either of these characters verbatim (i.e. you do not wish
-	 * them to expand to wildcards), you must escape them with a backslash '\'.
-	 * <p>
-	 * If you are using string literals in Java to represent the patterns, don't 
-	 * forget escape characters are represented by "\\".
-	 * 
-	 * @return the pattern represented by this ignore info
-	 */
-	public String getPattern();
-	/**
-	 * Return whether or not this ignore info is enabled. A disabled ignore
-	 * info remains in the global ignore list, but no attempt is made to match
-	 * against it to determine resource ignore state.
-	 * 
-	 * @return whether the ignore info is enabled
-	 */
-	public boolean getEnabled();
-}
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/IResourceStateChangeListener.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/IResourceStateChangeListener.java
deleted file mode 100644
index 73f8a22..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/IResourceStateChangeListener.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.team.core;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-

-import java.util.EventListener;

-

-import org.eclipse.core.resources.IResource;

-

-/**

- * A resource state change listener is notified of changes to resources

- * regarding their team state. 

- * <p>

- * Clients may implement this interface.

- * </p>

- * @see ITeamManager#addResourceStateChangeListener(IResourceStateChangeListener)

- */

-public interface IResourceStateChangeListener extends EventListener{

-	

-	/**

-	 * Notifies this listener that some resource state changes have already 

-	 * happened. For example, a resource's team state has changed from checked-in

-	 * to checked-out.

-	 * <p>

-	 * Note: This method is called by team core; it is not intended to be called 

-	 * directly by clients.

-	 * </p>

-	 *

-	 * @param resources that have changed state

-	 * 

-	 * [Note: The changed state event is purposely vague. For now it is only

-	 * a hint to listeners that they should query the provider to determine the

-	 * resources new team state.]

-	 */

-	public void resourceStateChanged(IResource[] changedResources);

-}

-

diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamManager.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamManager.java
deleted file mode 100644
index a5ad02b..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamManager.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package org.eclipse.team.core;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.Properties;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.QualifiedName;
-
-/**
- * The <code>ITeamManager</code> is the basis for team provider management
- * in the platform.  There is only one team manager per running platform.  All 
- * registered providers exist in the context of this manager. The manager provides 
- * the following services to clients:
- * <p>
- * <ul>
- * 		<li>find the <code>ITeamProvider</code> associated with
- * 		a project.</li>
- * 
- * 		<li>associate one provider nature at a time to a project.</li>
- * 
- * 		<li>remove a project from being associated with a provider's nature.</li>
- * 
- * @see ITeamProvider
- */
-public interface ITeamManager {
-
-	/**
-	 * Called to associate a project with a given provider. The Team plug-in will remember 
-	 * the association between workbench sessions.
-	 * <p>
-	 * This method allows headless application (e.g. tests, scripts) to create specific providers 
-	 * programatically. Refer to the provider's documentation for the properties that are required 
-	 * for initializing a provider programatically.</p>
-	 * <p>
-	 * Example usage:
-	 * <pre>
-	 * Properties properties = new Properties();
-	 * properties.set("location", "http://www.share.com/~team");
-	 * properties.set("httpUser", "team");
-	 * properties.set("httpPass", "teampass");
-	 * ...
-	 * plugin.setProvider(project, "org.eclipse.team.providers.someteam_nature", properties, monitor);
-	 * </pre></p>
-	 * <p>
-	 * Warning: A client using this method is hard coding provider specific details into 
-	 * their implementations.</p>
-	 * 
-	 * @param project to associate with a specific provider type identified by the natureId.
-	 * @param natureId that identifies the provider to associate with the project.
-	 * @param configuration required to initialize the provider. The contents of the configuration
-	 * is provider specific. Can be <code>null</code> if the provider is configured using another
-	 * mechanism.
-	 * 
-	 * @exception TeamException if the project cannot be associated with the provider. 
-	 * Possible reasons are:
-	 * <ul>
-	 * 	<li>provider is already associated with a provider. A client must call 
-	 * 		  <code>removeProvider</code> before associating a project with 
-	 * 		  another provider.</li>
-	 * 	<li>provider could not be configured.</li>
-	 * </ul></p>
-	 */
-	public void setProvider(IProject project, String natureId, Properties configuration, IProgressMonitor progress) throws TeamException;
-		
-	/**
-	 * Answers the provider associated with this resource's project. Returns <code>null</code> 
-	 * if the project is not associated with a provider.
-	 * 
-	 * @param resource for which to return its associated provider
-	 * 
-	 * @return the team provider instance associated with the resource's project, or <code>null</code>
-	 * if the resource's project is not associated with a provider.
-	 */
-	public ITeamProvider getProvider(IResource resource);	
-	
-	/**
-	 * Un-associate this project with its provider. If the project is not associated with
-	 * a provider this method has no effect.
-	 * 
-	 * @param project to remote the associate to its provider.
-	 * 
-	 * @exception TeamException if the provider cannot be removed from the project. Possible
-	 * reasons are:
-	 * <ul>
-	 * 	<li>error removing the nature id</li>
-	 * </ul>
-	 */
-	public void removeProvider(IProject project, IProgressMonitor progress) throws TeamException;
-	
-	/** 
-	 * Adds the given listener for provider state change events to this workspace.
- 	 * Has no effect if an identical listener is already registered for these events.
-	 * <p>
-	 * Once registered, a listener starts receiving notification of changes to resources states
-	 * (e.g. checked in/checked out...) in the workspace the listener continues to receive 
-	 * notifications until it is replaced or removed.</p>
-	 * <p>
-	 * 
-	 * @param listener the listener
-	 * @see IResourceStateChangeListener
-	 * @see #removeResourceStateChangeListener
-	 */
-	public void addResourceStateChangeListener(IResourceStateChangeListener listener);
-	
-	/** 
-	 * Removes the given resource state change listener from this manager.
-	 * Has no effect if an identical listener is not registered.
-	 *
-	 * @param listener the listener
-	 * @see IResourceStateChangeListener
-	 * @see #addResourceStateChangeListener
-	 */
-	public void removeResourceStateChangeListener(IResourceStateChangeListener listener);
-	
-	/**
-	 * Notify listeners about state changes to the given resources.
-	 * 
- 	 * [Note: The changed state event is purposely vague. For now it is only
-	 * a hint to listeners that they should query the provider to determine the
-	 * resources new team state.]
-	 * 
-	 * @param resources that have changed state.
-	 */
-	public void broadcastResourceStateChanges(IResource[] resources);
-	
-	/**
-	 * Returns the list of global ignore patterns.
-	 * 
-	 * @return ignore patterns
-	 */
-	public IIgnoreInfo[] getGlobalIgnore();	
-	
-	/**
-	 * Sets the list of ignore patterns. These are persisted between workspace sessions.
-	 * 
-	 * @param patterns an array of file name patterns (e.g. *.exe)
-	 * @param enabled an array of pattern enablements
-	 */
-	public void setGlobalIgnore(String[] patterns, boolean[] enabled);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamNature.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamNature.java
deleted file mode 100644
index a893f01..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamNature.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.team.core;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-

-import java.util.Properties;

-

-import org.eclipse.core.resources.IProjectNature;

-

-/**

- * An interface that provides a team centric nature for providers. Each

- * provider must have a class that implements this interface and provide

- * an nature's extension point with this class as the <code>run</code> 

- * parameter.

- * <p>

- * A runtime instance of this class will be created for each project that

- * is associated with a provider. The implementing class must take

- * advantage of the lifecycle of natures and conform to the operation

- * specification in <code>IProjectNature</code> interface.</p>

- * <p>

- * When a project nature is re-created at runtime (e.g. the workbench

- * was shutdown and re-started) the <code>setProject()</code>

- * method will be called and the team nature must re-configure itself

- * by reading any saved meta information.</p>

- * 

- * @see IProjectNature

- * @see ITeamManager

- * @see ITeamProvider

- */

-public interface ITeamNature extends IProjectNature {

-

-	/** 

-	 * Returns a team provider for the given project.

-	 * <p>

-	 * The returned provider can be used immediately to perform team

-	 * operations.

-	 * </p>

-	 * 

-	 * @return the <code>ITeamProvider</code> to which this project

-	 * nature applies.

-	 * 

-	 * @throws TeamException if the provider cannot be found.

-	 */

-	public ITeamProvider getProvider() throws TeamException;

-

-	/** 

-	 * Configures this project nature given some provider specific configuration 

-	 * information specified as properties.

-	 * 

-	 * @param configuration the properties used to configure the project.

-	 * 

-	 * @throws TeamException if the provider configuraton fails. Also, if the provider

-	 * does not support creating providers programmatically it should throw an exception.

-	 * 

-	 * @see ITeamManager#setProvider(IProject, String, Properties, IProgressMonitor)

-	 */

-	public void configureProvider(Properties configuration) throws TeamException;

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamProvider.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamProvider.java
deleted file mode 100644
index 28bb979..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamProvider.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamProviderTests.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamProviderTests.java
deleted file mode 100644
index 658244c..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ITeamProviderTests.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.eclipse.team.core;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-

-/**

- * Team plugins can optionally implement this interface to allow running of their providers

- * against the generic provider test framework. 

- */

-public interface ITeamProviderTests {

-	/**

-	 * Allows the test framework to inform the provider to run all further operations

-	 * in a unique remote folder. This will provide individual tests with isolated sandboxes.

-	 * In addition, using isolated sandboxes for tests allows browsing of the test results

-	 * and is valuable for debugging failing tests. Without this support, the test framework

-	 * will have to clear the remote location before each test, purging previous test

-	 * results.

-	 * 

-	 * @param name of the remote folder in which to perform provider operations.

-	 */

-	public void setTestLocation(String name);

-}

-

diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamException.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamException.java
deleted file mode 100644
index 0354a38..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.eclipse.team.core;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-

-import org.eclipse.core.runtime.IStatus;

-

-/**

- * This exception is thrown by the team provider API.  It represents a failure in an API call.

- * Since some API calls take multiple arguments, the exception is capable of returning multiple

- * statuses.  The API definition determinies if the exception represents a single or multiple status

- * response; this can also be tested on the exception instance itself.

- * <p>

- * To determine the exact cause of the failure the caller should look at each status in detail.</p>

- */

-public class TeamException extends Exception {

-

-	protected IStatus status = null;

-	

-	// Status codes that may appear in a TeamException...

-

-	// The operation completed successfully.

-	public static final int OK = 0;

-

-	// The operation failed because the resource is not checked-in.

-	public static final int NOT_CHECKED_IN = -1;

-

-	// The operation failed because the resource is not checked-out.

-	public static final int NOT_CHECKED_OUT = -2;

-

-	// The corresponding remote resource no longer exists or was never created.

-	public static final int NO_REMOTE_RESOURCE = -3;

-

-	// The provider suffered an IO failure, the operation may be retried.

-	public static final int IO_FAILED = -4;

-

-	// The user is not authorized to execute the attempted operation.

-	public static final int NOT_AUTHORIZED = -5;

-

-	// The provider was unable to complete the operation for an unspecified reason.

-	public static final int UNABLE = -6;

-	

-	// The operation cannot be performed due to a conflict with other work.

-	public static final int CONFLICT = -7;

-

-	/**

-	 * Single status constructor for a <code>TeamProviderException</code>.

-	 */

-	public TeamException(IStatus status) {

-		super(status.getMessage());	

-		this.status = status;

-	}

-

-	/**

-	 * Answer the single status resulting from the attempted API call.

-	 * 

-	 * @return the single status of the result, or <code>null</code> if this is a multi-status

-	 * response.

-	 */

-	public IStatus getStatus() {

-		return status;

-	}

-}

diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamPlugin.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamPlugin.java
deleted file mode 100644
index 049e8da..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamPlugin.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.eclipse.team.core;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.team.core.internal.FileTypeRegistry;
-import org.eclipse.team.core.internal.Policy;
-import org.eclipse.team.core.internal.TeamManager;
-
-/**
- * <code>TeamPlugin</code> is the plug-in runtime class for the Team 
- * resource management plugin.
- * <p>
- * This plugin provides a lightweight registration and lookup service for
- * associating projects with providers. The registration mechanism is
- * based on the platform's project natures. Using projects natures allows
- * manipulating a project in a nature-specific way, for example UI 
- * contributions can be made conditional based on the nature of a project.
- * </p>
- * 
- * @see ITeamNature
- * @see ITeamProvider
- * @see ITeamManager
- */
-final public class TeamPlugin extends Plugin {
-
-	// The id of the core team plug-in
-	public static final String ID = "org.eclipse.team.core";
-
-	// The id of the providers extension point
-	public static final String PROVIDER_EXTENSION = "providers";
-	
-	// The id of the file types extension point
-	public static final String FILE_TYPES_EXTENSION = "fileTypes";
-	
-	// The id of the global ignore extension point
-	public static final String IGNORE_EXTENSION = "ignore";
-
-	// The team manager - manages relationships between projects and providers
-	private static TeamManager manager;
-
-	// The file type registry
-	private static FileTypeRegistry registry;
-	
-	// The one and only plug-in instance
-	private static TeamPlugin plugin;	
-
-	/** 
-	 * Constructs a plug-in runtime class for the given plug-in descriptor.
-	 */
-	public TeamPlugin(IPluginDescriptor pluginDescriptor) {
-		super(pluginDescriptor);
-		plugin = this;
-	}
-	
-	/**
-	 * @see Plugin#startup()
-	 */
-	public void startup() throws CoreException {
-		try {
-			Policy.localize("org.eclipse.team.core.internal.messages");
-			
-			manager = new TeamManager();
-			manager.startup();
-			
-			registry = new FileTypeRegistry();
-			registry.startup();
-		} catch(TeamException e) {
-			throw new CoreException(e.getStatus());
-		}
-	}
-	
-	/**
-	 * @see Plugin#shutdown()
-	 */
-	public void shutdown() {
-		registry.shutdown();
-	}
-	
-	/**
-	 * Returns the Team plug-in.
-	 *
-	 * @return the single instance of this plug-in runtime class
-	 */
-	public static TeamPlugin getPlugin() {
-		return plugin;
-	}
-	
-	/**
-	 * Returns the team manager.
-	 */
-	public static ITeamManager getManager() {
-		return manager;
-	}
-	
-	/**
-	 * Returns the file type registry.
-	 */
-	public static IFileTypeRegistry getFileTypeRegistry() {
-		return registry;
-	}
-	
-	/**
-	 * Returns the plug-in's log
-	 */
-	public static void log(int severity, String message, Throwable e) {
-		plugin.getLog().log(new Status(severity, ID, 0, message, e));
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/Assert.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/Assert.java
deleted file mode 100644
index 13ec0ba..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/Assert.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package org.eclipse.team.core.internal;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

- 

-import org.eclipse.team.core.*;

-

-public final class Assert {

-	public static class AssertionFailedException extends RuntimeException {

-		public AssertionFailedException() {

-		}

-		public AssertionFailedException(String detail) {

-			super(detail);

-		}

-	}

-/* This class is not intended to be instantiated. */

-private Assert() {

-}

-/** Asserts that an argument is legal. If the given boolean is

- * not <code>true</code>, an <code>IllegalArgumentException</code>

- * is thrown.

- *

- * @param expression the outcode of the check

- * @return <code>true</code> if the check passes (does not return

- *    if the check fails)

- * @exception IllegalArgumentException if the legality test failed

- */

-public static boolean isLegal(boolean expression) {

-	return isLegal(expression, ""/*nonNLS*/);

-}

-/** Asserts that an argument is legal. If the given boolean is

- * not <code>true</code>, an <code>IllegalArgumentException</code>

- * is thrown.

- * The given message is included in that exception, to aid debugging.

- *

- * @param expression the outcode of the check

- * @param message the message to include in the exception

- * @return <code>true</code> if the check passes (does not return

- *    if the check fails)

- * @exception IllegalArgumentException if the legality test failed

- */

-public static boolean isLegal(boolean expression, String message) {

-	if (!expression)

-		throw new IllegalArgumentException(message);

-	return expression;

-}

-/** Asserts that the given object is not <code>null</code>. If this

- * is not the case, some kind of unchecked exception is thrown.

- * 

- * @param object the value to test

- * @exception IllegalArgumentException if the object is <code>null</code>

- */

-public static void isNotNull(Object object) {

-	isNotNull(object, ""/*nonNLS*/);

-}

-/** Asserts that the given object is not <code>null</code>. If this

- * is not the case, some kind of unchecked exception is thrown.

- * The given message is included in that exception, to aid debugging.

- *

- * @param object the value to test

- * @param message the message to include in the exception

- * @exception IllegalArgumentException if the object is <code>null</code>

- */

-public static void isNotNull(Object object, String message) {

-	if (object == null)

-		throw new AssertionFailedException("null argument:" /*non NLS*/ + message);

-}

-/** Asserts that the given boolean is <code>true</code>. If this

- * is not the case, some kind of unchecked exception is thrown.

- *

- * @param expression the outcode of the check

- * @return <code>true</code> if the check passes (does not return

- *    if the check fails)

- */

-public static boolean isTrue(boolean expression) {

-	return isTrue(expression, ""/*nonNLS*/);

-}

-/** Asserts that the given boolean is <code>true</code>. If this

- * is not the case, some kind of unchecked exception is thrown.

- * The given message is included in that exception, to aid debugging.

- *

- * @param expression the outcode of the check

- * @param message the message to include in the exception

- * @return <code>true</code> if the check passes (does not return

- *    if the check fails)

- */

-public static boolean isTrue(boolean expression, String message) {

-	if (!expression)

-		throw new AssertionFailedException("assert failed:" /*non NLS*/ + message);

-	return expression;

-}

-/**

- * Indicates that the caller has not implemented the method.

- * Usually this is a temporary condition.

- */

-public static void notYetImplemented() {

-}

-}

diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java
deleted file mode 100644
index 61fee8f..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.eclipse.team.core.internal;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFileModificationValidator;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamPlugin;
-
-public class FileModificationValidator implements IFileModificationValidator {
-	private static final Status OK = new Status(Status.OK, TeamPlugin.ID, Status.OK, Policy.bind("FileModificationValidator.ok"), null);
-	private static final Status READ_ONLY = new Status(Status.ERROR, TeamPlugin.ID, Status.ERROR, Policy.bind("FileModificationValidator.isReadOnly"), null);
-	
-	/*
-	 * @see IFileModificationValidator#validateEdit(IFile[], Object)
-	 */
-	public IStatus validateEdit(IFile[] files, Object context) {
-		// To do: hash the files by provider and only call each provider once.
-		IStatus[] result = new IStatus[files.length];
-		// Optimization so we don't create a new IFile[] each time
-		IFile[] fileArray = new IFile[1];
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < files.length; i++) {
-			IFile file = files[i];
-			ITeamProvider provider = manager.getProvider(file.getProject());
-			if (provider == null) {
-				result[i] =
-					(file.isReadOnly())
-						? READ_ONLY
-						: OK;
-			} else {
-				fileArray[0] = file;
-				result[i] = provider.validateEdit(fileArray, context);
-			}
-		}
-		if (result.length == 1) {
-			return result[0];
-		} 
-		return new MultiStatus(TeamPlugin.ID, 0, result, Policy.bind("FileModificationValidator.validateEdit"), null);
-	}
-
-	/*
-	 * @see IFileModificationValidator#validateSave(IFile)
-	 */
-	public IStatus validateSave(IFile file) {
-		ITeamProvider provider = TeamPlugin.getManager().getProvider(file.getProject());
-		if (provider == null) {
-			return OK;
-		}
-		return provider.validateSave(file);
-	}
-}
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileTypeRegistry.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileTypeRegistry.java
deleted file mode 100644
index afad07f..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileTypeRegistry.java
+++ /dev/null
@@ -1,212 +0,0 @@
-package org.eclipse.team.core.internal;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.team.core.IFileTypeRegistry;
-import org.eclipse.team.core.TeamPlugin;
-
-/**
- * This class is the temporary home of functionality to determine
- * whether a particular IResource should be treated as Text or Binary.
- */
-public class FileTypeRegistry implements IFileTypeRegistry {
-	// Constant for the saved state file name
-	private static final String STATE_FILE = ".fileTypeState";
-	
-	// The registry hash table
-	private Hashtable registry;
-	
-	/**
-	 * Create a new FileTypeRegistry.
-	 */
-	public FileTypeRegistry() {
-		this.registry = new Hashtable(11);
-	}
-
-	/**
-	 * Initialize the registry, restoring its state
-	 */
-	public void startup() {
-		loadPluginState();
-	}
-	
-	/**
-	 * Shut down the registry, persisting its state
-	 */	
-	public void shutdown() {
-		savePluginState();
-	}
-	
-	/**
-	 * @see IFileTypeRegistry#getValue(String, String)
-	 */	
-	public String getValue(String extension, String key) {
-		Hashtable keyTable = (Hashtable)registry.get(extension);
-		if (keyTable == null) return null;
-		return (String)keyTable.get(key);
-	}
-	/**
-	 * @see IFileTypeRegistry#getExtensions
-	 */	
-	public String[] getExtensions(String key) {
-		String[] result = new String[registry.size()];
-		registry.keySet().toArray(result);
-		return result;
-	}
-	/**
-	 * @see IFileTypeRegistry#setValue
-	 */	
-	public void setValue(String extension, String key, String value) {
-		Hashtable keyTable = (Hashtable)registry.get(extension);
-		if (keyTable == null) {
-			keyTable = new Hashtable();
-			registry.put(extension, keyTable);
-		}
-		keyTable.put(key, value);
-	}
-	/**
-	 * @see IFileTypeRegistry#containsKey
-	 */	
-	public boolean containsKey(String extension, String key) {
-		Hashtable keyTable = (Hashtable)registry.get(extension);
-		if (keyTable == null) return false;
-		return ((Hashtable)keyTable).containsKey(key);
-	}
-
-	/**
-	 * Reads the text patterns currently defined by extensions.
-	 */
-	private void initializePluginPatterns() {
-		TeamPlugin plugin = TeamPlugin.getPlugin();
-		if (plugin != null) {
-			IExtensionPoint extension = plugin.getDescriptor().getExtensionPoint(TeamPlugin.FILE_TYPES_EXTENSION);
-			if (extension != null) {
-				IExtension[] extensions =  extension.getExtensions();
-				for (int i = 0; i < extensions.length; i++) {
-					IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
-					for (int j = 0; j < configElements.length; j++) {
-						String ext = configElements[j].getAttribute("extension");
-						if (ext != null) {
-							String key = configElements[j].getAttribute("key");
-							String value = configElements[j].getAttribute("value");
-							// if this pattern doesn't already exist, add it to the registry
-							if (!containsKey(ext, key)) {
-								setValue(ext, key, value);
-							}
-						}
-					}
-				}
-			}		
-		}
-	}
-	
-	/**
-	 * Read the saved file type state from the given input stream.
-	 * 
-	 * @param dis  the input stream to read the saved state from
-	 * @throws IOException if an I/O problem occurs
-	 */
-	private void readState(DataInputStream dis) throws IOException {
-		registry = new Hashtable(11);
-		int extensionCount = 0;
-		try {
-			extensionCount = dis.readInt();
-		} catch (EOFException e) {
-			// Ignore the exception, it will occur if there are no
-			// patterns stored in the state file.
-			return;
-		}
-		for (int i = 0; i < extensionCount; i++) {
-			String extension = dis.readUTF();
-			int keyCount = dis.readInt();
-			for (int j = 0; j < keyCount; j++) {
-				String key = dis.readUTF();
-				String value = dis.readUTF();
-				setValue(extension, key, value);
-			}
-		}
-	}
-	/**
-	 * Write the currentstate to the given output stream.
-	 * 
-	 * @param dos  the output stream to write the saved state to
-	 * @throws IOException if an I/O problem occurs
-	 */
-	private void writeState(DataOutputStream dos) throws IOException {
-		dos.writeInt(registry.size());
-		Iterator it = registry.keySet().iterator();
-		while (it.hasNext()) {
-			String extension = (String)it.next();
-			dos.writeUTF(extension);
-			Hashtable keyTable = (Hashtable)registry.get(extension);
-			dos.writeInt(keyTable.size());
-			Iterator keyIt = keyTable.keySet().iterator();
-			while (keyIt.hasNext()) {
-				String key = (String)keyIt.next();
-				dos.writeUTF(key);
-				dos.writeUTF((String)keyTable.get(key));
-			}
-		}
-	}
-	/**
-	 * Load the file type registry saved state. This loads the previously saved
-	 * contents, as well as discovering any values contributed by plug-ins.
-	 */
-	private void loadPluginState() {
-		IPath pluginStateLocation = TeamPlugin.getPlugin().getStateLocation().append(STATE_FILE);
-		File f = pluginStateLocation.toFile();
-		if (f.exists()) {
-			try {
-				DataInputStream dis = new DataInputStream(new FileInputStream(f));
-				readState(dis);
-				dis.close();
-			} catch (IOException ex) {
-				// Throw an exception here
-			}
-		}
-		// Read values contributed by plugins
-		initializePluginPatterns();
-	}
-	/**
-	 * Save the file type registry state.
-	 */
-	private void savePluginState() {
-		IPath pluginStateLocation = TeamPlugin.getPlugin().getStateLocation();
-		File tempFile = pluginStateLocation.append(STATE_FILE + ".tmp").toFile();
-		File stateFile = pluginStateLocation.append(STATE_FILE).toFile();
-		try {
-			DataOutputStream dos = new DataOutputStream(new FileOutputStream(tempFile));
-			writeState(dos);
-			dos.close();
-			if (stateFile.exists() && !stateFile.delete()) {
-				// Throw an exception here
-			}
-			boolean renamed = tempFile.renameTo(stateFile);
-			if (!renamed) {
-				// Throw an exception here
-			}
-		} catch (Exception e) {
-			// Throw an exception here
-		}
-	}
-}
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/IgnoreInfo.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/IgnoreInfo.java
deleted file mode 100644
index 53398ac..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/IgnoreInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.eclipse.team.core.internal;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.team.core.IIgnoreInfo;
-
-public class IgnoreInfo implements IIgnoreInfo {
-	private String pattern;
-	private boolean enabled;
-	
-	IgnoreInfo(String pattern, boolean enabled) {
-		this.pattern = pattern;
-		this.enabled = enabled;
-	}
-	public String getPattern() {
-		return pattern;
-	}
-	public boolean getEnabled() {
-		return enabled;
-	}
-}
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/Policy.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/Policy.java
deleted file mode 100644
index 6081cc0..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/Policy.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.eclipse.team.core.internal;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-

-import java.text.MessageFormat;

-import java.util.Locale;

-import java.util.MissingResourceException;

-import java.util.ResourceBundle;

-

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.NullProgressMonitor;

-import org.eclipse.core.runtime.OperationCanceledException;

-

-public class Policy {

-	protected static ResourceBundle bundle = null;

-

-	/**

-	 * Creates a NLS catalog for the given locale.

-	 */

-	public static void localize(String bundleName) {

-		bundle = ResourceBundle.getBundle(bundleName);

-	}

-	

-	/**

-	 * Lookup the message with the given ID in this catalog and bind its

-	 * substitution locations with the given string.

-	 */

-	public static String bind(String id, String binding) {

-		return bind(id, new String[] { binding });

-	}

-	

-	/**

-	 * Lookup the message with the given ID in this catalog and bind its

-	 * substitution locations with the given strings.

-	 */

-	public static String bind(String id, String binding1, String binding2) {

-		return bind(id, new String[] { binding1, binding2 });

-	}

-	

-	/**

-	 * Gets a string from the resource bundle. We don't want to crash because of a missing String.

-	 * Returns the key if not found.

-	 */

-	public static String bind(String key) {

-		try {

-			return bundle.getString(key);

-		} catch (MissingResourceException e) {

-			return key;

-		} catch (NullPointerException e) {

-			return "!" + key + "!";

-		}

-	}

-	

-	/**

-	 * Gets a string from the resource bundle and binds it with the given arguments. If the key is 

-	 * not found, return the key.

-	 */

-	public static String bind(String key, Object[] args) {

-		try {

-			return MessageFormat.format(bind(key), args);

-		} catch (MissingResourceException e) {

-			return key;

-		} catch (NullPointerException e) {

-			return "!" + key + "!";

-		}

-	}

-	

-	/**

-	 * Progress monitor helpers

-	 */

-	public static void checkCanceled(IProgressMonitor monitor) {

-		if (monitor.isCanceled())

-			throw new OperationCanceledException();

-	}

-	public static IProgressMonitor monitorFor(IProgressMonitor monitor) {

-		if (monitor == null)

-			return new NullProgressMonitor();

-		return monitor;

-	}	

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/TeamManager.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/TeamManager.java
deleted file mode 100644
index bed847b..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/TeamManager.java
+++ /dev/null
@@ -1,388 +0,0 @@
-package org.eclipse.team.core.internal;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.team.core.IIgnoreInfo;
-import org.eclipse.team.core.IResourceStateChangeListener;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamNature;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-
-public class TeamManager implements ITeamManager {
-
-	private final static String ATT_NATUREID = "natureId";
-	private final static String GLOBALIGNORE_FILE = ".globalIgnores";
-	
-	private static List natureIdsRegistry = new ArrayList(5);
-	private static List listeners = new ArrayList(5);
-	private static Map globalIgnore = new HashMap(11);
-	
-	/**
-	 * Start the team manager.
-	 * 
-	 * If this method throws an exception, it is taken as an indication that
-	 * the manager initialization has failed; as a result, the client should consider
-	 * team support disabled.
-	 */
-	public void startup() throws TeamException {
-		initializeProviders();
-		readState();
-		initializePluginIgnores();
-	}
-	
-	protected boolean alreadyMapped(IProject project) {
-		try {
-			String[] natures = project.getDescription().getNatureIds();
-			for (int i = 0; i < natures.length; i++) {
-				if(natureIdsRegistry.contains(natures[i]))
-					return true;			
-			}
-		} catch(CoreException e) {
-			// fall through
-		}
-		return false;
-	}
-	
-	protected String getFirstProviderNatureId(IProject project) {
-		try {
-			String[] natures = project.getDescription().getNatureIds();
-			for (int i = 0; i < natures.length; i++) {
-				if(natureIdsRegistry.contains(natures[i]))
-					return natures[i];			
-			}
-		} catch(CoreException e) {
-			// fall through
-		}
-		return null;			
-	}
-	
-	/**
-	 * @see ITeamManager#setProvider(IProject, String, IProgressMonitor)
-	 */
-	public void setProvider(IProject project, String natureId, Properties configuration, IProgressMonitor progress) throws TeamException {
-		
-		if(alreadyMapped(project)) {
-			throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, Policy.bind("manager.providerAlreadyMapped", 
-												 project.getName(), natureId), null));
-		}
-		
-		if(!natureIdsRegistry.contains(natureId)) {
-			throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, Policy.bind("manager.notTeamNature", 
-												 natureId), null));
-		}
-		
-		addNatureToProject(project, natureId, progress);
-		
-		if(configuration!=null) {
-			setConfiguration(project, natureId, configuration, progress);
-		} 
-	}
-	
-	protected void setConfiguration(IProject project, String natureId, Properties properties, IProgressMonitor progress) throws TeamException {
-		try {
-			ITeamNature teamNature = (ITeamNature)project.getNature(natureId);
-			teamNature.configureProvider(properties);			
-		} catch(ClassCastException e) {
-			throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, Policy.bind("manager.teamNatureBadType", 
-									 project.getName(), natureId), null));
-		} catch(CoreException e) {
-			throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, Policy.bind("manager.cannotGetDescription", 
-									 project.getName(), natureId), null));
-		
-		}	
-	}
-	
-	/**
-	 * @see ITeamManager#getProvider(IResource resource)
-	 */
-	public ITeamProvider getProvider(IResource resource) {
-		IProject project = resource.getProject();
-		String natureId = getFirstProviderNatureId(project);
-
-		if(natureId==null) {
-			return null;
-		}
-
-		try {
-			ITeamNature teamNature = (ITeamNature)project.getNature(natureId);
-			return teamNature.getProvider();
-		} catch(ClassCastException e) {
-			return null;
-		} catch(CoreException e) {
-			return null;
-		} catch(TeamException e) {
-			return null;
-		}
-	}
-	
-	/**
-	 * Un-associate this project with its provider. If the project is not associated with
-	 * a provider this method has no effect.
-	 * 
-	 * @param project to remote the associate to its provider.
-	 */
-	public void removeProvider(IProject project, IProgressMonitor progress) throws TeamException {
-		String natureId = getFirstProviderNatureId(project);
-		if(natureId==null) {
-			return;
-		} else {
-			removeNatureFromProject(project, natureId, progress);
-		}		
-	}
-	
-	/**
-	 * Utility for adding a nature to a project
-	 */
-	protected void addNatureToProject(IProject proj, String natureId, IProgressMonitor monitor) throws TeamException {
-		try {
-			IProjectDescription description = proj.getDescription();
-			String[] prevNatures= description.getNatureIds();
-			String[] newNatures= new String[prevNatures.length + 1];
-			System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length);
-			newNatures[prevNatures.length]= natureId;
-			description.setNatureIds(newNatures);
-			proj.setDescription(description, monitor);
-		} catch(CoreException e) {
-				throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, Policy.bind("manager.errorSettingNature", 
-														 proj.getName(), natureId), e));
-		}
-	}
-	
-	protected void removeNatureFromProject(IProject proj, String natureId, IProgressMonitor monitor) throws TeamException {
-		try {
-			IProjectDescription description = proj.getDescription();
-			String[] prevNatures= description.getNatureIds();
-			List newNatures = new ArrayList(Arrays.asList(prevNatures));
-			newNatures.remove(natureId);
-			description.setNatureIds((String[])newNatures.toArray(new String[newNatures.size()]));
-			proj.setDescription(description, monitor);
-		} catch(CoreException e) {
-				throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, Policy.bind("manager.errorRemovingNature", 
-														 proj.getName(), natureId), e));
-		}
-	}
-	
-	/**
-	 * Find and initialize all the registered providers
-	 */
-	private void initializeProviders() throws TeamException {
-
-		IExtensionPoint extensionPoint = Platform.getPluginRegistry().getExtensionPoint(TeamPlugin.ID, TeamPlugin.PROVIDER_EXTENSION);
-		if (extensionPoint == null) {
-			throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, Policy.bind("manager.providerExtensionNotFound"), null));
-		}
-
-		IExtension[] extensions = extensionPoint.getExtensions();
-		if (extensions.length == 0)
-			return;
-		for (int i = 0; i < extensions.length; i++) {
-			IExtension extension = extensions[i];
-			IConfigurationElement[] configs = extension.getConfigurationElements();
-			if (configs.length == 0) {
-				// there is no configuration element
-				// log as an error but continue to instantiate other executable extensions.
-				TeamPlugin.log(IStatus.ERROR, Policy.bind("manager.providerNoConfigElems", extension.getUniqueIdentifier()), null);
-				continue;
-			}
-			IConfigurationElement config = configs[0];
-			if(config.getName().equalsIgnoreCase(TeamPlugin.PROVIDER_EXTENSION)){
-				String natureId = config.getAttribute(ATT_NATUREID);
-			
-				if(natureId!=null) {
-					natureIdsRegistry.add(natureId);
-				} else {			
-					// failed to instantiate executable extension.
-					// log the error but continue to instantiate other executable extensions.
-					TeamPlugin.log(IStatus.ERROR, Policy.bind("manager.cannotBadFormat", extension.getUniqueIdentifier()), null);
-					continue;
-				}
-			}
-		}	
-	}
-		
-	/*
-	 * @see ITeamManager#addResourceStateChangeListener(IResourceStateChangeListener)
-	 */
-	public void addResourceStateChangeListener(IResourceStateChangeListener listener) {
-		listeners.add(listener);
-	}
-
-	/*
-	 * @see ITeamManager#removeResourceStateChangeListener(IResourceStateChangeListener)
-	 */
-	public void removeResourceStateChangeListener(IResourceStateChangeListener listener) {
-		listeners.remove(listener);
-	}
-	
-	/*
-	 * @see ITeamManager#broadcastResourceStateChanges(IResource[])
-	 */
-	public void broadcastResourceStateChanges(final IResource[] resources) {
-		for(Iterator it=listeners.iterator(); it.hasNext();) {
-			final IResourceStateChangeListener listener = (IResourceStateChangeListener)it.next();
-			ISafeRunnable code = new ISafeRunnable() {
-				public void run() throws Exception {
-					listener.resourceStateChanged(resources);
-				}
-				public void handleException(Throwable e) {
-					// don't log the exception....it is already being logged in Platform#run
-				}
-			};
-			Platform.run(code);
-		}
-	}
-	
-	public IIgnoreInfo[] getGlobalIgnore() {
-		IIgnoreInfo[] result = new IIgnoreInfo[globalIgnore.size()];
-		Iterator e = globalIgnore.keySet().iterator();
-		int i = 0;
-		while (e.hasNext() ) {
-			String pattern = (String)e.next();
-			boolean enabled = ((Boolean)globalIgnore.get(pattern)).booleanValue();
-			result[i++] = new IgnoreInfo(pattern, enabled);
-		}
-		return result;
-	}
-	
-	public void setGlobalIgnore(String[] patterns, boolean[] enabled) {
-		globalIgnore = new Hashtable(11);
-		for (int i = 0; i < patterns.length; i++) {
-			globalIgnore.put(patterns[i], new Boolean(enabled[i]));
-		}
-		try {
-			// make sure that we update our state on disk
-			savePluginState();
-		} catch (TeamException ex) {
-			TeamPlugin.log(IStatus.WARNING, "setting global ignore", ex);
-		}
-	}
-	
-	/*
-	 * Reads the ignores currently defined by extensions.
-	 */
-	private void initializePluginIgnores() {
-		TeamPlugin plugin = TeamPlugin.getPlugin();
-		if (plugin != null) {
-			IExtensionPoint extension = plugin.getDescriptor().getExtensionPoint(TeamPlugin.IGNORE_EXTENSION);
-			if (extension != null) {
-				IExtension[] extensions =  extension.getExtensions();
-				for (int i = 0; i < extensions.length; i++) {
-					IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
-					for (int j = 0; j < configElements.length; j++) {
-						String pattern = configElements[j].getAttribute("pattern");
-						if (pattern != null) {
-							String selected = configElements[j].getAttribute("selected");
-							boolean enabled = selected != null && selected.equalsIgnoreCase("true");
-							// if this ignore doesn't already exist, add it to the global list
-							if (!globalIgnore.containsKey(pattern)) {
-								globalIgnore.put(pattern, new Boolean(enabled));
-							}
-						}
-					}
-				}
-			}		
-		}
-	}
-	
-	/*
-	 * Save global ignore file
-	 */
-	private void savePluginState() throws TeamException {
-		// save global ignore list to disk
-		IPath pluginStateLocation = TeamPlugin.getPlugin().getStateLocation();
-		File tempFile = pluginStateLocation.append(GLOBALIGNORE_FILE + ".tmp").toFile();
-		File stateFile = pluginStateLocation.append(GLOBALIGNORE_FILE).toFile();
-		try {
-			DataOutputStream dos = new DataOutputStream(new FileOutputStream(tempFile));
-			writeState(dos);
-			dos.close();
-			if (stateFile.exists())
-				stateFile.delete();
-			boolean renamed = tempFile.renameTo(stateFile);
-			if (!renamed)
-				throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, "renaming", null));
-		} catch (IOException ex) {
-			throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, "closing stream", ex));
-		}
-	}
-	
-	/*
-	 * Write the global ignores to the stream
-	 */
-	private void writeState(DataOutputStream dos) throws IOException {
-		// write the global ignore list
-		int ignoreLength = globalIgnore.size();
-		dos.writeInt(ignoreLength);
-		Iterator e = globalIgnore.keySet().iterator();
-		while (e.hasNext()) {
-			String pattern = (String)e.next();
-			boolean enabled = ((Boolean)globalIgnore.get(pattern)).booleanValue();
-			dos.writeUTF(pattern);
-			dos.writeBoolean(enabled);
-		}
-	}
-	
-	private void readState() throws TeamException {
-		// read saved repositories list and ignore list from disk, only if the file exists
-		IPath pluginStateLocation = TeamPlugin.getPlugin().getStateLocation().append(GLOBALIGNORE_FILE);
-		File f = pluginStateLocation.toFile();
-		if(f.exists()) {
-			try {
-				DataInputStream dis = new DataInputStream(new FileInputStream(f));
-				globalIgnore = new Hashtable(11);
-				int ignoreCount = 0;
-				try {
-					ignoreCount = dis.readInt();
-				} catch (EOFException e) {
-					// Ignore the exception, it will occur if there are no ignore
-					// patterns stored in the provider state file.
-					return;
-				}
-				for (int i = 0; i < ignoreCount; i++) {
-					String pattern = dis.readUTF();
-					boolean enabled = dis.readBoolean();
-					globalIgnore.put(pattern, new Boolean(enabled));
-				}
-			} catch(FileNotFoundException e) {
-				// not a fatal error, there just happens not to be any state to read
-			} catch (IOException ex) {
-				throw new TeamException(new Status(IStatus.ERROR, TeamPlugin.ID, 0, "closing stream", ex));			
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/messages.properties b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/messages.properties
deleted file mode 100644
index 24861f0..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/messages.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-
-manager.providerAlreadyMapped=Error associating {0} with provider named {1}. The project is already associated with a provider.
-manager.errorFlushSync=Error flushing provider mapping information for {0}.
-manager.errorDeconfigure=Error deconfiguring provider named {0} from project {1}.
-manager.providerTypeInvalid=The provider type is not registered: {0}.
-manager.providerExtensionNotFound=TeamPlugin provider extension not found.
-manager.providerNoConfigElems=No configuration elements found for extension: {0}.
-manager.cannotInstantiateExt=Cannot instantiate extension: {0}.
-manager.errorSerialize=Error serializing provider mappings for {0}.
-manager.errorUnserializeProvider=Cannot unserialize association of {0} with provider of type: {1}. It is no longer a registered provider type.
-manager.errorUnserialize=Error un-serializing provider mappings {0}.
-manager.notTeamNature=Error setting nature: {0} is not a registered team nature.
-manager.errorSettingNature=Error setting nature {1} on project {0}.
-manager.errorRemovingNature=Error removing nature {1} on project {0}.
-
-manager.badClassType=Error creating validator decorator: bad class type
-manager.coreException=Error creating validator decorator: core exception
-
-FileModificationValidator.validateEdit=Validate Edit
-FileModificationValidator.isReadOnly=File is Read Only.
-FileModificationValidator.ok=OK
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/ILocalSyncElement.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/ILocalSyncElement.java
deleted file mode 100644
index 5317e19..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/ILocalSyncElement.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package org.eclipse.team.core.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-
-/**
- * A <code>ILocalSyncElement</code> describes the relative synchronization of a <b>local</b> 
- * resource using a <b>base</b> resource for comparison.
- * <p>
- * Differences between the base and local resources are classified as <b>outgoing changes</b>; 
- * if there is a difference, the local resource is considered the <b>outgoing resource</b>. </p>
- * 
- * @see IRemoteSyncElement
- */
-public interface ILocalSyncElement {
-	
-	/*====================================================================
-	 * Constants defining synchronization types:  
-	 *====================================================================*/
-
-	/**
-	 * Sync constant (value 0) indicating element is in sync.
-	 */
-	public static final int IN_SYNC = 0;
-	
-	/**
-	 * Sync constant (value 1) indicating that one side was added.
-	 */
-	public static final int ADDITION = 1;
-	
-	/**
-	 * Sync constant (value 2) indicating that one side was deleted.
-	 */
-	public static final int DELETION = 2;
-	
-	/**
-	 * Sync constant (value 3) indicating that one side was changed.
-	 */
-	public static final int CHANGE = 3;
-
-	/**
-	 * Bit mask for extracting the change type.
-	 */
-	public static final int CHANGE_MASK = CHANGE;
-	
-	/*====================================================================
-	 * Constants defining synchronization direction: 
-	 *====================================================================*/
-	
-	/**
-	 * Sync constant (value 4) indicating a change to the local resource.
-	 */
-	public static final int OUTGOING = 4;
-	
-	/**
-	 * Sync constant (value 8) indicating a change to the remote resource.
-	 */
-	public static final int INCOMING = 8;
-	
-	/**
-	 * Sync constant (value 12) indicating a change to both the remote and local resources.
-	 */
-	public static final int CONFLICTING = 12;
-	
-	/**
-	 * Bit mask for extracting the synchronization direction. 
-	 */
-	public static final int DIRECTION_MASK = CONFLICTING;
-	
-	/*====================================================================
-	 * Constants defining synchronization conflict types:
-	 *====================================================================*/
-	
-	/**
-	 * Sync constant (value 16) indication that both the local and remote resources have changed 
-	 * relative to the base but their contents are the same. 
-	 */
-	public static final int PSEUDO_CONFLICT = 16;
-	
-	/**
-	 * Sync constant (value 32) indicating that both the local and remote resources have changed 
-	 * relative to the base but their content changes do not conflict (e.g. source file changes on different 
-	 * lines). These conflicts could be merged automatically.
-	 */
-	public static final int AUTOMERGE_CONFLICT = 32;
-	
-	/**
-	 * Sync constant (value 64) indicating that both the local and remote resources have changed relative 
-	 * to the base and their content changes conflict (e.g. local and remote resource have changes on 
-	 * same lines). These conflicts can only be correctly resolved by the user.
-	 */
-	public static final int MANUAL_CONFLICT = 64;
-	
-	/*====================================================================
-	 * Constants defining synchronization granularity:
-	 *====================================================================*/	
-	 
-	/**
-	 * Constant (value 1) to only consider timestamp comparisons (e.g. isDirty) when 
-	 * calculating the synchronization kind. This is the faster sync compare option but it can result in false 
-	 * conflicts.
-	 */
-	public static final int GRANULARITY_TIMESTAMP = 1;
-
-	/**
-	 * Constant (value 2) indicating to consider file contents when calculating the synchronization kind. This 
-	 * synchronization mode will perform a content comparison only after timestamp operations (isDirty) 
-	 * indicate a change. This mode allows conflicts types to be correctly identified.
-	 */
-	public static final int GRANULARITY_CONTENTS = 2;
-	
-	/**
- 	 * Answer a string that describes the simple name of the sync node,  which is suitable 
- 	 * for display to a user.  The name will be used in UI operations, so it is expected that 
- 	 * implementations will cache this value.
- 	 * 
-	 * @return the simple name that identifies the resource within its parent container.
-	 */
-	public String getName();
-	
-	/**
-	 * Answer if the sync node is a container and may have children.
-	 * 
- 	 * @return <code>true</code> if the remote resource is a container, and <code>
-	 * false</code> if it is not.
-	 */
-	public boolean isContainer();
-
-	/**
-	 * Answers the local sync element of this node. Returns a non-existing local
-	 * resource handle if the local resource does not exist in the workspace. 
-	 * 
-	 * @return the local resource handle in this node. There should always be a local
-	 * resource available, however the resource may not exist.
-	 */
-	public IResource getLocal();
-
-	/**
-	 * Answers the base sync element of this node. Returns <code>null</code> 
-	 * if there is no base (e.g. conflicting add).
-	 * 
-	 * @return the base resource in this node, or <code>null</code> is there
-	 * is none.
-	 */
-	public IRemoteResource getBase();
-	
-	/**
-	 * Answers if the local resource currently has a different timestamp to the base timestamp
-	 * for this resource.
-	 * 
-	 * @param resource the resource to test.
-	 * @return <code>true</code> if the resource has a different modification
-	 * timestamp, and <code>false</code> otherwise. If a base does not exist, this method
-	 * must return <code>false</code>.
-	 */
-	public boolean isDirty();
-	
-	/**
-	 * Answers if the remote resource state is checked-out. If the resource has never been checked in this
-	 * method will return <code>true</code>.
-	 * <p>
-	 * It is undefined whether this method tests for a resource being checked out to this workspace
-	 * or any workspace.</p>
-	 * 
-	 * @param resource the local resource to test.
-	 * @return <code>true</code> if the resource is checked-out and <code>false</code> if it is not.
-	 * @see checkout(IResource[], int, IProgressMonitor)
-	 * @see refreshState(IResource[], int, IProgressMonitor)
-	 */
-	public boolean isCheckedOut();
-	
-	/**
-	 * Answers whether the resource has a corresponding remote resource.
-	 * <p>
-	 * Before a resource is checked-in, the resource will occur locally but not remotely, and calls to this
-	 * method will return <code>false</code>.  Once a local resource is checked in (and assuming the local
-	 * local resource is not moved or the remote resource deleted) there will be a corresponding remote
-	 * resource and this method returns <code>true</code>.</p>
-	 * 
-	 * @param resource the local resource to test.
-	 * @return <code>true</code> if the local resource has a corresponding remote resource,
-	 * and <code>false</code> otherwise.
-	 */
-	public boolean hasRemote();
-	
-	/**
-	 * Answers and array of <code>ILocalSyncElement</code> elements that are immediate 
-	 * children of this sync element, in no particular order. The returned sync nodes are
-	 * a combination of the nodes represented by the sync element (e.g. local, base, remote).
-	 * 
- 	 * @param progress a progress monitor to indicate the duration of the operation, or
-	 * <code>null</code> if progress reporting is not required.
-	 * 
-	 * @return array of immediate children of this sync node. 
-	 */
-	public ILocalSyncElement[] members(IProgressMonitor monitor) throws TeamException;
-	
-	/**
-	 * Performs a synchronization calculation on the given element based on the local and base 
-	 * resources. Returns an integer describing the synchronization state of this element.
-	 * 
-	 * @param granularity the granularity at which the elements of this sync element
-	 * should be compared. On of <code>GRANULARITY_TIMESTAMP</code>, or 
-	 * <code>GRANULARITY_CONTENTS</code>.
- 	 * @param progress a progress monitor to indicate the duration of the operation, or
-	 * <code>null</code> if progress reporting is not required.
-	 * 
-	 * @return an integer describing the synchronization state of this element.
-	 */
-	public int getSyncKind(int granularity, IProgressMonitor progress);	
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteResource.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteResource.java
deleted file mode 100644
index a095888..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteResource.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.eclipse.team.core.sync;
-
-import java.io.InputStream;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-
-/**
- * Interface for resources that are not local. 
- */
-public interface IRemoteResource extends IAdaptable {
-
-	/**
-	 * Answers a string that describes the name of the remote resource. The name may be
-	 * displayed to the user.
-	 * 
-	 * @return name of the remote resource.
-	 */
-	public String getName();
-	
-	/**
-	 * Answers and array of <code>IRemoteResource</code> elements that are immediate 
-	 * children of this remote resource, in no particular order.
-	 * 
- 	 * @param progress a progress monitor to indicate the duration of the operation, or
-	 * <code>null</code> if progress reporting is not required.
-	 * 
-	 * @return array of immediate children of this remote resource. 
-	 */
-	public IRemoteResource[] members(IProgressMonitor progress) throws TeamException;
-	
-	/**
-	 * Returns a stream over the contents of this remote element.
-	 * 
- 	 * @param progress a progress monitor to indicate the duration of the operation, or
-	 * <code>null</code> if progress reporting is not required.
-	 */
-	public InputStream getContents(IProgressMonitor progress) throws TeamException;
-	
-	/**
-	 * Answers if the remote element may have children.
-	 * 
-	 * @return <code>true</code> if the remote element may have children and 
-	 * <code>false</code> otherwise.
-	 */
-	public boolean isContainer();
-}
-
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteSyncElement.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteSyncElement.java
deleted file mode 100644
index e79b33f..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteSyncElement.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.eclipse.team.core.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.team.core.TeamException;
-
-/**
- * A <code>ILocalSyncElement</code> describes the relative synchronization of a <b>local</b> 
- * and <b>remote</b> resource using a <b>base</b> resource for comparison.
- * <p>
- * Differences between the base and remote resources are classified as <b>incoming changes</b>; 
- * if there is a difference, the remote resource is considered the <b>incoming resource</b>. </p>
- * 
- * @see ILocalSyncElement
- * @see ISyncProvider
- */
-public interface IRemoteSyncElement extends ILocalSyncElement {
-	
-	/**
-	 * Answer the remote sync element of this node. Returns <code>null</code> 
-	 * if there is no remote.
-	 * 
-	 * @return the remote resource in this sync element, or <code>null</code> is there
-	 * is none.
-	 */
-	public IRemoteResource getRemote();
-
-	/**
-	 * Answers <code>true</code> if the base of the given resource is different to the 
-	 * released state of the given resource. If a base does not exist then this method must
-	 * return <code>false</code>.
-	 */
-	public boolean isOutOfDate();
-	
-	/**
-	 * Answers <code>true</code> if the base tree is not to be considered during sync
-	 * comparisons and <code>false</code> if it should. If the base tree is ignored the
-	 * sync comparison can be based on isOutOfDate and isDirty methods only.
-	 */
-	public boolean ignoreBaseTree();
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/ISyncProvider.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/ISyncProvider.java
deleted file mode 100644
index f5a0d40..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/ISyncProvider.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.eclipse.team.core.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-
-/**
- * The <code>ISyncProvider</code> interface exposes a standard mechanism for retreiving
- * local (e.g. checkedout, dirty) and remote (outOfDate) synchronization information from a 
- * provider.
- * <p>
- * Local synchronization information includes only state for local resources without considering the 
- * remote contents. The sync provider API suggests that local sync information should be cached by 
- * a provider whereas remote sync information may not.</p>
- * <p>
- * Remote synchronization information considers the remote contents and allows for determining
- * incoming changes.
- * 
- * @see ILocalSyncElement
- * @see IRemoteSyncElement
- */
-public interface ISyncProvider {
-	
-	/**
-	 * Allows the provider to refresh the resource state information for a resource. This is mostly used
-	 * to allow external provider tools to interoperate with the workbench provider. If an external tool
-	 * modifies the state information for a resource this method can be called to update the provider's
-	 * plug-in state information.
-	 * <p>
-	 * Some state information may be cached by the provider implementation to avoid server round 
-	 * trips and allow responsive API calls via the element tree returned from <code>getLocalSyncTree</code>.  
-	 * Where a caller is relying on this information being current, they should first explicitly refresh 
-	 * the resouce state. Of course, there are no guarantees that  the refreshed information will not 
-	 * become stale immediately after the call to this method.</p>
-	 * <p>
-	 * When resource state changes occur the provider must broadcast state change events 
-	 * to allow all UI components the opportunity to update.</p>
-	 * 
- 	 * @param resources the local resource to be refreshed.
-	 * @param depth the depth to traverse the given resources, taken from <code>IResource</code>
-	 * constants.
-	 * @param progress a progress monitor to indicate the duration of the operation, or
-	 * <code>null</code> if progress reporting is not required.
-	 * @throws TeamProviderException if there is a problem refreshing one or more of
-	 * the resources.  The exception will contain multiple statuses, one for each resource in the
-	 * <code>resources</code> array.  Possible status codes include:
-	 * <ul>
-	 *			<li>IO_FAILED</li>
-	 * 		<li>UNABLE</li>
-	 * </ul>
-	 */
-	public void refreshLocalSync(IResource resource, int depth, IProgressMonitor progress) throws TeamException;
-	
-	/**
-	 * Answers the local synchronization tree. This operation should be very responsive such that it can safely
-	 * be called for UI decorations.
-	 * 
-	 * @param resource the local resource for which to get local synchronization information.
- 	 * @param depth the depth to traverse the given resource, taken from <code>IResource</code>
-	 * constants.
-	 * 
-	 * @return the local sync element that describes the resources sync state. If a depth > 0 was
-	 * provided the returned <code>ILocalSyncElement</code> is a tree of local sync elements
-	 * rooted at the specified local resource.
-	 */
-	public ILocalSyncElement getLocalSyncTree(IResource resource, int depth);
-	
-	/**
-	 * Answers the remote synchronization tree. This operation can be long running.
-	 * 
-	 * @param resource the local resource for which to get remote synchronization information.
- 	 * @param depth the depth to traverse the given resource, taken from <code>IResource</code>
-	 * constants.
-	 * 
-	 * @return the remote sync element that describes the resources sync state. If a depth > 0 was
-	 * provided the returned <code>IRemoteSyncElement</code> is a tree of remote sync elements
-	 * rooted at the specified local resource.
-	 * @throws TeamProviderException if there is a problem retrieving one or more of
-	 * the remote resources.  Possible status codes include:
-	 * <ul>
-	 *			<li>IO_FAILED</li>
-	 * 		<li>UNABLE</li>
-	 * </ul>
-	 */
-	public IRemoteSyncElement getRemoteSyncTree(IResource resource, int depth, IProgressMonitor progress) throws TeamException;
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/LocalSyncElement.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/LocalSyncElement.java
deleted file mode 100644
index 7df9ea3..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/LocalSyncElement.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.eclipse.team.core.sync;
-  
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.core.TeamException;
-
-/**
- * A standard abstract class that provides implementations for <code>ILocalSyncElement</code>
- * methods.
- */
-public abstract class LocalSyncElement implements ILocalSyncElement {
-
-	/**
-	 * Creates a client specific sync element from a <b>local</b> and <b>base</b>
-	 * resources. The <b>base</b> resource may be <code>null</code> and should be
-	 * intialized by the client if available.
-	 * 
-	 * @param local the local resource in the workbench. Will never be <code>null</code>.
-	 * @param base the base resource, may me <code>null</code>.
-	 * @param data client specific data.
-	 * 
-	 * @return a client specific sync element.
-	 */
-	public abstract ILocalSyncElement create(IResource local, IRemoteResource base, Object data);
-	
-	/**
-	 * Client data that is passed to every <code>create()</code> call.
-	 * 
-	 * @return client specific data that will be passed to create.
-	 */
-	protected abstract Object getData();
-	
-	/**
-	 * Client can decide is a specific element should be ignored from this sync element's
-	 * children.
-	 * 
-	 * @param resource the resource to be queried.
-	 * 
-	 * @return <code>true</code> if this element should be ignored and not considered an 
-	 * immediate child of this element, and <code>false</code> otherwise.
-	 */
-	protected abstract boolean isIgnored(IResource resource);
-
-	/*
-	 * @see ILocalSyncElement#getSyncKind(int, IProgressMonitor)
-	 */
-	public int getSyncKind(int granularity, IProgressMonitor progress) {
-				
-		// XXX not sure how local sync will be used?
-		int sync = IN_SYNC;		
-		return sync;
-	}
-			
-	/*
-	 * @see ILocalSyncElement#getName()
-	 */
-	public String getName() {
-		return getLocal().getName();
-	}
-
-	/*
-	 * @see ILocalSyncElement#isContainer()
-	 */
-	public boolean isContainer() {
-		return getLocal().getType() != IResource.FILE;
-	}
-
-	/*
-	 * @see ILocalSyncElement#members(IProgressMonitor)
-	 */
-	public ILocalSyncElement[] members(IProgressMonitor monitor) throws TeamException {
-		try {
-			if(getLocal().getType() != IResource.FILE) {
-				IResource[] members = ((IContainer)getLocal()).members();
-				List syncElements = new ArrayList(5);
-				for (int i = 0; i < members.length; i++) {
-					IResource iResource = members[i];
-					// the base is initialy set to null, however the concrete subclass should
-					// initialize the base if one is available.
-					if(!isIgnored(iResource)) {
-						syncElements.add(create(iResource, null, getData()));
-					}
-				}
-				return (ILocalSyncElement[]) syncElements.toArray(new ILocalSyncElement[syncElements.size()]);		
-			} else {
-				return new ILocalSyncElement[0];
-			}
-		} catch(CoreException e) {
-			throw new TeamException(e.getStatus());
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/RemoteSyncElement.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/RemoteSyncElement.java
deleted file mode 100644
index bbb8924..0000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/RemoteSyncElement.java
+++ /dev/null
@@ -1,377 +0,0 @@
-package org.eclipse.team.core.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.internal.Assert;
-
-/**
- * A standard abstract class that provides implementations for interesting 
- * <code>IRemoteSyncElement</code> methods. The <code>members</code> method
- * provided will create a unified tree based on the local, base, and remote
- * children. The <code>getSyncKind</code> method will calculate the relative
- * sync kind of the remote node.
- */
-public abstract class RemoteSyncElement extends LocalSyncElement implements IRemoteSyncElement {
-
-	/**
-	 * Creates a client specific sync element from a <b>local</b>, <b>base</b>, and 
-	 * <b>remote</b> resources. The <b>base</b> and <b>remote</b> resource may be 
-	 * <code>null</code>.
-	 * 
-	 * @param local the local resource in the workbench. Will never be <code>null</code>.
-	 * @param base the base resource, may me <code>null</code>.
-	 * @param remote the remote resource, may be <code>null</code>.
-	 * @param data client specific data.
-	 * 
-	 * @return a client specific sync element.
-	 */
-	public abstract IRemoteSyncElement create(boolean ignoreBaseTree, IResource local, IRemoteResource base, IRemoteResource remote, Object data);
-		
-	/*
-	 * @see ILocalSyncElement#members()
-	 */
-	public ILocalSyncElement[] members(IProgressMonitor progress) throws TeamException {
-		// create union of the local, base, and remote trees
-		IRemoteResource remote = getRemote();
-		IRemoteResource base = getBase();
-		IResource local = getLocal();
-		
-		IRemoteResource[] remoteChildren =
-			remote != null ? remote.members(progress) : new IRemoteResource[0];
-			
-		IRemoteResource[] baseChildren =
-			base != null && !ignoreBaseTree() ? base.members(progress) : new IRemoteResource[0];
-			
-		IResource[] localChildren;			
-		try {	
-			if( local.getType() != IResource.FILE && local.exists() ) {
-				localChildren = ((IContainer)local).members();
-			} else {
-				localChildren = new IResource[0];
-			}
-		} catch(CoreException e) {
-			throw new TeamException(e.getStatus());
-		}
-			
-		if (remoteChildren.length > 0 || localChildren.length > 0) {
-			List syncChildren = new ArrayList(10);
-			Set allSet = new HashSet(20);
-			Map localSet = null;
-			Map remoteSet = null;
-			Map baseSet = null;
-
-			if (localChildren.length > 0) {
-				localSet = new HashMap(10);
-				for (int i = 0; i < localChildren.length; i++) {
-					IResource localChild = localChildren[i];
-					String name = localChild.getName();
-					localSet.put(name, localChild);
-					allSet.add(name);
-				}
-			}
-
-			if (remoteChildren.length > 0) {
-				remoteSet = new HashMap(10);
-				for (int i = 0; i < remoteChildren.length; i++) {
-					IRemoteResource remoteChild = remoteChildren[i];
-					String name = remoteChild.getName();
-					remoteSet.put(name, remoteChild);
-					allSet.add(name);
-				}
-			}
-			
-			if (baseChildren.length > 0) {
-				baseSet = new HashMap(10);
-				for (int i = 0; i < baseChildren.length; i++) {
-					IRemoteResource baseChild = baseChildren[i];
-					String name = baseChild.getName();
-					baseSet.put(name, baseChild);
-					allSet.add(name);
-				}
-			}
-			
-			Iterator e = allSet.iterator();
-			while (e.hasNext()) {
-				String keyChildName = (String) e.next();
-
-				if (progress != null) {
-					if (progress.isCanceled()) {
-						throw new OperationCanceledException();
-					}
-					// XXX show some progress?
-				}
-
-				IResource localChild =
-					localSet != null ? (IResource) localSet.get(keyChildName) : null;
-
-				IRemoteResource remoteChild =
-					remoteSet != null ? (IRemoteResource) remoteSet.get(keyChildName) : null;
-					
-				IRemoteResource baseChild =
-					baseSet != null ? (IRemoteResource) baseSet.get(keyChildName) : null;
-
-
-				if (localChild == null) {
-					// there has to be a remote resource available if we got this far
-					Assert.isTrue(remoteChild != null || baseChild != null);
-					boolean isContainer = remoteChild != null ? remoteChild.isContainer() : baseChild.isContainer();
-					
-					localChild =	getResourceChild(local /* parent */, keyChildName, isContainer);
-				}
-
-				if(!localChild.exists() || !isIgnored(localChild)) {
-					syncChildren.add(create(ignoreBaseTree(), localChild, baseChild, remoteChild, getData()));
-				}
-			}
-			return (IRemoteSyncElement[]) syncChildren.toArray(new IRemoteSyncElement[syncChildren.size()]);
-		}
-		else {
-			return new IRemoteSyncElement[0];
-		}
-	}
-
-	/*
-	 * @see ILocalSyncElement#getSyncKind(int, IProgressMonitor)
-	 */
-	public int getSyncKind(int granularity, IProgressMonitor progress) {
-		int description = IN_SYNC;
-	
-		IResource local = getLocal();
-		boolean localExists = getLocal().exists();
-		IRemoteResource remote = getRemote();
-		IRemoteResource base = getBase();
-		
-		boolean isDirty = isDirty();
-		boolean isOutOfDate = isOutOfDate();
-	
-		boolean threeWay = (base != null && !ignoreBaseTree() ? true : false);
-	
-
-		// XXX projects are always in sync.
-		if(local.getType() == IResource.PROJECT) {
-			if (remote == null) 
-				return OUTGOING | ADDITION;
-			else 
-				return description;
-		}
-
-		if (threeWay) {
-			if (base == null) {
-				if (remote == null) {
-					if (!localExists) {
-						Assert.isTrue(false);
-  					} else {
-						description = OUTGOING | ADDITION;
-					}
-				} else {
-					if (!localExists) {
-						description = INCOMING | ADDITION;
-					} else {
-						description = CONFLICTING | ADDITION;
-						if (compare(granularity, false, local, remote))
-							description |= PSEUDO_CONFLICT;
-					}
-				}
-			} else {
-				if (!localExists) {
-					if (remote == null) {
-						description = CONFLICTING | DELETION | PSEUDO_CONFLICT;
-					} else {
-						if (compare(granularity, !isOutOfDate, base, remote))
-							description = OUTGOING | DELETION;
-						else
-							description = CONFLICTING | CHANGE;
-					}
-				} else {
-					if (remote == null) {
-						if (compare(granularity, !isDirty, local, base))
-							description = INCOMING | DELETION;
-						else
-							description = CONFLICTING | CHANGE;
-					} else {
-						boolean ay = compare(granularity, !isDirty, local, base);
-						boolean am = compare(granularity, !isOutOfDate, base, remote);
-						if (ay && am) {
-							;
-						} else if (ay && !am) {
-							description = INCOMING | CHANGE;
-						} else if (!ay && am) {
-							description = OUTGOING | CHANGE;
-						} else {
-							description = CONFLICTING | CHANGE;
-						}
-						if (description != IN_SYNC && compare(granularity, false, local, remote))
-							description |= PSEUDO_CONFLICT;
-					}
-				}
-			}
-		} else { // three-way compare without access to base contents
-			if (remote == null) {
-				if (!localExists) {
-					// this should never happen
-					Assert.isTrue(false);
-				} else {
-					// no remote but a local
-					if (!isDirty && isOutOfDate) {
-						description = INCOMING | DELETION;
-					} else if (isDirty && isOutOfDate) {
-						description = CONFLICTING | CHANGE;
-					} else if (!isDirty && !isOutOfDate) {
-						description = OUTGOING | ADDITION;
-					}
-				}
-			} else {
-				if (!localExists) {
-					// a remote but no local
-					if (!isDirty && !isOutOfDate) {
-						description = INCOMING | ADDITION;
-					} else if (isDirty && !isOutOfDate) {
-						description = OUTGOING | DELETION;
-					} else if (isDirty && isOutOfDate) {
-						description = CONFLICTING | CHANGE;
-					}
-				} else {
-					// have a local and a remote			
-					if (!isDirty && !isOutOfDate && base != null) {
-						// ignore, there is no change;
-					} else if (!isDirty && isOutOfDate) {
-						description = INCOMING | CHANGE;
-					} else if (isDirty && !isOutOfDate) {
-						description = OUTGOING | CHANGE;
-					} else {
-						description = CONFLICTING | CHANGE;
-					}
-					// if contents are the same, then mark as pseudo change
-					if (description != IN_SYNC && compare(granularity, false, local, remote))
-						description |= PSEUDO_CONFLICT;
-				}
-			}
-		}
-		return description;
-	}
-	
-	/**
-	 * Helper methods for comparisons that returns true if the resource contents are the same.
-	 * 
-	 * If timestampDiff is true then the timestamps don't differ and there's no point checking the
-	 * contents.
-	 */
-	private boolean compare(int granularity, boolean timestampDiff, IResource e1, IRemoteResource e2) {
-		if (!timestampDiff && (granularity == GRANULARITY_CONTENTS)) {
-			return contentsEqual(getContents(e1), getContents(e2));
-		} else {
-			return timestampDiff;
-		}
-	}
-	
-	private boolean compare(int granularity, boolean timestampDiff, IRemoteResource e1, IRemoteResource e2) {
-		if (!timestampDiff && (granularity == GRANULARITY_CONTENTS)) {
-			return contentsEqual(getContents(e1), getContents(e2));
-		} else {
-			return timestampDiff;
-		}
-	}
-	
-	private InputStream getContents(IResource resource) {
-		try {
-			if (resource instanceof IStorage)
-				return new BufferedInputStream(((IStorage) resource).getContents());
-			return null;
-		} catch (CoreException e) {
-			return null;
-		}
-	}
-	
-	private InputStream getContents(IRemoteResource remote) {
-		try {
-			if (!remote.isContainer())
-				return new BufferedInputStream(remote.getContents(new NullProgressMonitor()));
-			return null;
-		} catch (TeamException exception) {
-			// The remote node has gone away .
-			return null;	
-		}
-	}
-	
-	/**
-	 * Returns <code>true</code> if both input streams byte contents is identical. 
-	 *
-	 * @param input1 first input to contents compare
-	 * @param input2 second input to contents compare
-	 * @return <code>true</code> if content is equal
-	 */
-	private boolean contentsEqual(InputStream is1, InputStream is2) {
-		if (is1 == is2)
-			return true;
-
-		if (is1 == null && is2 == null) // no byte contents
-			return true;
-
-		try {
-			if (is1 == null || is2 == null) // only one has contents
-				return false;
-
-			while (true) {
-				int c1 = is1.read();
-				int c2 = is2.read();
-				if (c1 == -1 && c2 == -1)
-					return true;
-				if (c1 != c2)
-					break;
-
-			}
-		} catch (IOException ex) {
-		} finally {
-			if (is1 != null) {
-				try {
-					is1.close();
-				} catch (IOException ex) {
-				}
-			}
-			if (is2 != null) {
-				try {
-					is2.close();
-				} catch (IOException ex) {
-				}
-			}
-		}
-		return false;
-	}
-	
-	/*
-	 * Returns a handle to a non-existing resource.
-	 */
-	private IResource getResourceChild(IResource parent, String childName, boolean isContainer) {
-		if (parent.getType() == IResource.FILE) {
-			return null;
-		}
-		if (isContainer) {
-			return ((IContainer) parent).getFolder(new Path(childName));
-		} else {
-			return ((IContainer) parent).getFile(new Path(childName));
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ssh/.classpath b/bundles/org.eclipse.team.cvs.ssh/.classpath
deleted file mode 100644
index 6b186df..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/.classpath
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
-    <classpathentry kind="src" path="src"/>
-    <classpathentry kind="src" path="/org.eclipse.team.core"/>
-    <classpathentry kind="src" path="/org.eclipse.team.cvs.core"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
-    <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.team.cvs.ssh/.cvsignore b/bundles/org.eclipse.team.cvs.ssh/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ssh/.vcm_meta b/bundles/org.eclipse.team.cvs.ssh/.vcm_meta
deleted file mode 100644
index 190af95..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/.vcm_meta
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-description>
-	<nature id="org.eclipse.jdt.core.javanature"/>
-	<nature id="org.eclipse.team.cvs.core.cvsnature"/>
-	<reference project-name="org.eclipse.team.core"/>
-	<reference project-name="org.eclipse.core.runtime"/>
-	<reference project-name="org.eclipse.team.cvs.core"/>
-	<builder name="org.eclipse.jdt.core.javabuilder">
-	</builder>
-</project-description>
diff --git a/bundles/org.eclipse.team.cvs.ssh/about.html b/bundles/org.eclipse.team.cvs.ssh/about.html
deleted file mode 100644
index e3c15c8..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/about.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<html>

-<head>

-<title>About</title>

-<style type="text/css">

-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}

-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}

-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}

-code { font-family: "Courier New", Courier, mono; font-size: 10pt}

-sup { font-family: arial,helvetica,geneva; font-size: 10px}

-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}

-li { font-family: arial, helvetica, geneva; font-size: 10pt}

-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}

-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect(   ); margin-top: 5mm; margin-left: 3mm}

-</style>

-</head>

-<body lang="EN-US" link="blue" vlink="purple">

-<table border="0" cellspacing="5" cellpadding="2" width="100%" >

-  <tr> 

-    <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>

-  </tr>

-  <tr> 

-    <td> 

-<p>11th December, 2001</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

-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> &quot;CPL&quot;.  For purposes of the CPL, &quot;Program&quot; will mean the Content.</p>

-

-<h3>Third Party Content</h3>

-

-<p>The Content includes items that have been sourced from third parties as follows:</p>

-

-<p><b>The Java (TM) Ssh Applet</b></p>

-<p>The plug-in is based on software developed by Cedric Gourio.

-If the source code is included, it is located in teamcvssshsrc.zip.  The binary code is located in teamcvsssh.jar.  The Java Ssh Applet includes the following copyright notice which

-must be included in any redistribution:</p>

-

-<blockquote>

-	Copyright (c) 1998 Cedric Gourio<br />

-    (<a href="http://www.cl.cam.ac.uk/~fapp2/software/java-ssh/">http://www.cl.cam.ac.uk/~fapp2/software/java-ssh/</a>)<br />

-    (<a href="mailto:javassh@france-mail.com">javassh@france-mail.com</a>)

-

-	<p>This program is FREE FOR COMMERCIAL AND NON-COMMERCIAL USE.<br />

-	You can freely modify the code.</p>

-

-	<p>You should however include this copyright notice in any redistribution<br /> 

-	and please keep in touch with the author for any feedback.</p>

-</blockquote>

-

-<p><b>The Blowfish Encryption Algorithm</b></p>

-<p>The plug-in is based on an algorithm developed by Bruce Schneier.  The algorithm was originally published in

-a paper that is located at <a href="http://www.counterpane.com/bfsverlag.html">http://www.counterpane.com/bfsverlag.html</a>.

-Your use of the Blowfish Encryption Algorithm in both source and binary code form contained in the plug-in is not subject to any

-additional terms and conditions.  If the source code, Blowfish.java is included, it is located in teamcvssshsrc.zip.  The binary code, Blowfish.class is located in

-teamcvsssh.jar.</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>

-

-<h3>Cryptography</h3>

-

-<p><b>Export Control</b></p>

-<p>The plug-in contains encryption software.  The country in which you are currently may have restrictions on the import, possession,

-and use, and/or re-export to another country, of encryption software.  BEFORE using any encryption software, please check the country's

-laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this

-is permitted.</p>

-

-<p><b>Encryption Items</b></p>

-

-<p>Details of the encryption software in this plug-in are provided to assist in obtaining relevant export control classification and approval.

-Cryptography in this plug-in has been classified as Export Commodity Control Number (ECCN) 5D002.c.1 by the U.S. Government Department of Commerce,

-Bureau of Export Administration and deemed eligible for export under License Exception ENC Technology Software Unrestricted (TSU) for object code

-and (cryptographic) source code, and License Exception ENC Retail for object code and no (cryptographic) source code.</p>

-

-<p>The plug-in contains an implementation of the Secure Shell (SSH) protocol that encrypts the network traffic (program code files

-in file versioning systems) between a Concurrent Versions System (CVS) server and a CVS client.  Data is encrypted using the Blowfish algorithm

-which is a 64-bit symmetric cipher that uses a key varying in length from 32 bits to 448 bits.  The RSA PKCS #1 v1.5 key exchange algorithm is

-used to authenticate and exchange keys with a minimum modulus size of 96 bits and a maximum modulus size theoretically unlimited since the

-implementation uses the java.math.BigInteger class which has a maximum positive integer range limited only by the available memory in the computer.

-In practice, the key length is defined by the CVS server with which communication is initiated.</p>

-

-<p>The following Java classes contain encryption items (the plug-in may contain both binary and source code):</p>

-

-<ul>

-	<li>org.eclipse.team.internal.ccvs.ssh.Blowfish</li>

-	<li>org.eclipse.team.internal.ccvs.ssh.Cipher</li>

-	<li>org.eclipse.team.internal.ccvs.ssh.Client</li>

-	<li>org.eclipse.team.internal.ccvs.ssh.ClientPacket</li>

-	<li>org.eclipse.team.internal.ccvs.ssh.Misc</li>

-</ul>		

-

-<small>Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.</small>

-</td></tr></table>

-</body>

-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ssh/build.properties b/bundles/org.eclipse.team.cvs.ssh/build.properties
deleted file mode 100644
index 67f32a9..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Eclipse build contribution
-source.teamcvsssh.jar=src/
-bin.includes=about.html,plugin.xml.off,plugin.properties,*.jar
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ssh/plugin.properties b/bundles/org.eclipse.team.cvs.ssh/plugin.properties
deleted file mode 100644
index 0150fce..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/plugin.properties
+++ /dev/null
@@ -1 +0,0 @@
-pluginName = CVS SSH Core
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ssh/plugin.xml b/bundles/org.eclipse.team.cvs.ssh/plugin.xml
deleted file mode 100644
index 744d765..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/plugin.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
-	name="%pluginName"
-	id="org.eclipse.team.cvs.ssh"
-	version="2.0.0"
-	class="org.eclipse.team.internal.ccvs.ssh.SSHPlugin"
-	provider-name="Object Technology International, Inc."
->
-
-  <requires>
-    <import plugin="org.eclipse.core.resources"/>
-    <import plugin="org.eclipse.team.cvs.core"/>
-  </requires>
-
-  <runtime>
-    <library name="teamcvsssh.jar">
-      <export name="*"/>
-    </library>
-  </runtime>
-</plugin>
diff --git a/bundles/org.eclipse.team.cvs.ssh/plugin.xml.off b/bundles/org.eclipse.team.cvs.ssh/plugin.xml.off
deleted file mode 100644
index dbc05c2..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/plugin.xml.off
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<plugin

-	name="%pluginName"

-	id="org.eclipse.team.cvs.ssh"

-	version="2.0.0"

-	class="org.eclipse.team.internal.ccvs.ssh.SSHPlugin"

-	provider-name="Object Technology International, Inc."

->

-

-  <requires>

-    <import plugin="org.eclipse.core.resources"/>

-    <import plugin="org.eclipse.team.cvs.core"/>

-  </requires>

-

-  <runtime>

-    <library name="teamcvsssh.jar">

-      <export name="*"/>

-    </library>

-  </runtime>

-

-  <extension id="ssh" point="org.eclipse.team.cvs.core.connectionmethods">

-    <adapter>

-      <run class="org.eclipse.team.internal.ccvs.ssh.SSHMethod">

-        <parameter name="trace" value="false" /> 

-      </run>

-    </adapter>

-  </extension>

-

-</plugin>

diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Blowfish.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Blowfish.java
deleted file mode 100644
index 5cb9222..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Blowfish.java
+++ /dev/null
@@ -1,1214 +0,0 @@
-package org.eclipse.team.internal.ccvs.ssh;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-public class Blowfish extends Cipher {

-	private int[] P = new int[18];

-	private int[][] S = new int[4][256];

-

-	private int lastEncipherXL = 0;

-	private int lastEncipherXR = 0;

-	private int lastDecipherXL = 0;

-	private int lastDecipherXR = 0;

-

-	private final static int[] INIT_DATA =

-		{

-			0x243f6a88,

-			0x85a308d3,

-			0x13198a2e,

-			0x03707344,

-			0xa4093822,

-			0x299f31d0,

-			0x082efa98,

-			0xec4e6c89,

-			0x452821e6,

-			0x38d01377,

-			0xbe5466cf,

-			0x34e90c6c,

-			0xc0ac29b7,

-			0xc97c50dd,

-			0x3f84d5b5,

-			0xb5470917,

-			0x9216d5d9,

-			0x8979fb1b,

-			0xd1310ba6,

-			0x98dfb5ac,

-			0x2ffd72db,

-			0xd01adfb7,

-			0xb8e1afed,

-			0x6a267e96,

-			0xba7c9045,

-			0xf12c7f99,

-			0x24a19947,

-			0xb3916cf7,

-			0x0801f2e2,

-			0x858efc16,

-			0x636920d8,

-			0x71574e69,

-			0xa458fea3,

-			0xf4933d7e,

-			0x0d95748f,

-			0x728eb658,

-			0x718bcd58,

-			0x82154aee,

-			0x7b54a41d,

-			0xc25a59b5,

-			0x9c30d539,

-			0x2af26013,

-			0xc5d1b023,

-			0x286085f0,

-			0xca417918,

-			0xb8db38ef,

-			0x8e79dcb0,

-			0x603a180e,

-			0x6c9e0e8b,

-			0xb01e8a3e,

-			0xd71577c1,

-			0xbd314b27,

-			0x78af2fda,

-			0x55605c60,

-			0xe65525f3,

-			0xaa55ab94,

-			0x57489862,

-			0x63e81440,

-			0x55ca396a,

-			0x2aab10b6,

-			0xb4cc5c34,

-			0x1141e8ce,

-			0xa15486af,

-			0x7c72e993,

-			0xb3ee1411,

-			0x636fbc2a,

-			0x2ba9c55d,

-			0x741831f6,

-			0xce5c3e16,

-			0x9b87931e,

-			0xafd6ba33,

-			0x6c24cf5c,

-			0x7a325381,

-			0x28958677,

-			0x3b8f4898,

-			0x6b4bb9af,

-			0xc4bfe81b,

-			0x66282193,

-			0x61d809cc,

-			0xfb21a991,

-			0x487cac60,

-			0x5dec8032,

-			0xef845d5d,

-			0xe98575b1,

-			0xdc262302,

-			0xeb651b88,

-			0x23893e81,

-			0xd396acc5,

-			0x0f6d6ff3,

-			0x83f44239,

-			0x2e0b4482,

-			0xa4842004,

-			0x69c8f04a,

-			0x9e1f9b5e,

-			0x21c66842,

-			0xf6e96c9a,

-			0x670c9c61,

-			0xabd388f0,

-			0x6a51a0d2,

-			0xd8542f68,

-			0x960fa728,

-			0xab5133a3,

-			0x6eef0b6c,

-			0x137a3be4,

-			0xba3bf050,

-			0x7efb2a98,

-			0xa1f1651d,

-			0x39af0176,

-			0x66ca593e,

-			0x82430e88,

-			0x8cee8619,

-			0x456f9fb4,

-			0x7d84a5c3,

-			0x3b8b5ebe,

-			0xe06f75d8,

-			0x85c12073,

-			0x401a449f,

-			0x56c16aa6,

-			0x4ed3aa62,

-			0x363f7706,

-			0x1bfedf72,

-			0x429b023d,

-			0x37d0d724,

-			0xd00a1248,

-			0xdb0fead3,

-			0x49f1c09b,

-			0x075372c9,

-			0x80991b7b,

-			0x25d479d8,

-			0xf6e8def7,

-			0xe3fe501a,

-			0xb6794c3b,

-			0x976ce0bd,

-			0x04c006ba,

-			0xc1a94fb6,

-			0x409f60c4,

-			0x5e5c9ec2,

-			0x196a2463,

-			0x68fb6faf,

-			0x3e6c53b5,

-			0x1339b2eb,

-			0x3b52ec6f,

-			0x6dfc511f,

-			0x9b30952c,

-			0xcc814544,

-			0xaf5ebd09,

-			0xbee3d004,

-			0xde334afd,

-			0x660f2807,

-			0x192e4bb3,

-			0xc0cba857,

-			0x45c8740f,

-			0xd20b5f39,

-			0xb9d3fbdb,

-			0x5579c0bd,

-			0x1a60320a,

-			0xd6a100c6,

-			0x402c7279,

-			0x679f25fe,

-			0xfb1fa3cc,

-			0x8ea5e9f8,

-			0xdb3222f8,

-			0x3c7516df,

-			0xfd616b15,

-			0x2f501ec8,

-			0xad0552ab,

-			0x323db5fa,

-			0xfd238760,

-			0x53317b48,

-			0x3e00df82,

-			0x9e5c57bb,

-			0xca6f8ca0,

-			0x1a87562e,

-			0xdf1769db,

-			0xd542a8f6,

-			0x287effc3,

-			0xac6732c6,

-			0x8c4f5573,

-			0x695b27b0,

-			0xbbca58c8,

-			0xe1ffa35d,

-			0xb8f011a0,

-			0x10fa3d98,

-			0xfd2183b8,

-			0x4afcb56c,

-			0x2dd1d35b,

-			0x9a53e479,

-			0xb6f84565,

-			0xd28e49bc,

-			0x4bfb9790,

-			0xe1ddf2da,

-			0xa4cb7e33,

-			0x62fb1341,

-			0xcee4c6e8,

-			0xef20cada,

-			0x36774c01,

-			0xd07e9efe,

-			0x2bf11fb4,

-			0x95dbda4d,

-			0xae909198,

-			0xeaad8e71,

-			0x6b93d5a0,

-			0xd08ed1d0,

-			0xafc725e0,

-			0x8e3c5b2f,

-			0x8e7594b7,

-			0x8ff6e2fb,

-			0xf2122b64,

-			0x8888b812,

-			0x900df01c,

-			0x4fad5ea0,

-			0x688fc31c,

-			0xd1cff191,

-			0xb3a8c1ad,

-			0x2f2f2218,

-			0xbe0e1777,

-			0xea752dfe,

-			0x8b021fa1,

-			0xe5a0cc0f,

-			0xb56f74e8,

-			0x18acf3d6,

-			0xce89e299,

-			0xb4a84fe0,

-			0xfd13e0b7,

-			0x7cc43b81,

-			0xd2ada8d9,

-			0x165fa266,

-			0x80957705,

-			0x93cc7314,

-			0x211a1477,

-			0xe6ad2065,

-			0x77b5fa86,

-			0xc75442f5,

-			0xfb9d35cf,

-			0xebcdaf0c,

-			0x7b3e89a0,

-			0xd6411bd3,

-			0xae1e7e49,

-			0x00250e2d,

-			0x2071b35e,

-			0x226800bb,

-			0x57b8e0af,

-			0x2464369b,

-			0xf009b91e,

-			0x5563911d,

-			0x59dfa6aa,

-			0x78c14389,

-			0xd95a537f,

-			0x207d5ba2,

-			0x02e5b9c5,

-			0x83260376,

-			0x6295cfa9,

-			0x11c81968,

-			0x4e734a41,

-			0xb3472dca,

-			0x7b14a94a,

-			0x1b510052,

-			0x9a532915,

-			0xd60f573f,

-			0xbc9bc6e4,

-			0x2b60a476,

-			0x81e67400,

-			0x08ba6fb5,

-			0x571be91f,

-			0xf296ec6b,

-			0x2a0dd915,

-			0xb6636521,

-			0xe7b9f9b6,

-			0xff34052e,

-			0xc5855664,

-			0x53b02d5d,

-			0xa99f8fa1,

-			0x08ba4799,

-			0x6e85076a,

-			0x4b7a70e9,

-			0xb5b32944,

-			0xdb75092e,

-			0xc4192623,

-			0xad6ea6b0,

-			0x49a7df7d,

-			0x9cee60b8,

-			0x8fedb266,

-			0xecaa8c71,

-			0x699a17ff,

-			0x5664526c,

-			0xc2b19ee1,

-			0x193602a5,

-			0x75094c29,

-			0xa0591340,

-			0xe4183a3e,

-			0x3f54989a,

-			0x5b429d65,

-			0x6b8fe4d6,

-			0x99f73fd6,

-			0xa1d29c07,

-			0xefe830f5,

-			0x4d2d38e6,

-			0xf0255dc1,

-			0x4cdd2086,

-			0x8470eb26,

-			0x6382e9c6,

-			0x021ecc5e,

-			0x09686b3f,

-			0x3ebaefc9,

-			0x3c971814,

-			0x6b6a70a1,

-			0x687f3584,

-			0x52a0e286,

-			0xb79c5305,

-			0xaa500737,

-			0x3e07841c,

-			0x7fdeae5c,

-			0x8e7d44ec,

-			0x5716f2b8,

-			0xb03ada37,

-			0xf0500c0d,

-			0xf01c1f04,

-			0x0200b3ff,

-			0xae0cf51a,

-			0x3cb574b2,

-			0x25837a58,

-			0xdc0921bd,

-			0xd19113f9,

-			0x7ca92ff6,

-			0x94324773,

-			0x22f54701,

-			0x3ae5e581,

-			0x37c2dadc,

-			0xc8b57634,

-			0x9af3dda7,

-			0xa9446146,

-			0x0fd0030e,

-			0xecc8c73e,

-			0xa4751e41,

-			0xe238cd99,

-			0x3bea0e2f,

-			0x3280bba1,

-			0x183eb331,

-			0x4e548b38,

-			0x4f6db908,

-			0x6f420d03,

-			0xf60a04bf,

-			0x2cb81290,

-			0x24977c79,

-			0x5679b072,

-			0xbcaf89af,

-			0xde9a771f,

-			0xd9930810,

-			0xb38bae12,

-			0xdccf3f2e,

-			0x5512721f,

-			0x2e6b7124,

-			0x501adde6,

-			0x9f84cd87,

-			0x7a584718,

-			0x7408da17,

-			0xbc9f9abc,

-			0xe94b7d8c,

-			0xec7aec3a,

-			0xdb851dfa,

-			0x63094366,

-			0xc464c3d2,

-			0xef1c1847,

-			0x3215d908,

-			0xdd433b37,

-			0x24c2ba16,

-			0x12a14d43,

-			0x2a65c451,

-			0x50940002,

-			0x133ae4dd,

-			0x71dff89e,

-			0x10314e55,

-			0x81ac77d6,

-			0x5f11199b,

-			0x043556f1,

-			0xd7a3c76b,

-			0x3c11183b,

-			0x5924a509,

-			0xf28fe6ed,

-			0x97f1fbfa,

-			0x9ebabf2c,

-			0x1e153c6e,

-			0x86e34570,

-			0xeae96fb1,

-			0x860e5e0a,

-			0x5a3e2ab3,

-			0x771fe71c,

-			0x4e3d06fa,

-			0x2965dcb9,

-			0x99e71d0f,

-			0x803e89d6,

-			0x5266c825,

-			0x2e4cc978,

-			0x9c10b36a,

-			0xc6150eba,

-			0x94e2ea78,

-			0xa5fc3c53,

-			0x1e0a2df4,

-			0xf2f74ea7,

-			0x361d2b3d,

-			0x1939260f,

-			0x19c27960,

-			0x5223a708,

-			0xf71312b6,

-			0xebadfe6e,

-			0xeac31f66,

-			0xe3bc4595,

-			0xa67bc883,

-			0xb17f37d1,

-			0x018cff28,

-			0xc332ddef,

-			0xbe6c5aa5,

-			0x65582185,

-			0x68ab9802,

-			0xeecea50f,

-			0xdb2f953b,

-			0x2aef7dad,

-			0x5b6e2f84,

-			0x1521b628,

-			0x29076170,

-			0xecdd4775,

-			0x619f1510,

-			0x13cca830,

-			0xeb61bd96,

-			0x0334fe1e,

-			0xaa0363cf,

-			0xb5735c90,

-			0x4c70a239,

-			0xd59e9e0b,

-			0xcbaade14,

-			0xeecc86bc,

-			0x60622ca7,

-			0x9cab5cab,

-			0xb2f3846e,

-			0x648b1eaf,

-			0x19bdf0ca,

-			0xa02369b9,

-			0x655abb50,

-			0x40685a32,

-			0x3c2ab4b3,

-			0x319ee9d5,

-			0xc021b8f7,

-			0x9b540b19,

-			0x875fa099,

-			0x95f7997e,

-			0x623d7da8,

-			0xf837889a,

-			0x97e32d77,

-			0x11ed935f,

-			0x16681281,

-			0x0e358829,

-			0xc7e61fd6,

-			0x96dedfa1,

-			0x7858ba99,

-			0x57f584a5,

-			0x1b227263,

-			0x9b83c3ff,

-			0x1ac24696,

-			0xcdb30aeb,

-			0x532e3054,

-			0x8fd948e4,

-			0x6dbc3128,

-			0x58ebf2ef,

-			0x34c6ffea,

-			0xfe28ed61,

-			0xee7c3c73,

-			0x5d4a14d9,

-			0xe864b7e3,

-			0x42105d14,

-			0x203e13e0,

-			0x45eee2b6,

-			0xa3aaabea,

-			0xdb6c4f15,

-			0xfacb4fd0,

-			0xc742f442,

-			0xef6abbb5,

-			0x654f3b1d,

-			0x41cd2105,

-			0xd81e799e,

-			0x86854dc7,

-			0xe44b476a,

-			0x3d816250,

-			0xcf62a1f2,

-			0x5b8d2646,

-			0xfc8883a0,

-			0xc1c7b6a3,

-			0x7f1524c3,

-			0x69cb7492,

-			0x47848a0b,

-			0x5692b285,

-			0x095bbf00,

-			0xad19489d,

-			0x1462b174,

-			0x23820e00,

-			0x58428d2a,

-			0x0c55f5ea,

-			0x1dadf43e,

-			0x233f7061,

-			0x3372f092,

-			0x8d937e41,

-			0xd65fecf1,

-			0x6c223bdb,

-			0x7cde3759,

-			0xcbee7460,

-			0x4085f2a7,

-			0xce77326e,

-			0xa6078084,

-			0x19f8509e,

-			0xe8efd855,

-			0x61d99735,

-			0xa969a7aa,

-			0xc50c06c2,

-			0x5a04abfc,

-			0x800bcadc,

-			0x9e447a2e,

-			0xc3453484,

-			0xfdd56705,

-			0x0e1e9ec9,

-			0xdb73dbd3,

-			0x105588cd,

-			0x675fda79,

-			0xe3674340,

-			0xc5c43465,

-			0x713e38d8,

-			0x3d28f89e,

-			0xf16dff20,

-			0x153e21e7,

-			0x8fb03d4a,

-			0xe6e39f2b,

-			0xdb83adf7,

-			0xe93d5a68,

-			0x948140f7,

-			0xf64c261c,

-			0x94692934,

-			0x411520f7,

-			0x7602d4f7,

-			0xbcf46b2e,

-			0xd4a20068,

-			0xd4082471,

-			0x3320f46a,

-			0x43b7d4b7,

-			0x500061af,

-			0x1e39f62e,

-			0x97244546,

-			0x14214f74,

-			0xbf8b8840,

-			0x4d95fc1d,

-			0x96b591af,

-			0x70f4ddd3,

-			0x66a02f45,

-			0xbfbc09ec,

-			0x03bd9785,

-			0x7fac6dd0,

-			0x31cb8504,

-			0x96eb27b3,

-			0x55fd3941,

-			0xda2547e6,

-			0xabca0a9a,

-			0x28507825,

-			0x530429f4,

-			0x0a2c86da,

-			0xe9b66dfb,

-			0x68dc1462,

-			0xd7486900,

-			0x680ec0a4,

-			0x27a18dee,

-			0x4f3ffea2,

-			0xe887ad8c,

-			0xb58ce006,

-			0x7af4d6b6,

-			0xaace1e7c,

-			0xd3375fec,

-			0xce78a399,

-			0x406b2a42,

-			0x20fe9e35,

-			0xd9f385b9,

-			0xee39d7ab,

-			0x3b124e8b,

-			0x1dc9faf7,

-			0x4b6d1856,

-			0x26a36631,

-			0xeae397b2,

-			0x3a6efa74,

-			0xdd5b4332,

-			0x6841e7f7,

-			0xca7820fb,

-			0xfb0af54e,

-			0xd8feb397,

-			0x454056ac,

-			0xba489527,

-			0x55533a3a,

-			0x20838d87,

-			0xfe6ba9b7,

-			0xd096954b,

-			0x55a867bc,

-			0xa1159a58,

-			0xcca92963,

-			0x99e1db33,

-			0xa62a4a56,

-			0x3f3125f9,

-			0x5ef47e1c,

-			0x9029317c,

-			0xfdf8e802,

-			0x04272f70,

-			0x80bb155c,

-			0x05282ce3,

-			0x95c11548,

-			0xe4c66d22,

-			0x48c1133f,

-			0xc70f86dc,

-			0x07f9c9ee,

-			0x41041f0f,

-			0x404779a4,

-			0x5d886e17,

-			0x325f51eb,

-			0xd59bc0d1,

-			0xf2bcc18f,

-			0x41113564,

-			0x257b7834,

-			0x602a9c60,

-			0xdff8e8a3,

-			0x1f636c1b,

-			0x0e12b4c2,

-			0x02e1329e,

-			0xaf664fd1,

-			0xcad18115,

-			0x6b2395e0,

-			0x333e92e1,

-			0x3b240b62,

-			0xeebeb922,

-			0x85b2a20e,

-			0xe6ba0d99,

-			0xde720c8c,

-			0x2da2f728,

-			0xd0127845,

-			0x95b794fd,

-			0x647d0862,

-			0xe7ccf5f0,

-			0x5449a36f,

-			0x877d48fa,

-			0xc39dfd27,

-			0xf33e8d1e,

-			0x0a476341,

-			0x992eff74,

-			0x3a6f6eab,

-			0xf4f8fd37,

-			0xa812dc60,

-			0xa1ebddf8,

-			0x991be14c,

-			0xdb6e6b0d,

-			0xc67b5510,

-			0x6d672c37,

-			0x2765d43b,

-			0xdcd0e804,

-			0xf1290dc7,

-			0xcc00ffa3,

-			0xb5390f92,

-			0x690fed0b,

-			0x667b9ffb,

-			0xcedb7d9c,

-			0xa091cf0b,

-			0xd9155ea3,

-			0xbb132f88,

-			0x515bad24,

-			0x7b9479bf,

-			0x763bd6eb,

-			0x37392eb3,

-			0xcc115979,

-			0x8026e297,

-			0xf42e312d,

-			0x6842ada7,

-			0xc66a2b3b,

-			0x12754ccc,

-			0x782ef11c,

-			0x6a124237,

-			0xb79251e7,

-			0x06a1bbe6,

-			0x4bfb6350,

-			0x1a6b1018,

-			0x11caedfa,

-			0x3d25bdd8,

-			0xe2e1c3c9,

-			0x44421659,

-			0x0a121386,

-			0xd90cec6e,

-			0xd5abea2a,

-			0x64af674e,

-			0xda86a85f,

-			0xbebfe988,

-			0x64e4c3fe,

-			0x9dbc8057,

-			0xf0f7c086,

-			0x60787bf8,

-			0x6003604d,

-			0xd1fd8346,

-			0xf6381fb0,

-			0x7745ae04,

-			0xd736fccc,

-			0x83426b33,

-			0xf01eab71,

-			0xb0804187,

-			0x3c005e5f,

-			0x77a057be,

-			0xbde8ae24,

-			0x55464299,

-			0xbf582e61,

-			0x4e58f48f,

-			0xf2ddfda2,

-			0xf474ef38,

-			0x8789bdc2,

-			0x5366f9c3,

-			0xc8b38e74,

-			0xb475f255,

-			0x46fcd9b9,

-			0x7aeb2661,

-			0x8b1ddf84,

-			0x846a0e79,

-			0x915f95e2,

-			0x466e598e,

-			0x20b45770,

-			0x8cd55591,

-			0xc902de4c,

-			0xb90bace1,

-			0xbb8205d0,

-			0x11a86248,

-			0x7574a99e,

-			0xb77f19b6,

-			0xe0a9dc09,

-			0x662d09a1,

-			0xc4324633,

-			0xe85a1f02,

-			0x09f0be8c,

-			0x4a99a025,

-			0x1d6efe10,

-			0x1ab93d1d,

-			0x0ba5a4df,

-			0xa186f20f,

-			0x2868f169,

-			0xdcb7da83,

-			0x573906fe,

-			0xa1e2ce9b,

-			0x4fcd7f52,

-			0x50115e01,

-			0xa70683fa,

-			0xa002b5c4,

-			0x0de6d027,

-			0x9af88c27,

-			0x773f8641,

-			0xc3604c06,

-			0x61a806b5,

-			0xf0177a28,

-			0xc0f586e0,

-			0x006058aa,

-			0x30dc7d62,

-			0x11e69ed7,

-			0x2338ea63,

-			0x53c2dd94,

-			0xc2c21634,

-			0xbbcbee56,

-			0x90bcb6de,

-			0xebfc7da1,

-			0xce591d76,

-			0x6f05e409,

-			0x4b7c0188,

-			0x39720a3d,

-			0x7c927c24,

-			0x86e3725f,

-			0x724d9db9,

-			0x1ac15bb4,

-			0xd39eb8fc,

-			0xed545578,

-			0x08fca5b5,

-			0xd83d7cd3,

-			0x4dad0fc4,

-			0x1e50ef5e,

-			0xb161e6f8,

-			0xa28514d9,

-			0x6c51133c,

-			0x6fd5c7e7,

-			0x56e14ec4,

-			0x362abfce,

-			0xddc6c837,

-			0xd79a3234,

-			0x92638212,

-			0x670efa8e,

-			0x406000e0,

-			0x3a39ce37,

-			0xd3faf5cf,

-			0xabc27737,

-			0x5ac52d1b,

-			0x5cb0679e,

-			0x4fa33742,

-			0xd3822740,

-			0x99bc9bbe,

-			0xd5118e9d,

-			0xbf0f7315,

-			0xd62d1c7e,

-			0xc700c47b,

-			0xb78c1b6b,

-			0x21a19045,

-			0xb26eb1be,

-			0x6a366eb4,

-			0x5748ab2f,

-			0xbc946e79,

-			0xc6a376d2,

-			0x6549c2c8,

-			0x530ff8ee,

-			0x468dde7d,

-			0xd5730a1d,

-			0x4cd04dc6,

-			0x2939bbdb,

-			0xa9ba4650,

-			0xac9526e8,

-			0xbe5ee304,

-			0xa1fad5f0,

-			0x6a2d519a,

-			0x63ef8ce2,

-			0x9a86ee22,

-			0xc089c2b8,

-			0x43242ef6,

-			0xa51e03aa,

-			0x9cf2d0a4,

-			0x83c061ba,

-			0x9be96a4d,

-			0x8fe51550,

-			0xba645bd6,

-			0x2826a2f9,

-			0xa73a3ae1,

-			0x4ba99586,

-			0xef5562e9,

-			0xc72fefd3,

-			0xf752f7da,

-			0x3f046f69,

-			0x77fa0a59,

-			0x80e4a915,

-			0x87b08601,

-			0x9b09e6ad,

-			0x3b3ee593,

-			0xe990fd5a,

-			0x9e34d797,

-			0x2cf0b7d9,

-			0x022b8b51,

-			0x96d5ac3a,

-			0x017da67d,

-			0xd1cf3ed6,

-			0x7c7d2d28,

-			0x1f9f25cf,

-			0xadf2b89b,

-			0x5ad6b472,

-			0x5a88f54c,

-			0xe029ac71,

-			0xe019a5e6,

-			0x47b0acfd,

-			0xed93fa9b,

-			0xe8d3c48d,

-			0x283b57cc,

-			0xf8d56629,

-			0x79132e28,

-			0x785f0191,

-			0xed756055,

-			0xf7960e44,

-			0xe3d35e8c,

-			0x15056dd4,

-			0x88f46dba,

-			0x03a16125,

-			0x0564f0bd,

-			0xc3eb9e15,

-			0x3c9057a2,

-			0x97271aec,

-			0xa93a072a,

-			0x1b3f6d9b,

-			0x1e6321f5,

-			0xf59c66fb,

-			0x26dcf319,

-			0x7533d928,

-			0xb155fdf5,

-			0x03563482,

-			0x8aba3cbb,

-			0x28517711,

-			0xc20ad9f8,

-			0xabcc5167,

-			0xccad925f,

-			0x4de81751,

-			0x3830dc8e,

-			0x379d5862,

-			0x9320f991,

-			0xea7a90c2,

-			0xfb3e7bce,

-			0x5121ce64,

-			0x774fbe32,

-			0xa8b6e37e,

-			0xc3293d46,

-			0x48de5369,

-			0x6413e680,

-			0xa2ae0810,

-			0xdd6db224,

-			0x69852dfd,

-			0x09072166,

-			0xb39a460a,

-			0x6445c0dd,

-			0x586cdecf,

-			0x1c20c8ae,

-			0x5bbef7dd,

-			0x1b588d40,

-			0xccd2017f,

-			0x6bb4e3bb,

-			0xdda26a7e,

-			0x3a59ff45,

-			0x3e350a44,

-			0xbcb4cdd5,

-			0x72eacea8,

-			0xfa6484bb,

-			0x8d6612ae,

-			0xbf3c6f47,

-			0xd29be463,

-			0x542f5d9e,

-			0xaec2771b,

-			0xf64e6370,

-			0x740e0d8d,

-			0xe75b1357,

-			0xf8721671,

-			0xaf537d5d,

-			0x4040cb08,

-			0x4eb4e2cc,

-			0x34d2466a,

-			0x0115af84,

-			0xe1b00428,

-			0x95983a1d,

-			0x06b89fb4,

-			0xce6ea048,

-			0x6f3f3b82,

-			0x3520ab82,

-			0x011a1d4b,

-			0x277227f8,

-			0x611560b1,

-			0xe7933fdc,

-			0xbb3a792b,

-			0x344525bd,

-			0xa08839e1,

-			0x51ce794b,

-			0x2f32c9b7,

-			0xa01fbac9,

-			0xe01cc87e,

-			0xbcc7d1f6,

-			0xcf0111c3,

-			0xa1e8aac7,

-			0x1a908749,

-			0xd44fbd9a,

-			0xd0dadecb,

-			0xd50ada38,

-			0x0339c32a,

-			0xc6913667,

-			0x8df9317c,

-			0xe0b12b4f,

-			0xf79e59b7,

-			0x43f5bb3a,

-			0xf2d519ff,

-			0x27d9459c,

-			0xbf97222c,

-			0x15e6fc2a,

-			0x0f91fc71,

-			0x9b941525,

-			0xfae59361,

-			0xceb69ceb,

-			0xc2a86459,

-			0x12baa8d1,

-			0xb6c1075e,

-			0xe3056a0c,

-			0x10d25065,

-			0xcb03a442,

-			0xe0ec6e0e,

-			0x1698db3b,

-			0x4c98a0be,

-			0x3278e964,

-			0x9f1f9532,

-			0xe0d392df,

-			0xd3a0342b,

-			0x8971f21e,

-			0x1b0a7441,

-			0x4ba3348c,

-			0xc5be7120,

-			0xc37632d8,

-			0xdf359f8d,

-			0x9b992f2e,

-			0xe60b6f47,

-			0x0fe3f11d,

-			0xe54cda54,

-			0x1edad891,

-			0xce6279cf,

-			0xcd3e7e6f,

-			0x1618b166,

-			0xfd2c1d05,

-			0x848fd2c5,

-			0xf6fb2299,

-			0xf523f357,

-			0xa6327623,

-			0x93a83531,

-			0x56cccd02,

-			0xacf08162,

-			0x5a75ebb5,

-			0x6e163697,

-			0x88d273cc,

-			0xde966292,

-			0x81b949d0,

-			0x4c50901b,

-			0x71c65614,

-			0xe6c6c7bd,

-			0x327a140a,

-			0x45e1d006,

-			0xc3f27b9a,

-			0xc9aa53fd,

-			0x62a80f00,

-			0xbb25bfe2,

-			0x35bdd2f6,

-			0x71126905,

-			0xb2040222,

-			0xb6cbcf7c,

-			0xcd769c2b,

-			0x53113ec0,

-			0x1640e3d3,

-			0x38abbd60,

-			0x2547adf0,

-			0xba38209c,

-			0xf746ce76,

-			0x77afa1c5,

-			0x20756060,

-			0x85cbfe4e,

-			0x8ae88dd8,

-			0x7aaaf9b0,

-			0x4cf9aa7e,

-			0x1948c25c,

-			0x02fb8a8c,

-			0x01c36ae4,

-			0xd6ebe1f9,

-			0x90d4f869,

-			0xa65cdea0,

-			0x3f09252d,

-			0xc208e69f,

-			0xb74e6132,

-			0xce77e25b,

-			0x578fdfe3,

-			0x3ac372e6 };

-public void decipher(byte[] src, int srcOff, byte[] dst, int dstOff, int len) {

-	int xL = lastDecipherXL;

-	int xR = lastDecipherXR;

-

-	int dataXL;

-	int dataXR;

-

-	int[] xLxR = new int[2];

-

-	for (int i = 0; i < len; i = i + 8) {

-		dataXL = (src[srcOff + i] & 0xff) | ((src[srcOff + i + 1] & 0xff) << 8) | ((src[srcOff + i + 2] & 0xff) << 16) | ((src[srcOff + i + 3] & 0xff) << 24);

-		dataXR = (src[srcOff + i + 4] & 0xff) | ((src[srcOff + i + 5] & 0xff) << 8) | ((src[srcOff + i + 6] & 0xff) << 16) | ((src[srcOff + i + 7] & 0xff) << 24);

-

-		decipher(dataXL, dataXR, xLxR);

-

-		xL ^= xLxR[0];

-		xR ^= xLxR[1];

-

-		dst[dstOff + i] = (byte) (xL & 0xff);

-		dst[dstOff + i + 1] = (byte) ((xL >> 8) & 0xff);

-		dst[dstOff + i + 2] = (byte) ((xL >> 16) & 0xff);

-		dst[dstOff + i + 3] = (byte) ((xL >> 24) & 0xff);

-		dst[dstOff + i + 4] = (byte) (xR & 0xff);

-		dst[dstOff + i + 5] = (byte) ((xR >> 8) & 0xff);

-		dst[dstOff + i + 6] = (byte) ((xR >> 16) & 0xff);

-		dst[dstOff + i + 7] = (byte) ((xR >> 24) & 0xff);

-

-		xL = dataXL;

-		xR = dataXR;

-	}

-

-	lastDecipherXL = xL;

-	lastDecipherXR = xR;

-}

-private void decipher(int xL, int xR, int[] xLxR) {

-	xL ^= P[17];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[16];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[15];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[14];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[13];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[12];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[11];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[10];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[9];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[8];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[7];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[6];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[5];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[4];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[3];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[2];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[1];

-	xR ^= P[0];

-

-	xLxR[0] = xR;

-	xLxR[1] = xL;

-}

-public void encipher(byte[] src, int srcOff, byte[] dst, int dstOff, int len) {

-	int xL = lastEncipherXL;

-	int xR = lastEncipherXR;

-

-	int[] xLxR = new int[2];

-

-	for (int i = 0; i < len; i = i + 8) {

-		xL ^= (src[srcOff + i] & 0xff) | ((src[srcOff + i + 1] & 0xff) << 8) | ((src[srcOff + i + 2] & 0xff) << 16) | ((src[srcOff + i + 3] & 0xff) << 24);

-		xR ^= (src[srcOff + i + 4] & 0xff) | ((src[srcOff + i + 5] & 0xff) << 8) | ((src[srcOff + i + 6] & 0xff) << 16) | ((src[srcOff + i + 7] & 0xff) << 24);

-

-		encipher(xL, xR, xLxR);

-

-		xL = xLxR[0];

-		xR = xLxR[1];

-

-		dst[dstOff + i] = (byte) (xL & 0xff);

-		dst[dstOff + i + 1] = (byte) ((xL >> 8) & 0xff);

-		dst[dstOff + i + 2] = (byte) ((xL >> 16) & 0xff);

-		dst[dstOff + i + 3] = (byte) ((xL >> 24) & 0xff);

-		dst[dstOff + i + 4] = (byte) (xR & 0xff);

-		dst[dstOff + i + 5] = (byte) ((xR >> 8) & 0xff);

-		dst[dstOff + i + 6] = (byte) ((xR >> 16) & 0xff);

-		dst[dstOff + i + 7] = (byte) ((xR >> 24) & 0xff);

-	}

-

-	lastEncipherXL = xL;

-	lastEncipherXR = xR;

-}

-private void encipher(int xL, int xR, int[] xLxR) {

-	xL ^= P[0];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[1];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[2];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[3];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[4];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[5];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[6];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[7];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[8];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[9];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[10];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[11];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[12];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[13];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[14];

-	xR ^= (((S[0][(xL >> 24) & 0xff] + S[1][(xL >> 16) & 0xff]) ^ (S[2][(xL >> 8) & 0xff])) + (S[3][xL & 0xff])) ^ P[15];

-	xL ^= (((S[0][(xR >> 24) & 0xff] + S[1][(xR >> 16) & 0xff]) ^ (S[2][(xR >> 8) & 0xff])) + (S[3][xR & 0xff])) ^ P[16];

-	xR ^= P[17];

-

-	xLxR[0] = xR;

-	xLxR[1] = xL;

-}

-public void setKey(byte key[]) {

-	int data = 0;

-	int offset = 0;

-

-	for (int i = 0; i < P.length; ++i) {

-		P[i] = INIT_DATA[offset++];

-	}

-

-	for (int i = 0; i < S.length; ++i) {

-		for (int j = 0; j < S[i].length; ++j) {

-			S[i][j] = INIT_DATA[offset++];

-		}

-	}

-

-	offset = 0;

-	for (int i = 0; i < P.length; ++i) {

-		data = 0;

-		for (int k = 0; k < 4; ++k) {

-			data = (data << 8) | (key[offset++] & 0xff);

-			if (offset >= key.length) {

-				offset = 0;

-			}

-		}

-		P[i] = P[i] ^ data;

-	}

-

-	int[] lr = new int[] { 0, 0 };

-	for (int i = 0; i < P.length; i += 2) {

-		encipher(lr[0], lr[1], lr);

-		P[i] = lr[0];

-		P[i + 1] = lr[1];

-	}

-

-	for (int i = 0; i < S.length; ++i) {

-		for (int j = 0; j < S[i].length; j += 2) {

-			encipher(lr[0], lr[1], lr);

-			S[i][j] = lr[0];

-			S[i][j + 1] = lr[1];

-		}

-	}

-

-	lastEncipherXL = 0;

-	lastEncipherXR = 0;

-	lastDecipherXL = 0;

-	lastDecipherXR = 0;

-}

-}

diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Cipher.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Cipher.java
deleted file mode 100644
index 83a3979..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Cipher.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.eclipse.team.internal.ccvs.ssh;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-public abstract class Cipher {

-public abstract void decipher(byte[] src, int srcPos, byte[] dst, int dstPos, int len);

-public abstract void encipher(byte[] src, int srcPos, byte[] dst, int dstPos, int len);

-public static Cipher getInstance(String algorithm) {

-	try {

-		Class c = Class.forName("org.eclipse.team.internal.ccvs.ssh." + algorithm);

-		return (Cipher) c.newInstance();

-	} catch (Exception e) {

-		return null;

-	}

-}

-public abstract void setKey(byte[] key);

-}

diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java
deleted file mode 100644
index 992149d..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java
+++ /dev/null
@@ -1,645 +0,0 @@
-package org.eclipse.team.internal.ccvs.ssh;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- * An SSH 1.5 client..
- */
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InterruptedIOException;
-import java.io.OutputStream;
-import java.net.Socket;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.internal.ccvs.core.connection.CVSAuthenticationException;
-
-public class Client {
-	// client identification string
-	private static final String clientId = "SSH-1.5-Java 1.2.2\n";
-
-	// server identification string
-	private static String serverId = null;
-
-	// maximum outgoing packet size
-	private static final int MAX_CLIENT_PACKET_SIZE = 1024;
-
-	// packet types
-	private static final int SSH_MSG_DISCONNECT = 1;
-	private static final int SSH_SMSG_PUBLIC_KEY = 2;
-	private static final int SSH_CMSG_SESSION_KEY = 3;
-	private static final int SSH_CMSG_USER = 4;
-	private static final int SSH_CMSG_AUTH_PASSWORD = 9;
-	private static final int SSH_CMSG_REQUEST_PTY = 10;
-	private static final int SSH_CMSG_EXEC_SHELL = 12;
-	private static final int SSH_CMSG_EXEC_CMD = 13;
-	private static final int SSH_SMSG_SUCCESS = 14;
-	private static final int SSH_SMSG_FAILURE = 15;
-	private static final int SSH_CMSG_STDIN_DATA = 16;
-	private static final int SSH_SMSG_STDOUT_DATA = 17;
-	private static final int SSH_SMSG_STDERR_DATA = 18;
-	private static final int SSH_SMSG_EXITSTATUS = 20;
-	private static final int SSH_CMSG_EXIT_CONFIRMATION = 33;
-	private static final int SSH_MSG_DEBUG = 36;
-
-	// cipher names
-	private static String[] cipherNames = { "None", "IDEA", "DES", "3DES", "TSS", "RC4", "Blowfish" };
-
-	// cipher types
-	private static int SSH_CIPHER_NONE = 0;
-	private static int SSH_CIPHER_IDEA = 1;
-	private static int SSH_CIPHER_DES = 2;
-	private static int SSH_CIPHER_3DES = 3;
-	private static int SSH_CIPHER_TSS = 4;
-	private static int SSH_CIPHER_RC4 = 5;
-	private static int SSH_CIPHER_BLOWFISH = 6;
-
-	// preferred cipher types
-	private int[] preferredCipherTypes = { SSH_CIPHER_BLOWFISH };
-
-	// authentication methods 
-	private final int SSH_AUTH_RHOSTS = 1;
-	private final int SSH_AUTH_RSA = 2;
-	private final int SSH_AUTH_PASSWORD = 3;
-	private final int SSH_AUTH_RHOSTS_RSA = 4;
-
-	private String host;
-	private int port;
-	private String username;
-	private String password;
-	private String command;
-
-	private Socket socket;
-	private InputStream socketIn;
-	private OutputStream socketOut;
-	private InputStream is;
-	private OutputStream os;
-	private boolean connected = false;
-	private int timeout = -1;
-
-	private Cipher cipher = null;
-
-	private class StandardInputStream extends InputStream {
-		private ServerPacket packet = null;
-		private InputStream buffer = null;
-		private int buflen = 0;
-		private boolean atEnd = false;
-		private boolean closed = false;
-		private int exitStatus = 0;
-
-		public int available() throws IOException {
-			if (closed) {
-				throw new IOException(SSHPlugin.getResourceString("closed"));
-			}
-
-			int available = buffer == null ? 0 : buffer.available();
-
-			if (available == 0 && socketIn.available() > 0) {
-				fill();
-				available = buffer.available();
-			}
-
-			return available;
-		}
-
-		public void close() throws IOException {
-			if (!closed) {
-				closed = true;
-				if (packet != null) {
-					packet.close(false);
-					buffer = null;
-					packet = null;
-					buflen = 0;
-				}
-			}
-		}
-
-		public int read() throws IOException {
-			if (closed) {
-				throw new IOException(SSHPlugin.getResourceString("closed"));
-			}
-
-			if (atEnd) {
-				return -1;
-			}
-
-			if (buffer == null || buffer.available() == 0) {
-				fill();
-			}
-
-			return buffer.read();
-		}
-
-		public int read(byte b[], int off, int len) throws IOException {
-			if (closed) {
-				throw new IOException(SSHPlugin.getResourceString("closed"));
-			}
-
-			if (atEnd) {
-				return -1;
-			}
-
-			if (buffer == null || buffer.available() == 0) {
-				fill();
-			}
-
-			return buffer.read(b, off, len);
-		}
-
-		private void fill() throws IOException {
-			if (buffer != null) {
-				buffer.close();
-			}
-
-			packet = new ServerPacket(socketIn, cipher);
-			int packetType = packet.getType();
-
-			switch (packetType) {
-				case SSH_SMSG_STDOUT_DATA :
-				case SSH_SMSG_STDERR_DATA :
-				case SSH_MSG_DEBUG :
-					buffer = packet.getInputStream();
-					buflen = Misc.readInt(buffer);
-					break;
-				case SSH_SMSG_EXITSTATUS :
-					buffer = null;
-					buflen = 0;
-					atEnd = true;
-					InputStream pis = packet.getInputStream();
-					exitStatus = Misc.readInt(pis);
-					pis.close();
-					send(SSH_CMSG_EXIT_CONFIRMATION, null);
-					break;
-				default :
-					throw new IOException(SSHPlugin.getResourceString("Client.packetType", new Object[] {new Integer(packetType)} ));
-			}
-		}
-	}
-
-	private class StandardOutputStream extends OutputStream {
-		private int MAX_BUFFER_SIZE = MAX_CLIENT_PACKET_SIZE;
-		private byte[] buffer = new byte[MAX_BUFFER_SIZE];
-		private int bufpos = 0;
-		private boolean closed = false;
-
-		public void close() throws IOException {
-			if (!closed) {
-				try {
-					flush();
-				} finally {
-					closed = true;
-				}
-			}
-		}
-
-		public void flush() throws IOException {
-			if (closed) {
-				throw new IOException(SSHPlugin.getResourceString("closed"));
-			}
-
-			if (bufpos > 0) {
-				send(SSH_CMSG_STDIN_DATA, buffer, 0, bufpos);
-				bufpos = 0;
-			}
-		}
-
-		public void write(int b) throws IOException {
-			if (closed) {
-				throw new IOException(SSHPlugin.getResourceString("closed"));
-			}
-
-			buffer[bufpos++] = (byte) b;
-
-			if (bufpos == MAX_BUFFER_SIZE) {
-				flush();
-			}
-		}
-
-		public void write(byte b[], int off, int len) throws IOException {
-			if (closed) {
-				throw new IOException(SSHPlugin.getResourceString("closed"));
-			}
-
-			int bytesWritten = 0;
-			int totalBytesWritten = 0;
-
-			if (bufpos > 0) {
-				bytesWritten = Math.min(MAX_BUFFER_SIZE - bufpos, len);
-				System.arraycopy(b, off, buffer, bufpos, bytesWritten);
-				bufpos += bytesWritten;
-				totalBytesWritten += bytesWritten;
-
-				if (bufpos == MAX_BUFFER_SIZE) {
-					flush();
-				}
-			}
-
-			while (len - totalBytesWritten >= MAX_BUFFER_SIZE) {
-				send(SSH_CMSG_STDIN_DATA, b, off + totalBytesWritten, MAX_BUFFER_SIZE);
-				totalBytesWritten += MAX_BUFFER_SIZE;
-			}
-
-			if (totalBytesWritten < len) {
-				bytesWritten = len - totalBytesWritten;
-				System.arraycopy(b, off + totalBytesWritten, buffer, 0, bytesWritten);
-				bufpos += bytesWritten;
-			}
-		}
-	}
-public Client(InputStream socketIn, OutputStream socketOut, String username, String password) {
-	this.socketIn = socketIn;
-	this.socketOut = socketOut;
-	this.username = username;
-	this.password = password;
-}
-public Client(InputStream socketIn, OutputStream socketOut, String username, String password, String command) {
-	this(socketIn, socketOut, username, password);
-	this.command = command;
-}
-public Client(String host, int port, String username, String password) {
-	this.host = host;
-	this.port = port;
-	this.username = username;
-	this.password = password;
-}
-public Client(String host, int port, String username, String password, String command) {
-	this(host, port, username, password);
-	this.command = command;
-}
-public Client(String host, int port, String username, String password, String command, int timeout) {
-	this(host, port, username, password, command);
-	this.timeout = timeout;
-}
-/**
- * Close all streams and sockets.
- */
-private void cleanup() throws IOException {
-	try {
-		if (is != null)
-			is.close();
-	} finally {
-		try {
-			if (os != null)
-				os.close();
-		} finally {
-			try {
-				if (socketIn != null)
-					socketIn.close();
-			} finally {
-				try {
-					if (socketOut != null)
-						socketOut.close();
-				} finally {
-					try {
-						if (socket != null)
-							socket.close();
-					} finally {
-						socket = null;
-					}
-				}
-			}
-		}
-	}
-}
-/**
- * Connect to the remote server. If an exception is thrown, the caller
- * can asssume that all streams and sockets are closed.
- */
-public void connect(IProgressMonitor monitor) throws IOException, CVSAuthenticationException {
-	// If we're already connected, just ignore the invokation
-	if (connected)
-		return;
-		
-	// Otherwise, set up the connection
-	try {
-		
-		// Create the socket (the socket should always be null here)
-		if (socket == null) {
-			try {
-				socket = new Socket(host, port);
-			} catch (InterruptedIOException e) {
-				// If we get this exception, chances are the host is not responding
-				throw new InterruptedIOException(SSHPlugin.getResourceString("Client.socket", new Object[] {host}));
-
-			}
-			if (timeout >= 0) {
-				socket.setSoTimeout(timeout * 1000);
-			}
-			socketIn = new BufferedInputStream(socket.getInputStream());
-			socketOut = new BufferedOutputStream(socket.getOutputStream());
-		}
-
-		// read the ssh server id. The socket creation may of failed if the
-		// server cannot accept our connection request. We don't expect the
-		// socket to be closed at this point.
-		StringBuffer buf = new StringBuffer();
-		int c;
-		while ((c = socketIn.read()) != '\n') {
-			if (c == -1)
-				throw new IOException(SSHPlugin.getResourceString("Client.socketClosed"));
-			buf.append((char) c);
-		}
-		serverId = buf.toString();
-
-		// send our id.
-		socketOut.write(clientId.getBytes());
-		socketOut.flush();
-
-		login();
-		
-		// start a shell and enter interactive session or start by
-		// executing the given command.
-		if( command == null ) {
-			startShell();
-		} else {
-			executeCommand();
-		}
-
-		is = new StandardInputStream();
-		os = new StandardOutputStream();
-
-		connected = true;
-	} catch (IOException e) {
-		// If an exception occurs while connected, make sure we disconnect before passing the exception on
-		try {
-			cleanup();
-		} finally {
-			throw e;
-		}
-	}
-}
-/**
- * Terminate the connection to the server.
- */
-public void disconnect() throws IOException {
-	if (connected) {
-		connected = false;
-		send(SSH_MSG_DISCONNECT, null);
-		cleanup();
-	}
-}
-public InputStream getInputStream() throws IOException {
-	if (!connected) {
-		throw new IOException(SSHPlugin.getResourceString("Client.notConnected"));
-	}
-
-	return is;
-}
-public OutputStream getOutputStream() throws IOException {
-	if (!connected) {
-		throw new IOException(SSHPlugin.getResourceString("Client.notConnected"));
-	}
-
-	return os;
-}
-
-private void startShell() throws IOException {
-	ServerPacket packet = null;
-	int packetType;
-
-	send_SSH_CMSG_REQUEST_PTY();
-
-	try {
-		packet = new ServerPacket(socketIn, cipher);
-		packetType = packet.getType();
-
-		if (packetType != SSH_SMSG_SUCCESS) {
-			throw new IOException(SSHPlugin.getResourceString("Client.packetType", new Object[] {new Integer(packetType)} ));
-		}
-	} finally {
-		if (packet != null) {
-			packet.close(true /*perform crc check*/);
-		}
-	}
-
-	send(SSH_CMSG_EXEC_SHELL, null);
-}
-
-private void executeCommand() throws IOException {	
-	send(SSH_CMSG_EXEC_CMD, command);
-}
-
-private void login() throws IOException, CVSAuthenticationException {
-	ServerPacket packet = null;
-	int packetType;
-
-	try {
-		packet = new ServerPacket(socketIn, cipher);
-		packetType = packet.getType();
-
-		if (packetType != SSH_SMSG_PUBLIC_KEY) {
-			throw new IOException(SSHPlugin.getResourceString("Client.packetType", new Object[] {new Integer(packetType)} ));
-		}
-
-		receive_SSH_SMSG_PUBLIC_KEY(packet);
-	} finally {
-		if (packet != null) {
-			packet.close(true);
-		}
-	}
-
-	try {
-		packet = new ServerPacket(socketIn, cipher);
-		packetType = packet.getType();
-
-		if (packetType != SSH_SMSG_SUCCESS) {
-			throw new IOException(SSHPlugin.getResourceString("Client.packetType", new Object[] {new Integer(packetType)} ));
-		}
-	} finally {
-		if (packet != null) {
-			packet.close(true);
-		}
-	}
-
-	send(SSH_CMSG_USER, username);
-
-	try {
-		packet = new ServerPacket(socketIn, cipher);
-		packetType = packet.getType();
-
-		if (packetType != SSH_SMSG_FAILURE) {
-			throw new IOException(SSHPlugin.getResourceString("Client.packetType", new Object[] {new Integer(packetType)} ));
-		}
-	} finally {
-		if (packet != null) {
-			packet.close(true);
-		}
-	}
-
-	send(SSH_CMSG_AUTH_PASSWORD, password);
-
-	try {
-		packet = new ServerPacket(socketIn, cipher);
-		packetType = packet.getType();
-
-		if (packetType == SSH_SMSG_FAILURE) {
-			throw new CVSAuthenticationException(SSHPlugin.getResourceString("Client.authenticationFailed"));
-		}
-
-		if (packetType != SSH_SMSG_SUCCESS) {
-			throw new IOException(SSHPlugin.getResourceString("Client.packetType", new Object[] {new Integer(packetType)} ));
-		}
-	} finally {
-		if (packet != null) {
-			packet.close(true);
-		}
-	}
-}
-private void receive_SSH_SMSG_PUBLIC_KEY(ServerPacket packet) throws IOException {
-	InputStream pis = packet.getInputStream();
-
-	byte[] anti_spoofing_cookie = new byte[8];
-	Misc.readFully(pis, anti_spoofing_cookie);
-
-	byte[] server_key_bits = new byte[4];
-	Misc.readFully(pis, server_key_bits);
-
-	byte[] server_key_public_exponent = Misc.readMpInt(pis);
-	byte[] server_key_public_modulus = Misc.readMpInt(pis);
-
-	byte[] host_key_bits = new byte[4];
-	Misc.readFully(pis, host_key_bits);
-
-	byte[] host_key_public_exponent = Misc.readMpInt(pis);
-	byte[] host_key_public_modulus = Misc.readMpInt(pis);
-
-	byte[] protocol_flags = new byte[4];
-	Misc.readFully(pis, protocol_flags);
-
-	byte[] supported_ciphers_mask = new byte[4];
-	Misc.readFully(pis, supported_ciphers_mask);
-
-	byte[] supported_authentications_mask = new byte[4];
-	Misc.readFully(pis, supported_authentications_mask);
-
-	pis.close();
-
-	send_SSH_CMSG_SESSION_KEY(anti_spoofing_cookie, server_key_public_modulus, host_key_public_modulus, supported_ciphers_mask, server_key_public_exponent, host_key_public_exponent);
-}
-private void send(int packetType, String s) throws IOException {
-	byte[] data = s == null ? new byte[0] : s.getBytes("UTF-8");
-	send(packetType, data, 0, data.length);
-}
-private void send(int packetType, byte[] data, int off, int len) throws IOException {
-	data = data == null ? null : Misc.lengthEncode(data, off, len);
-	ClientPacket packet = new ClientPacket(packetType, data, cipher);
-	socketOut.write(packet.getBytes());
-	socketOut.flush();
-}
-private void send_SSH_CMSG_REQUEST_PTY() throws IOException {
-	byte packet_type = SSH_CMSG_REQUEST_PTY;
-
-	byte[] termType = Misc.lengthEncode("dumb".getBytes(), 0, 4);
-	byte[] row = {0, 0, 0, 0};
-	byte[] col = {0, 0, 0, 0};
-	byte[] XPixels = {0, 0, 0, 0};
-	byte[] YPixels = {0, 0, 0, 0};
-	byte[] terminalModes = {0};
-
-	byte[] data = new byte[termType.length + row.length + col.length + XPixels.length + YPixels.length + terminalModes.length];
-
-	int offset = 0;
-	System.arraycopy(termType, 0, data, offset, termType.length);
-
-	offset += termType.length;
-	System.arraycopy(row, 0, data, offset, row.length);
-
-	offset += row.length;
-	System.arraycopy(col, 0, data, offset, col.length);
-
-	offset += col.length;
-	System.arraycopy(XPixels, 0, data, offset, XPixels.length);
-
-	offset += XPixels.length;
-	System.arraycopy(YPixels, 0, data, offset, YPixels.length);
-
-	offset += YPixels.length;
-	System.arraycopy(terminalModes, 0, data, offset, terminalModes.length);
-
-	ClientPacket packet = new ClientPacket(packet_type, data, cipher);
-	socketOut.write(packet.getBytes());
-	socketOut.flush();
-}
-private void send_SSH_CMSG_SESSION_KEY(byte[] anti_spoofing_cookie, byte[] server_key_public_modulus, byte[] host_key_public_modulus, byte[] supported_ciphers_mask, byte[] server_key_public_exponent, byte[] host_key_public_exponent) throws IOException {
-	byte packet_type = SSH_CMSG_SESSION_KEY;
-
-	// session_id
-	byte[] session_id = new byte[host_key_public_modulus.length + server_key_public_modulus.length + anti_spoofing_cookie.length];
-
-	int offset = 0;
-	System.arraycopy(host_key_public_modulus, 0, session_id, offset, host_key_public_modulus.length);
-
-	offset += host_key_public_modulus.length;
-	System.arraycopy(server_key_public_modulus, 0, session_id, offset, server_key_public_modulus.length);
-
-	offset += server_key_public_modulus.length;
-	System.arraycopy(anti_spoofing_cookie, 0, session_id, offset, anti_spoofing_cookie.length);
-
-	session_id = Misc.md5(session_id);
-
-	// cipher_type
-	byte cipher_type = 0;
-	boolean foundSupportedCipher = false;
-
-	for (int i = 0; i < preferredCipherTypes.length && !foundSupportedCipher; ++i) {
-		cipher_type = (byte) preferredCipherTypes[i];
-		foundSupportedCipher = (supported_ciphers_mask[3] & (byte) (1 << cipher_type)) != 0;
-	}
-
-	if (!foundSupportedCipher) {
-		throw new IOException(SSHPlugin.getResourceString("Client.cipher"));
-	}
-
-	// session_key
-	byte[] session_key = new byte[32];
-	byte[] session_key_xored = new byte[32];
-	byte[] session_key_encrypted = null;
-
-	Misc.random(session_key, 0, session_key.length, true);
-	System.arraycopy(session_key, 0, session_key_xored, 0, session_key.length);
-	Misc.xor(session_key_xored, 0, session_id, 0, session_key_xored, 0, session_id.length);
-
-	byte[] result = Misc.encryptRSAPkcs1(session_key_xored, server_key_public_exponent, server_key_public_modulus);
-	result = Misc.encryptRSAPkcs1(result, host_key_public_exponent, host_key_public_modulus);
-
-	session_key_encrypted = new byte[result.length + 2];
-	session_key_encrypted[1] = (byte) ((8 * result.length) & 0xff);
-	session_key_encrypted[0] = (byte) (((8 * result.length) >> 8) & 0xff);
-
-	for (int i = 0; i < result.length; i++) {
-		session_key_encrypted[i + 2] = result[i];
-	}
-
-	// protocol_flags
-	byte[] protocol_flags = {0, 0, 0, 0};
-
-	// data
-	byte[] data = new byte[1 + anti_spoofing_cookie.length + session_key_encrypted.length + protocol_flags.length];
-
-	offset = 0;
-	data[offset++] = (byte) cipher_type;
-
-	System.arraycopy(anti_spoofing_cookie, 0, data, offset, anti_spoofing_cookie.length);
-
-	offset += anti_spoofing_cookie.length;
-	System.arraycopy(session_key_encrypted, 0, data, offset, session_key_encrypted.length);
-
-	offset += session_key_encrypted.length;
-	System.arraycopy(protocol_flags, 0, data, offset, protocol_flags.length);
-
-	// cipher
-	cipher = Cipher.getInstance(cipherNames[cipher_type]);
-	cipher.setKey(session_key);
-
-	// packet
-	ClientPacket packet = new ClientPacket(packet_type, data, null);
-	socketOut.write(packet.getBytes());
-	socketOut.flush();
-}
-}
diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ClientPacket.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ClientPacket.java
deleted file mode 100644
index 36d7a65..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ClientPacket.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.eclipse.team.internal.ccvs.ssh;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-class ClientPacket extends Packet {

-	byte[] packet;

-public ClientPacket(int type, byte[] data, Cipher cipher) {

-	packetLength = data == null ? 5 : data.length + 5;

-	paddingLength = 8 - (packetLength % 8);

-	packetType = type;

-	packet = new byte[4 + paddingLength + packetLength];

-

-	int packetOff = 0;

-	Misc.writeInt(packetLength, packet, packetOff);

-	packetOff += 4;

-

-	if (cipher == null) {

-		for (int i = 0; i < paddingLength; i++) {

-			packet[packetOff++] = 0;

-		}

-	} else {

-		Misc.random(packet, packetOff, paddingLength, false);

-		packetOff += paddingLength;

-	}

-

-	packet[packetOff++] = (byte) packetType;

-

-	if (data != null) {

-		for (int i = 0; i < data.length; ++i) {

-			packet[packetOff++] = data[i];

-		}

-	}

-

-	long crc = Misc.crc32(packet, 4, packet.length - 8, 0);

-	Misc.writeInt((int) crc, packet, packetOff);

-	packetOff += 4;

-

-	if (cipher != null) {

-		cipher.encipher(packet, 4, packet, 4, packet.length - 4);

-	}

-}

-public byte[] getBytes() {

-	return packet;

-}

-}

diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Misc.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Misc.java
deleted file mode 100644
index e8561a5..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Misc.java
+++ /dev/null
@@ -1,449 +0,0 @@
-package org.eclipse.team.internal.ccvs.ssh;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-import java.io.IOException;

-import java.io.InputStream;

-import java.math.BigInteger;

-import java.security.MessageDigest;

-import java.security.NoSuchAlgorithmException;

-import java.security.SecureRandom;

-

-class Misc {

-	private static MessageDigest md5 = null;

-	private static SecureRandom random = null;

-	private static long crc32_tab[] = {

-		0x00000000L,

-		0x77073096L,

-		0xee0e612cL,

-		0x990951baL,

-		0x076dc419L,

-		0x706af48fL,

-		0xe963a535L,

-		0x9e6495a3L,

-		0x0edb8832L,

-		0x79dcb8a4L,

-		0xe0d5e91eL,

-		0x97d2d988L,

-		0x09b64c2bL,

-		0x7eb17cbdL,

-		0xe7b82d07L,

-		0x90bf1d91L,

-		0x1db71064L,

-		0x6ab020f2L,

-		0xf3b97148L,

-		0x84be41deL,

-		0x1adad47dL,

-		0x6ddde4ebL,

-		0xf4d4b551L,

-		0x83d385c7L,

-		0x136c9856L,

-		0x646ba8c0L,

-		0xfd62f97aL,

-		0x8a65c9ecL,

-		0x14015c4fL,

-		0x63066cd9L,

-		0xfa0f3d63L,

-		0x8d080df5L,

-		0x3b6e20c8L,

-		0x4c69105eL,

-		0xd56041e4L,

-		0xa2677172L,

-		0x3c03e4d1L,

-		0x4b04d447L,

-		0xd20d85fdL,

-		0xa50ab56bL,

-		0x35b5a8faL,

-		0x42b2986cL,

-		0xdbbbc9d6L,

-		0xacbcf940L,

-		0x32d86ce3L,

-		0x45df5c75L,

-		0xdcd60dcfL,

-		0xabd13d59L,

-		0x26d930acL,

-		0x51de003aL,

-		0xc8d75180L,

-		0xbfd06116L,

-		0x21b4f4b5L,

-		0x56b3c423L,

-		0xcfba9599L,

-		0xb8bda50fL,

-		0x2802b89eL,

-		0x5f058808L,

-		0xc60cd9b2L,

-		0xb10be924L,

-		0x2f6f7c87L,

-		0x58684c11L,

-		0xc1611dabL,

-		0xb6662d3dL,

-		0x76dc4190L,

-		0x01db7106L,

-		0x98d220bcL,

-		0xefd5102aL,

-		0x71b18589L,

-		0x06b6b51fL,

-		0x9fbfe4a5L,

-		0xe8b8d433L,

-		0x7807c9a2L,

-		0x0f00f934L,

-		0x9609a88eL,

-		0xe10e9818L,

-		0x7f6a0dbbL,

-		0x086d3d2dL,

-		0x91646c97L,

-		0xe6635c01L,

-		0x6b6b51f4L,

-		0x1c6c6162L,

-		0x856530d8L,

-		0xf262004eL,

-		0x6c0695edL,

-		0x1b01a57bL,

-		0x8208f4c1L,

-		0xf50fc457L,

-		0x65b0d9c6L,

-		0x12b7e950L,

-		0x8bbeb8eaL,

-		0xfcb9887cL,

-		0x62dd1ddfL,

-		0x15da2d49L,

-		0x8cd37cf3L,

-		0xfbd44c65L,

-		0x4db26158L,

-		0x3ab551ceL,

-		0xa3bc0074L,

-		0xd4bb30e2L,

-		0x4adfa541L,

-		0x3dd895d7L,

-		0xa4d1c46dL,

-		0xd3d6f4fbL,

-		0x4369e96aL,

-		0x346ed9fcL,

-		0xad678846L,

-		0xda60b8d0L,

-		0x44042d73L,

-		0x33031de5L,

-		0xaa0a4c5fL,

-		0xdd0d7cc9L,

-		0x5005713cL,

-		0x270241aaL,

-		0xbe0b1010L,

-		0xc90c2086L,

-		0x5768b525L,

-		0x206f85b3L,

-		0xb966d409L,

-		0xce61e49fL,

-		0x5edef90eL,

-		0x29d9c998L,

-		0xb0d09822L,

-		0xc7d7a8b4L,

-		0x59b33d17L,

-		0x2eb40d81L,

-		0xb7bd5c3bL,

-		0xc0ba6cadL,

-		0xedb88320L,

-		0x9abfb3b6L,

-		0x03b6e20cL,

-		0x74b1d29aL,

-		0xead54739L,

-		0x9dd277afL,

-		0x04db2615L,

-		0x73dc1683L,

-		0xe3630b12L,

-		0x94643b84L,

-		0x0d6d6a3eL,

-		0x7a6a5aa8L,

-		0xe40ecf0bL,

-		0x9309ff9dL,

-		0x0a00ae27L,

-		0x7d079eb1L,

-		0xf00f9344L,

-		0x8708a3d2L,

-		0x1e01f268L,

-		0x6906c2feL,

-		0xf762575dL,

-		0x806567cbL,

-		0x196c3671L,

-		0x6e6b06e7L,

-		0xfed41b76L,

-		0x89d32be0L,

-		0x10da7a5aL,

-		0x67dd4accL,

-		0xf9b9df6fL,

-		0x8ebeeff9L,

-		0x17b7be43L,

-		0x60b08ed5L,

-		0xd6d6a3e8L,

-		0xa1d1937eL,

-		0x38d8c2c4L,

-		0x4fdff252L,

-		0xd1bb67f1L,

-		0xa6bc5767L,

-		0x3fb506ddL,

-		0x48b2364bL,

-		0xd80d2bdaL,

-		0xaf0a1b4cL,

-		0x36034af6L,

-		0x41047a60L,

-		0xdf60efc3L,

-		0xa867df55L,

-		0x316e8eefL,

-		0x4669be79L,

-		0xcb61b38cL,

-		0xbc66831aL,

-		0x256fd2a0L,

-		0x5268e236L,

-		0xcc0c7795L,

-		0xbb0b4703L,

-		0x220216b9L,

-		0x5505262fL,

-		0xc5ba3bbeL,

-		0xb2bd0b28L,

-		0x2bb45a92L,

-		0x5cb36a04L,

-		0xc2d7ffa7L,

-		0xb5d0cf31L,

-		0x2cd99e8bL,

-		0x5bdeae1dL,

-		0x9b64c2b0L,

-		0xec63f226L,

-		0x756aa39cL,

-		0x026d930aL,

-		0x9c0906a9L,

-		0xeb0e363fL,

-		0x72076785L,

-		0x05005713L,

-		0x95bf4a82L,

-		0xe2b87a14L,

-		0x7bb12baeL,

-		0x0cb61b38L,

-		0x92d28e9bL,

-		0xe5d5be0dL,

-		0x7cdcefb7L,

-		0x0bdbdf21L,

-		0x86d3d2d4L,

-		0xf1d4e242L,

-		0x68ddb3f8L,

-		0x1fda836eL,

-		0x81be16cdL,

-		0xf6b9265bL,

-		0x6fb077e1L,

-		0x18b74777L,

-		0x88085ae6L,

-		0xff0f6a70L,

-		0x66063bcaL,

-		0x11010b5cL,

-		0x8f659effL,

-		0xf862ae69L,

-		0x616bffd3L,

-		0x166ccf45L,

-		0xa00ae278L,

-		0xd70dd2eeL,

-		0x4e048354L,

-		0x3903b3c2L,

-		0xa7672661L,

-		0xd06016f7L,

-		0x4969474dL,

-		0x3e6e77dbL,

-		0xaed16a4aL,

-		0xd9d65adcL,

-		0x40df0b66L,

-		0x37d83bf0L,

-		0xa9bcae53L,

-		0xdebb9ec5L,

-		0x47b2cf7fL,

-		0x30b5ffe9L,

-		0xbdbdf21cL,

-		0xcabac28aL,

-		0x53b39330L,

-		0x24b4a3a6L,

-		0xbad03605L,

-		0xcdd70693L,

-		0x54de5729L,

-		0x23d967bfL,

-		0xb3667a2eL,

-		0xc4614ab8L,

-		0x5d681b02L,

-		0x2a6f2b94L,

-		0xb40bbe37L,

-		0xc30c8ea1L,

-		0x5a05df1bL,

-		0x2d02ef8dL

-	};

-static public long crc32(byte[] b, int off, int len) {

-	return crc32(b, off, len, 0);

-}

-/**

- * Compute the crc	Cyclic Redundancy Check, with the polynomial 0xedb88320,

- * The polynomial is X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0

- *  We take it "backwards" and put the highest-order term in the lowest-order bit. 

- * The X^32 term is "implied"; the LSB is the X^31 term, etc.  

- * The X^0 term (usually shown as "+1") results in the MSB being 1.

- * so the poly is 0x04c11db7 (used for Ethernet)

- * The buf will be the Padding, Packet type, and Data fields. 

- * The crc is computed before any encryption.

- * R =X^n * M rem P		M message		P polynomial crc	R : crc calculated.

- * T(x) = x^n * M(x)  +  R(x)	property: T rem P = 0

- */

-static public long crc32(byte[] b, int off, int len, long crc32val) {

-	for (int i = 0; i < len; i++) {

-		crc32val = crc32_tab[(int) ((crc32val ^ b[off + i]) & 0xff)] ^ (crc32val >> 8);

-	}

-

-	return crc32val;

-}

-static public byte[] lengthEncode(byte[] b, int off, int len) throws IOException {

-	byte[] result = new byte[len + 4];

-	writeInt(len, result, 0);

-	System.arraycopy(b, off, result, 4, len);

-	return result;

-}

-static public byte[] readMpInt(InputStream is) throws IOException {

-	int a = (byte) is.read();

-	int b = (byte) is.read();

-

-	if(a == -1 || b == -1){

-		throw new IOException(SSHPlugin.getResourceString("stream"));

-	}

-

-	int bits = (a << 8) + b;

-	int bytes = (bits + 7) / 8;

-

-	byte[] result = new byte[bytes];

-

-	readFully(is, result);

-

-	return result;

-}

-public static byte[] md5(byte[] b) {

-	if (md5 == null) {

-		try {

-			md5 = MessageDigest.getInstance("MD5");

-		} catch (NoSuchAlgorithmException e) {

-		}

-	}

-

-	return md5.digest(b);

-}

-public static byte[] md5(String s) {

-	return md5(s.getBytes());

-}

-public static void readFully(InputStream is, byte[] b) throws IOException {

-	readFully(is, b, 0, b.length);

-}

-public static void readFully(InputStream is, byte[] b, int off, int len) throws IOException {

-	int bytesRead = 0;

-	int totalBytesRead = 0;

-

-	while (totalBytesRead < len) {

-		bytesRead = is.read(b, totalBytesRead + off, len - totalBytesRead);

-

-		if (bytesRead == -1) {

-			throw new IOException(SSHPlugin.getResourceString("stream"));

-		}

-

-		totalBytesRead += bytesRead;

-	}

-}

-public static int readInt(byte[] arr, int off) throws IOException {

-	int a = arr[off] & 0xff;

-	int b = arr[off + 1] & 0xff;

-	int c = arr[off + 2] & 0xff;

-	int d = arr[off + 3] & 0xff;

-

-	return (a << 24) + (b << 16) + (c << 8) + d;

-}

-public static int readInt(InputStream is) throws IOException {

-	int a = is.read();

-	int b = is.read();

-	int c = is.read();

-	int d = is.read();

-

-	if (a == -1 || b == -1 || c == -1 || d == -1) {

-		throw new IOException(SSHPlugin.getResourceString("stream"));

-	}

-

-	return (a << 24) + (b << 16) + (c << 8) + d;

-}

-public static void skipFully(InputStream is, long n) throws IOException {

-	while (n != 0) {

-		int b = is.read();

-

-		if (b == -1) {

-			if (n > 0) {

-				throw new IOException(SSHPlugin.getResourceString("stream"));

-			}

-

-			return;

-		}

-

-		--n;

-	}

-}

-public static void writeInt(int i, byte[] b, int off) {

-	b[off] = (byte) ((i >> 24) & 0xff);

-	b[off + 1] = (byte) ((i >> 16) & 0xff);

-	b[off + 2] = (byte) ((i >> 8) & 0xff);

-	b[off + 3] = (byte) (i & 0xff);

-}

-static public void xor(byte[] src_a, int off_a, byte[] src_b, int off_b, byte[] dst, int dst_off, int len) {

-	for(int i = 0; i < len; ++i){

-		dst[i + dst_off] = (byte) (src_a[i + off_a] ^ src_b[i + off_b]);

-	}

-}

-static public void random(byte[] b, int off, int len, boolean allowZeroBytes) {

-	if (random == null) {

-		try {

-			random = SecureRandom.getInstance("SHA1PRNG");

-		} catch (NoSuchAlgorithmException e) {

-		}

-	}

-

-	for(int i = off; i < off + len; ++i){

-		do {

-			b[i] = (byte) random.nextInt();

-		} while(!allowZeroBytes && b[i] == 0);

-	}

-}

-static public byte[] encryptRSAPkcs1(byte[] data, byte[] public_key_exponent, byte[] public_key_modulus) {

-	byte[] block;

-

-	int offset = 0;

-	block = new byte[public_key_modulus.length];

-	block[offset++] = 0;

-	block[offset++] = 2;

-

-	Misc.random(block, offset, block.length - data.length - 3, false);

-	offset += block.length - data.length - 3;

-

-	block[offset++] = 0;

-

-	for (int i = 0; i < data.length; i++){

-		block[offset++] = data[i];

-	}

-

-	BigInteger m, e, message;

-	byte[] messageByte;

-

-	m = new BigInteger(1, public_key_modulus);

-	e = new BigInteger(1, public_key_exponent);

-	message = new BigInteger(1, block);

-	message = message.modPow(e, m);

-

-	byte[] messageByteTemp = message.toByteArray();

-	messageByte = new byte[public_key_modulus.length];

-

-	int tempOffset = 0;

-	while (messageByteTemp[tempOffset] == 0){

-		tempOffset++;

-	}

-

-	for (int i = messageByte.length - messageByteTemp.length + tempOffset; i < messageByte.length; i++){

-		messageByte[i] = messageByteTemp[tempOffset++];

-	}

-

-	return messageByte;

-}

-}

diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Packet.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Packet.java
deleted file mode 100644
index 87cdc06..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Packet.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.eclipse.team.internal.ccvs.ssh;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-class Packet {

-	protected int packetLength;

-	protected int paddingLength;

-	protected int packetType;

-public int getType() {

-	return packetType;

-}

-}

diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHMethod.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHMethod.java
deleted file mode 100644
index 64908f8..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHMethod.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.eclipse.team.internal.ccvs.ssh;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;

-import org.eclipse.team.ccvs.core.IConnectionMethod;

-import org.eclipse.team.ccvs.core.IServerConnection;

-

-public class SSHMethod implements IConnectionMethod {

-	/**

-	 * @see IConnectionMethod#getName

-	 */

-	public String getName() {

-		return "extssh";

-	}

-	

-	/**

-	 * @see IConnectionMethod#createConnection

-	 */

-	public IServerConnection createConnection(ICVSRepositoryLocation repositoryRoot, String password) {

-		return new SSHServerConnection(repositoryRoot, password);

-	}

-

-}

diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPlugin.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPlugin.java
deleted file mode 100644
index 7cf1eec..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPlugin.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPluginResources.properties b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPluginResources.properties
deleted file mode 100644
index 5e05ca9..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPluginResources.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###########################
-# (c) Copyright IBM Corp. 2000, 2001.
-# All Rights Reserved.
-###########################
-
-# String resources for vcm.core.cvs.ssh
-###########################
-
-closed=Closed
-stream=Unexpected end of stream
-
-Client.packetType=unexpected packet type: {0}
-Client.notConnected=Not connected
-Client.cipher=Supported cipher not found
-Client.socketClosed=Connection closed by server
-Client.authenticationFailed=Invalid username, password, host or repository
-Client.socket=Cannot connect to host: {0}
-
-ServerPacket.crc=crc error
-
diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java
deleted file mode 100644
index 28fd437..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.team.internal.ccvs.ssh;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.ccvs.core.IServerConnection;
-import org.eclipse.team.internal.ccvs.core.connection.CVSAuthenticationException;
-
-public class SSHServerConnection implements IServerConnection {
-	
-	// command to start remote cvs in server mode
-	private static final String INVOKE_SVR_CMD = "cvs server";
-	
-	private static final int DEFAULT_PORT = 22;
-	
-	// cvs format for the repository (e.g. :extssh:user@host:/home/cvs/repo)
-	private ICVSRepositoryLocation location;
-	
-	// password for user specified in repository location string
-	private String password;
-	
-	// incoming from remote host
-	InputStream inputStream;
-	
-	// outgoing to remote host
-	OutputStream outputStream;
-	
-	// ssh client 
-	Client client;
-
-	protected SSHServerConnection(ICVSRepositoryLocation location, String password) {
-		this.location = location;
-		this.password = password;
-	}
-
-	public void close() throws IOException {
-		client.disconnect();
-	}
-	/**
-	 * Returns the <code>InputStream</code> used to read data from the
-	 * server.
-	 */
-	public InputStream getInputStream() {
-		return inputStream;
-	}
-	/**
-	 * Returns the <code>OutputStream</code> used to send data to the
-	 * server.
-	 */
-	public OutputStream getOutputStream() {
-		return outputStream;
-	}
-
-	/**
-	 * Opens the connection and invokes cvs in server mode.
-	 *
-	 * @see Connection.open()
-	 */
-	public void open(IProgressMonitor monitor) throws IOException, CVSAuthenticationException {
-		monitor.subTask("Authenticating over extssh");
-		monitor.worked(1);
-		String hostname = location.getHost();
-		String username = location.getUsername();
-		int port = location.getPort();
-		if (port == location.USE_DEFAULT_PORT)
-			port = DEFAULT_PORT;
-		// create the connection using host, username, and password
-		client = new Client(hostname, port, username, password, INVOKE_SVR_CMD, location.getTimeout());	
-		client.connect(monitor);
-		inputStream = client.getInputStream();
-		outputStream = client.getOutputStream();
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ServerPacket.java b/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ServerPacket.java
deleted file mode 100644
index c3e7b10..0000000
--- a/bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ServerPacket.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package org.eclipse.team.internal.ccvs.ssh;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-import java.io.FilterInputStream;

-import java.io.IOException;

-import java.io.InputStream;

-

-class ServerPacket extends Packet {

-	private PacketInputStream pis = null;

-

-	private static class PacketInputStream extends FilterInputStream {

-		private static int MAX_BUFFER_SIZE = 1024;

-

-		private byte[] buffer = new byte[MAX_BUFFER_SIZE];

-		private int bufpos = 0;

-		private int buflen = 0;

-		private int bufrem = 0;

-

-		private long remaining = 0;

-		private Cipher cipher = null;

-

-		private long crc = 0;

-		private boolean closed = false;

-

-		public PacketInputStream(InputStream in, long length, Cipher cipher) {

-			super(in);

-

-			this.remaining = length;

-			this.cipher = cipher;

-		}

-

-		public int available() throws IOException {

-			if (closed) {

-				throw new IOException(SSHPlugin.getResourceString("closed"));

-			}

-

-			return (int) Math.min(remaining - 4, Integer.MAX_VALUE);

-		}

-

-		public void close() throws IOException {

-			close(true);

-		}

-		

-		public void close(boolean doCrcCheck) throws IOException {

-			if (!closed) {

-				try {					

-					long toRead = doCrcCheck ? remaining - 4 : remaining;			

-					

-					try {

-						Misc.skipFully(this, toRead);

-					} catch(IOException e) {

-						// we tried our best, keep going

-					}

-					

-					if(doCrcCheck) {

-						if ((int) crc != Misc.readInt(buffer, bufpos)) {

-							throw new IOException(SSHPlugin.getResourceString("ServerPacket.crc"));

-						}

-					}

-				} finally {

-					closed = true;

-				}

-			}

-		}

-		

-		private void fill() throws IOException {

-			if (bufrem > 0) {

-				System.arraycopy(buffer, bufpos, buffer, 0, bufrem);

-			}

-

-			int totalBytesRead = bufrem;

-			int read = 0;

-			int toRead = (int)Math.min(remaining - totalBytesRead, MAX_BUFFER_SIZE - totalBytesRead);

-

-			while (toRead > 0) {

-				read = in.read(buffer, totalBytesRead, toRead);

-

-				if (read == -1) {

-					throw new IOException(SSHPlugin.getResourceString("stream"));

-				}

-

-				totalBytesRead += read;

-				toRead -= read;

-			}

-

-			bufpos = 0;

-			

-			buflen = (totalBytesRead / 8) * 8;

-			bufrem = totalBytesRead - buflen;

-

-			if (cipher != null) {

-				cipher.decipher(buffer, 0, buffer, 0, buflen);

-			}

-			

-			crc = Misc.crc32(buffer, 0, buflen == remaining ? buflen - 4 : buflen, crc);

-		}

-

-		public int read() throws IOException {

-			if (closed) {

-				throw new IOException(SSHPlugin.getResourceString("closed"));

-			}

-

-			if (remaining - 4 == 0) {

-				return -1;

-			}

-

-			if (bufpos == buflen) {

-				fill();

-			}

-

-			int b = buffer[bufpos] & 0xff;

-

-			++bufpos;

-			--remaining;

-

-			return b;

-		}

-

-		public int read(byte b[], int off, int len) throws IOException {

-			if (closed) {

-				throw new IOException(SSHPlugin.getResourceString("closed"));

-			}

-

-			if (remaining - 4 == 0) {

-				return -1;

-			}

-

-			if (bufpos == buflen) {

-				fill();

-			}

-

-			len = (int) Math.min(len, (buflen == remaining + bufpos ? buflen - 4 : buflen) - bufpos);

-

-			System.arraycopy(buffer, bufpos, b, off, len);

-

-			bufpos += len;

-			remaining -= len;

-

-			return len;

-		}

-	}

-public ServerPacket(InputStream is, Cipher cipher) throws java.io.IOException {

-	packetLength = Misc.readInt(is);

-	paddingLength = 8 - (packetLength % 8);

-	pis = new PacketInputStream(is, packetLength + paddingLength, cipher);

-	Misc.skipFully(pis, paddingLength);

-	packetType = (byte) pis.read();

-}

-public void close(boolean doCrcCheck) throws IOException {

-	pis.close(doCrcCheck);

-}

-public InputStream getInputStream() {

-	return pis;

-}

-}

diff --git a/bundles/org.eclipse.team.cvs.ui/.classpath b/bundles/org.eclipse.team.cvs.ui/.classpath
deleted file mode 100644
index f33f7a4..0000000
--- a/bundles/org.eclipse.team.cvs.ui/.classpath
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
-    <classpathentry kind="src" path="src"/>
-    <classpathentry kind="src" path="/org.eclipse.team.core"/>
-    <classpathentry kind="src" path="/org.eclipse.team.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.team.cvs.core"/>
-    <classpathentry kind="src" path="/org.apache.xerces"/>
-    <classpathentry kind="src" path="/org.eclipse.core.boot"/>
-    <classpathentry kind="src" path="/org.eclipse.core.resources"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
-    <classpathentry kind="src" path="/org.eclipse.help"/>
-    <classpathentry kind="src" path="/org.eclipse.swt"/>
-    <classpathentry kind="src" path="/org.eclipse.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.compare"/>
-    <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.team.cvs.ui/.cvsignore b/bundles/org.eclipse.team.cvs.ui/.cvsignore
deleted file mode 100644
index fe99505..0000000
--- a/bundles/org.eclipse.team.cvs.ui/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-
diff --git a/bundles/org.eclipse.team.cvs.ui/.vcm_meta b/bundles/org.eclipse.team.cvs.ui/.vcm_meta
deleted file mode 100644
index b940f0e..0000000
--- a/bundles/org.eclipse.team.cvs.ui/.vcm_meta
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-description>
-	<comment></comment>
-	<nature id="org.eclipse.jdt.core.javanature"/>
-	<nature id="org.eclipse.pde.PluginNature"/>
-	<nature id="org.eclipse.team.cvs.core.cvsnature"/>
-	<reference project-name="org.eclipse.swt"/>
-	<reference project-name="org.apache.xerces"/>
-	<reference project-name="org.eclipse.core.runtime"/>
-	<reference project-name="org.eclipse.team.cvs.core"/>
-	<reference project-name="org.eclipse.compare"/>
-	<reference project-name="org.eclipse.ui"/>
-	<reference project-name="org.eclipse.core.resources"/>
-	<reference project-name="org.eclipse.team.ui"/>
-	<reference project-name="org.eclipse.core.boot"/>
-	<reference project-name="org.eclipse.help"/>
-	<reference project-name="org.eclipse.team.core"/>
-	<builder name="org.eclipse.jdt.core.javabuilder">
-	</builder>
-	<builder name="org.eclipse.pde.ManifestBuilder">
-	</builder>
-	<builder name="org.eclipse.pde.SchemaBuilder">
-	</builder>
-</project-description>
diff --git a/bundles/org.eclipse.team.cvs.ui/about.html b/bundles/org.eclipse.team.cvs.ui/about.html
deleted file mode 100644
index 768324e..0000000
--- a/bundles/org.eclipse.team.cvs.ui/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>

-<head>

-<title>About</title>

-<style type="text/css">

-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}

-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}

-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}

-code { font-family: "Courier New", Courier, mono; font-size: 10pt}

-sup { font-family: arial,helvetica,geneva; font-size: 10px}

-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}

-li { font-family: arial, helvetica, geneva; font-size: 10pt}

-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}

-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect(   ); margin-top: 5mm; margin-left: 3mm}

-</style>

-</head>

-<body lang="EN-US" link="blue" vlink="purple">

-<table border="0" cellspacing="5" cellpadding="2" width="100%" >

-  <tr> 

-    <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>

-  </tr>

-  <tr> 

-    <td> 

-<p>11th December, 2001</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

-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> &quot;CPL&quot;.  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>

-</td></tr></table>

-</body>

-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/build.properties b/bundles/org.eclipse.team.cvs.ui/build.properties
deleted file mode 100644
index ae6d9cc..0000000
--- a/bundles/org.eclipse.team.cvs.ui/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Eclipse build contribution
-source.teamcvsui.jar=src/
-bin.includes=about.html,icons/,plugin.xml.off,plugin.properties,*.jar
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/clear_co.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/clear_co.gif
deleted file mode 100644
index 99283d7..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/clear_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/newstream_wiz.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/newstream_wiz.gif
deleted file mode 100644
index b4c93b7..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/newstream_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/refresh.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/refresh.gif
deleted file mode 100644
index a063c23..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/clcl16/refresh.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/ctool16/checkout.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/ctool16/checkout.gif
deleted file mode 100644
index 012832b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/ctool16/checkout.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/console_view.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/console_view.gif
deleted file mode 100644
index e6d5b13..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/console_view.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/history_view.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/history_view.gif
deleted file mode 100644
index 548228b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/history_view.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/repo_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/repo_rep.gif
deleted file mode 100644
index 6c8fd5f..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/cview16/repo_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/branches_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/branches_rep.gif
deleted file mode 100644
index 119c36c..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/branches_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/module_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/module_rep.gif
deleted file mode 100644
index 8d414e6..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/module_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/prjversions_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/prjversions_rep.gif
deleted file mode 100644
index 30a9899..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/prjversions_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/repository_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/repository_rep.gif
deleted file mode 100644
index 012832b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/repository_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/tag.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/tag.gif
deleted file mode 100644
index dc5a486..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/tag.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/versions_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/versions_rep.gif
deleted file mode 100644
index 954c7c4..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/obj16/versions_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/ovr16/confauto_ov.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/ovr16/confauto_ov.gif
deleted file mode 100644
index eee82ca..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/ovr16/confauto_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/ovr16/question_ov.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/ovr16/question_ov.gif
deleted file mode 100644
index f18f9f3..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/ovr16/question_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizards/newconnect_wiz.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/wizards/newconnect_wiz.gif
deleted file mode 100644
index f3d2a4d..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizards/newconnect_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizards/newlocation_wiz.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/wizards/newlocation_wiz.gif
deleted file mode 100644
index b0f400d..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizards/newlocation_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/mergestream_wizban.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/mergestream_wizban.gif
deleted file mode 100644
index dcba98c..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/mergestream_wizban.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/newconnect_wizban.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/newconnect_wizban.gif
deleted file mode 100644
index 6a40323..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/newconnect_wizban.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/newstream_wizban.gif b/bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/newstream_wizban.gif
deleted file mode 100644
index e177a11..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/basic/wizban/newstream_wizban.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/clear_co.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/clear_co.gif
deleted file mode 100644
index 2558326..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/clear_co.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/newstream_wiz.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/newstream_wiz.gif
deleted file mode 100644
index fffccf7..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/newstream_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/refresh.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/refresh.gif
deleted file mode 100644
index a063c23..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/refresh.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/ctool16/checkout.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/ctool16/checkout.gif
deleted file mode 100644
index 012832b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/ctool16/checkout.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/cview16/console_view.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/cview16/console_view.gif
deleted file mode 100644
index e6d5b13..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/cview16/console_view.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/cview16/history_view.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/cview16/history_view.gif
deleted file mode 100644
index 548228b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/cview16/history_view.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/cview16/repo_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/cview16/repo_rep.gif
deleted file mode 100644
index 6c8fd5f..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/cview16/repo_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/branches_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/branches_rep.gif
deleted file mode 100644
index 21cc9f7..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/branches_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/module_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/module_rep.gif
deleted file mode 100644
index 8d414e6..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/module_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/prjversions_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/prjversions_rep.gif
deleted file mode 100644
index 72258bd..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/prjversions_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/repository_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/repository_rep.gif
deleted file mode 100644
index 012832b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/repository_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/tag.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/tag.gif
deleted file mode 100644
index dc5a486..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/tag.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/versions_rep.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/versions_rep.gif
deleted file mode 100644
index 9b55c26..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/obj16/versions_rep.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/confauto_ov.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/confauto_ov.gif
deleted file mode 100644
index eee82ca..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/confauto_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/question_ov.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/question_ov.gif
deleted file mode 100644
index f18f9f3..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/question_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newconnect_wiz.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newconnect_wiz.gif
deleted file mode 100644
index f3d2a4d..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newconnect_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newlocation_wiz.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newlocation_wiz.gif
deleted file mode 100644
index b0f400d..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newlocation_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/wizban/mergestream_wizban.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/wizban/mergestream_wizban.gif
deleted file mode 100644
index 1473358..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/wizban/mergestream_wizban.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newconnect_wizban.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newconnect_wizban.gif
deleted file mode 100644
index 3038a23..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newconnect_wizban.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newstream_wizban.gif b/bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newstream_wizban.gif
deleted file mode 100644
index 339e7dd..0000000
--- a/bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newstream_wizban.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/plugin.properties b/bundles/org.eclipse.team.cvs.ui/plugin.properties
deleted file mode 100644
index ee3f19a..0000000
--- a/bundles/org.eclipse.team.cvs.ui/plugin.properties
+++ /dev/null
@@ -1,110 +0,0 @@
-pluginName=CVS Team Provider UI
-
-CVS=CVS
-
-CVSGroupMenu.label=C&VS
-
-SharingWizard.name=CVS
-
-PreferencePage.name=CVS
-DecoratorPreferencePage.name=Decorators
-
-DecoratorStandard.name=CVS
-
-AddAction.label=&Add
-AddAction.tooltip=Add
-
-MergeAction.label=&Merge...
-MergeAction.tooltip=Merge
-
-AutoDefineTagsAction.label=&Auto-discover Tags
-AutoDefineTagsAction.tooltip=Auto-discover Tags
-
-BranchAction.label=&Branch...
-BranchAction.tooltip=Branch
-
-CompareRemoteResourcesAction.label=Com&pare
-CompareRemoteResourcesAction.tooltip=Compare the Remote Resources with Each Other
-
-CompareWithRemoteAction.label=Repository &Contents
-CompareWithRemoteAction.tooltip=Compare with Remote Content on CVS Server
-
-CompareWithRevisionAction.label=&Revision...
-CompareWithRevisionAction.tooltip=Compare with Revision on CVS Server
-
-CompareWithTagAction.label=&Tag...
-CompareWithTagAction.tooltip=Compare with Tag on CVS Server
-
-IgnoreAction.label=&Ignore
-IgnoreAction.tooltip=Ignore the Selected Resources when Synchronizing
-
-RemoveBranchTagAction.label=Discard &Branch
-RemoveBranchTagAction.tooltip=Discard Branch
-
-RemoveModuleVersionAction.label=Discard &Tag
-RemoveModuleVersionAction.tooltip=Discard Tag
-
-RemoveRootAction.label=Discard &Location
-RemoveRootAction.tooltip=Discard Location
-
-ReplaceWithRevisionAction.label=&Revision...
-ReplaceWithRevisionAction.tooltip=Replace with Revision on CVS Server
-
-ReplaceWithTagAction.label=&Tag...
-ReplaceWithTagAction.tooltip=Replace with Version on CVS Server
-
-TagAction.label=&Tag...
-TagAction.tooltip=Tag
-
-DefineBranchAction.label=&Define Branch Tag...
-DefineBranchAction.tooltip=Define a Branch Tag that Exists on CVS Server
-
-DefineVersionAction.label=&Define Version Tag...
-DefineVersionAction.tooltip=Define a Version Tag that Exists on CVS Server
-
-UpdateAction.label=&Update
-UpdateAction.tooltip=Update
-
-ReplaceWithAction.label=Remote &Contents
-ReplaceWithAction.tooltip=Replace with Content on CVS Server
-
-CommitAction.label=&Commit...
-CommitAction.tooltip=Commit
-
-AddToWorkspaceAction.label=&Check Out
-AddToWorkspaceAction.tooltip=Check out a module from the repository to the workspace
-
-CheckoutAsAction.label=Check Out &As...
-CheckoutAsAction.tooltip=Check out a module from the repository to the workspace
-
-OpenLogEntryAction.label=&Open
-OpenLogEntryAction.tooltip=Open Remote File
-
-OpenRemoteFileAction.label=&Open
-OpenRemoteFileAction.tooltip=Open Remote File
-
-ShowHistoryAction.label=Show in Resource &History
-ShowHistoryAction.tooltip=Show in Resource History
-
-GenerateDiff.label=Create &Patch...
-GenerateDiff.tooltip=Compare your workspace contents against the server and generate a diff file that can be used as a patch file.
-
-RefreshFromLocal.label=&Refresh from local CVS state
-RefreshFromLocal.tooltip=Refresh the workbench with changes made to CVS projects from outside the workbench.
-
-Synchronize.label=&Synchronize with Repository...
-Synchronize.tooltip=Synchronize the workspace resources with the resources in the repository
-
-Delete.label=&Delete
-Delete.tooltip=Deletes the resource locally and from the repository
-
-viewCategory=&CVS
-
-Console.name=CVS Console
-
-RepositoriesView.name=CVS Repositories
-
-HistoryView.name=CVS Resource History
-
-UnmanageFolder.label=&Disconnect...
-UnmanageFolder.tooltip=Disconnect from the CVS repository.
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/plugin.xml b/bundles/org.eclipse.team.cvs.ui/plugin.xml
deleted file mode 100644
index eaef97b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/plugin.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
-	name="%pluginName"
-	id="org.eclipse.team.cvs.ui"
-	version="2.0.0"
-	provider-name="Object Technology International, Inc."
-	class="org.eclipse.team.internal.ccvs.ui.CVSUIPlugin">
-
-	<requires>
-		<import plugin="org.eclipse.core.runtime"/>
-		<import plugin="org.eclipse.core.resources"/>
-		<import plugin="org.eclipse.ui"/>
-		<import plugin="org.eclipse.team.core"/>
-		<import plugin="org.eclipse.team.ui"/>
-		<import plugin="org.eclipse.team.cvs.core"/>
-		<import plugin="org.eclipse.compare"/>
-	</requires>
-
-	<runtime>
-		<library name="teamcvsui.jar"/>
-	</runtime>
-</plugin>
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/plugin.xml.off b/bundles/org.eclipse.team.cvs.ui/plugin.xml.off
deleted file mode 100644
index 488690d..0000000
--- a/bundles/org.eclipse.team.cvs.ui/plugin.xml.off
+++ /dev/null
@@ -1,370 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<plugin

-	name="%pluginName"

-	id="org.eclipse.team.cvs.ui"

-	version="2.0.0"

-	provider-name="Object Technology International, Inc."

-	class="org.eclipse.team.internal.ccvs.ui.CVSUIPlugin">

-

-	<requires>

-		<import plugin="org.eclipse.core.runtime"/>

-		<import plugin="org.eclipse.core.resources"/>

-		<import plugin="org.eclipse.ui"/>

-		<import plugin="org.eclipse.team.core"/>

-		<import plugin="org.eclipse.team.ui"/>

-		<import plugin="org.eclipse.team.cvs.core"/>

-		<import plugin="org.eclipse.compare"/>

-	</requires>

-

-	<runtime>

-		<library name="teamcvsui.jar"/>

-	</runtime>

-

-	<!-- *************** Authenticator **************** -->

-	<extension point="org.eclipse.team.cvs.core.authenticator">

-		<authenticator>

-			<run class="org.eclipse.team.internal.ccvs.ui.WorkbenchUserAuthenticator"/>

-		</authenticator>

-	</extension>

-	

-	<!-- ******************* Wizards ****************** -->

-	<extension point="org.eclipse.team.ui.configurationWizards">

-		<wizard

-			name="%SharingWizard.name"

-			icon="icons/full/wizards/newconnect_wiz.gif"

-			class="org.eclipse.team.internal.ccvs.ui.wizards.SharingWizard"

-			id="org.eclipse.team.ccvs.ui.SharingWizard">

-		</wizard>

-	</extension>

-

-	<!-- ************** Property Pages *************** -->

-	<extension point="org.eclipse.ui.propertyPages">

-		<page name="%CVS" id="org.eclipse.team.ccvs.ui.propertyPages.CVSFilePropertiesPage"

-			objectClass="org.eclipse.core.resources.IFile"

-			class="org.eclipse.team.internal.ccvs.ui.CVSFilePropertiesPage" adaptable="true">

-			<filter name="projectNature" value="org.eclipse.team.cvs.core.cvsnature"/> 

-		</page>

-		<page name="%CVS" id="org.eclipse.team.ccvs.ui.propertyPages.CVSPropertiesPage"

-			objectClass="org.eclipse.core.resources.IProject"

-			class="org.eclipse.team.internal.ccvs.ui.CVSPropertiesPage" adaptable="true">

-			<filter name="projectNature" value="org.eclipse.team.cvs.core.cvsnature"/> 

-		</page>

-	</extension>

-  

-  	<!-- ******************* Menus ******************** -->

-	<extension point="org.eclipse.ui.popupMenus"> 

-		<objectContribution 

-			id="org.eclipse.team.ccvs.ui.ResourceContributions" 

-			objectClass="org.eclipse.core.resources.IResource" adaptable="true"> 

-			<filter name="projectNature" value="org.eclipse.team.cvs.core.cvsnature"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.tag"

-				label="%TagAction.label"

-				tooltip="%TagAction.tooltip"

-				menubarPath="team.main/group2"

-				class="org.eclipse.team.internal.ccvs.ui.actions.TagAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.add"

-				label="%AddAction.label"

-				tooltip="%AddAction.tooltip"

-				menubarPath="team.main/group2"

-				class="org.eclipse.team.internal.ccvs.ui.actions.AddAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.compareWithRemote"

-				label="%CompareWithRemoteAction.label"

-				tooltip="%CompareWithRemoteAction.tooltip"

-				menubarPath="compareWithMenu/compareWithGroup"

-				class="org.eclipse.team.internal.ccvs.ui.actions.CompareWithRemoteAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.update"

-				label="%UpdateAction.label"

-				tooltip="%UpdateAction.tooltip"

-				menubarPath="team.main/group2"

-				class="org.eclipse.team.internal.ccvs.ui.actions.UpdateAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.replace"

-				label="%ReplaceWithAction.label"

-				tooltip="%ReplaceWithAction.tooltip"

-				menubarPath="replaceWithMenu/replaceWithGroup"

-				class="org.eclipse.team.internal.ccvs.ui.actions.ReplaceWithRemoteAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.commit"

-				label="%CommitAction.label"

-				tooltip="%CommitAction.tooltip"

-				menubarPath="team.main/group2"

-				class="org.eclipse.team.internal.ccvs.ui.actions.CommitAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.ignore"

-				label="%IgnoreAction.label"

-				tooltip="%IgnoreAction.tooltip"

-				menubarPath="team.main/group1"

-				class="org.eclipse.team.internal.ccvs.ui.actions.IgnoreAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.branch"

-				label="%BranchAction.label"

-				tooltip="%BranchAction.tooltip"

-				menubarPath="team.main/group1"

-				class="org.eclipse.team.internal.ccvs.ui.actions.BranchAction"/>

-			<action

-				id="org.eclipse.team.ccvs.ui.GenerateDiff"

-				label="%GenerateDiff.label"

-				tooltip="%GenerateDiff.tooltip"

-				menubarPath="team.main/group1"

-				class="org.eclipse.team.internal.ccvs.ui.actions.GenerateDiffFileAction"/>	

-			<action 

-				id="org.eclipse.team.ccvs.ui.showHistory"

-				label="%ShowHistoryAction.label"

-				tooltip="%ShowHistoryAction.tooltip"

-				menubarPath="team.main/group1"

-				class="org.eclipse.team.internal.ccvs.ui.actions.ShowResourceInHistoryAction"/>

-			<action

-				id="org.eclipse.team.ccvs.ui.sync"

-				label="%Synchronize.label"

-				tooltip="%Synchronize.tooltip"

-				menubarPath="team.main/group1"

-				class="org.eclipse.team.internal.ccvs.ui.actions.SyncAction"/>

-		</objectContribution>

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.IProjectContributions"

-			objectClass="org.eclipse.core.resources.IProject" adaptable="true">

-			<filter name="projectNature" value="org.eclipse.team.cvs.core.cvsnature"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.compareWithTag"

-				label="%CompareWithTagAction.label"

-				tooltip="%CompareWithTagAction.tooltip"

-				menubarPath="compareWithMenu/compareWithGroup"

-				class="org.eclipse.team.internal.ccvs.ui.actions.CompareWithTagAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.merge"

-				label="%MergeAction.label"

-				tooltip="%MergeAction.tooltip"

-				menubarPath="team.main/group1"

-				class="org.eclipse.team.internal.ccvs.ui.actions.MergeAction"/>

-		</objectContribution>

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.IContainerContributions"

-			objectClass="org.eclipse.core.resources.IContainer" adaptable="true">

-			<filter name="projectNature" value="org.eclipse.team.cvs.core.cvsnature"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.replaceWithTag"

-				label="%ReplaceWithTagAction.label"

-				tooltip="%ReplaceWithTagAction.tooltip"

-				menubarPath="replaceWithMenu/replaceWithGroup"

-				class="org.eclipse.team.internal.ccvs.ui.actions.ReplaceWithTagAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.unmanage"

-				label="%UnmanageFolder.label"

-				tooltip="%UnmanageFolder.tooltip"

-				menubarPath="team.main/projectGroup"

-				class="org.eclipse.team.internal.ccvs.ui.actions.UnmanageAction"/>

-		</objectContribution>

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.IFileContributions"

-			objectClass="org.eclipse.core.resources.IFile" adaptable="true">

-			<filter name="projectNature" value="org.eclipse.team.cvs.core.cvsnature"/>

-			<action

-				id="org.eclipse.team.ccvs.ui.delete"

-				label="%Delete.label"

-				tooltip="%Delete.tooltip"

-				menubarPath="team.main/group2"

-				class="org.eclipse.team.ui.actions.DeleteAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.compareWithRevision"

-				label="%CompareWithRevisionAction.label"

-				tooltip="%CompareWithRevisionAction.tooltip"

-				menubarPath="compareWithMenu/compareWithGroup"

-				class="org.eclipse.team.internal.ccvs.ui.actions.CompareWithRevisionAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.replaceWithRevision"

-				label="%ReplaceWithRevisionAction.label"

-				tooltip="%ReplaceWithRevisionAction.tooltip"

-				menubarPath="replaceWithMenu/replaceWithGroup"

-				class="org.eclipse.team.internal.ccvs.ui.actions.CompareWithRevisionAction"/>

-		</objectContribution>

-		<objectContribution 

-			id="org.eclipse.team.ccvs.ui.RemoteFolderContributions" 

-			objectClass="org.eclipse.team.ccvs.core.ICVSRemoteFolder">

-			<action 

-				id="org.eclipse.team.ccvs.ui.checkoutAs"

-				label="%CheckoutAsAction.label"

-				tooltip="%CheckoutAsAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.CheckoutAsAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.addToWorkspace"

-				label="%AddToWorkspaceAction.label"

-				tooltip="%AddToWorkspaceAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.AddToWorkspaceAction"/>

-			<action

-				id="org.eclipse.team.ccvs.ui.removeTag"

-				label="%RemoveModuleVersionAction.label"

-				tooltip="%RemoveModuleVersionAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.RemoveModuleVersionAction"/>

-		</objectContribution>

-		<objectContribution 

-			id="org.eclipse.team.ccvs.ui.RemoteFileContributions" 

-			objectClass="org.eclipse.team.ccvs.core.ICVSRemoteFile">

-			<action 

-				id="org.eclipse.team.ccvs.ui.openRemoteFile"

-				label="%OpenRemoteFileAction.label"

-				tooltip="%OpenRemoteFileAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.OpenRemoteFileAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.showHistory"

-				label="%ShowHistoryAction.label"

-				tooltip="%ShowHistoryAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.ShowHistoryAction"/>

-			<action 

-				id="org.eclipse.team.ccvs.ui.autoDefine"

-				label="%AutoDefineTagsAction.label"

-				tooltip="%AutoDefineTagsAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.AutoDefineTagsAction"/>

-		</objectContribution>

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.LogEntryContributions"

-			objectClass="org.eclipse.team.ccvs.core.ILogEntry">

-			<action

-				id="org.eclipse.team.ccvs.ui.openLogEntry"

-				label="%OpenLogEntryAction.label"

-				tooltip="%OpenLogEntryAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.OpenLogEntryAction"/>

-			<action

-				id="org.eclipse.team.ccvs.ui.compareLogEntries"

-				label="%CompareRemoteResourcesAction.label"

-				tooltip="%CompareRemoteResourcesAction.tooltip"

-				enablesFor="2"

-				class="org.eclipse.team.internal.ccvs.ui.actions.CompareRemoteResourcesAction"/>

-		</objectContribution>

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.VersionCategoryContributions"

-			objectClass="org.eclipse.team.internal.ccvs.ui.model.RemoteModule">

-			<action

-				id="org.eclipse.team.ccvs.ui.defineVersion"

-				label="%DefineVersionAction.label"

-				tooltip="%DefineVersionAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.DefineVersionAction"/>

-		</objectContribution>

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.ProjectVersionContributions"

-			objectClass="org.eclipse.team.internal.ccvs.ui.model.ProjectVersion">

-			<action

-				id="org.eclipse.team.ccvs.ui.defineVersion"

-				label="%DefineVersionAction.label"

-				tooltip="%DefineVersionAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.DefineVersionAction"/>

-		</objectContribution>

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.RemoteRootContributions"

-			objectClass="org.eclipse.team.ccvs.core.ICVSRepositoryLocation">

-			<action

-				id="org.eclipse.team.ccvs.ui.removeRoot"

-				label="%RemoveRootAction.label"

-				tooltip="%RemoveRootAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.RemoveRootAction"/>

-			<action

-				id="org.eclipse.team.ccvs.ui.defineBranch"

-				label="%DefineBranchAction.label"

-				icon="icons/full/clcl16/newstream_wiz.gif"

-				tooltip="%DefineBranchAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.DefineBranchAction"/>

-		</objectContribution>

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.BranchCategoryContributions"

-			objectClass="org.eclipse.team.internal.ccvs.ui.model.BranchCategory">

-			<action

-				id="org.eclipse.team.ccvs.ui.defineBranch"

-				label="%DefineBranchAction.label"

-				tooltip="%DefineBranchAction.tooltip"

-				icon="icons/full/clcl16/newstream_wiz.gif"

-				class="org.eclipse.team.internal.ccvs.ui.actions.DefineBranchAction"/>

-		</objectContribution>			

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.BranchTagContributions"

-			objectClass="org.eclipse.team.internal.ccvs.ui.model.BranchTag">

-			<action

-				id="org.eclipse.team.ccvs.ui.removeBranchTag"

-				label="%RemoveBranchTagAction.label"

-				tooltip="%RemoveBranchTagAction.tooltip"

-				class="org.eclipse.team.internal.ccvs.ui.actions.RemoveBranchTagAction"/>

-		</objectContribution>

-		<objectContribution

-			id="org.eclipse.team.ccvs.ui.RemoteResourceContributions"

-			objectClass="org.eclipse.team.ccvs.core.ICVSRemoteResource">

-			<action

-				id="org.eclipse.team.ccvs.ui.compareRemoteResources"

-				label="%CompareRemoteResourcesAction.label"

-				tooltip="%CompareRemoteResourcesAction.tooltip"

-				enablesFor="2"

-				class="org.eclipse.team.internal.ccvs.ui.actions.CompareRemoteResourcesAction"/>

-		</objectContribution>

-	</extension> 

-

-	<!-- ************** Views ********************** -->

-	<extension point="org.eclipse.ui.views">

-		<category 

-			id="org.eclipse.team.ccvs.ui"

-			name="%viewCategory">

-		</category>

-		<view

-			name="%Console.name"

-			category="org.eclipse.team.ccvs.ui"

-			class="org.eclipse.team.internal.ccvs.ui.Console"

-			id="org.eclipse.team.ccvs.ui.console"

-			icon="icons/full/cview16/console_view.gif">

-		</view>

-		<view

-			id="org.eclipse.team.ccvs.ui.RepositoriesView"

-			icon="icons/full/cview16/repo_rep.gif"

-			name="%RepositoriesView.name"

-			category="org.eclipse.team.ccvs.ui"

-			class="org.eclipse.team.internal.ccvs.ui.RepositoriesView">

-		</view>

-		<view

-			id="org.eclipse.team.ccvs.ui.HistoryView"

-			icon="icons/full/cview16/history_view.gif"

-			name="%HistoryView.name"

-			category="org.eclipse.team.ccvs.ui"

-			class="org.eclipse.team.internal.ccvs.ui.HistoryView">

-		</view>

-	</extension>

-	

-	<extension point="org.eclipse.ui.resourceFilters">

-		<filter pattern="CVS" selected="true"/> 

-	</extension>

-

-	<!-- ** Temporary Filter ** -->

-	<extension point="org.eclipse.jdt.ui.javaElementFilters">

-		<filter pattern="CVS" selected="true"/> 

-		<filter pattern="*.CVS" selected="true"/> 

-	</extension>

-

-	

-	<!-- **************** PREFERENCES ******************* -->

-	<extension

-		point = "org.eclipse.ui.preferencePages">

-			<page id="org.eclipse.team.cvs.ui.CVSPreferences"

-				class="org.eclipse.team.internal.ccvs.ui.CVSPreferencesPage"

-				name="%PreferencePage.name">

-			</page>

-	</extension>

-

-	<extension

-      point = "org.eclipse.ui.preferencePages">

-       <page id="org.eclipse.team.cvs.ui.CVSDecoratorPreferences"

-       	  class="org.eclipse.team.internal.ccvs.ui.CVSDecoratorPreferencesPage"

-       	    name="%DecoratorPreferencePage.name"

-       	    category="org.eclipse.team.cvs.ui.CVSPreferences">

-       </page>

-   </extension>

-	

-	<!-- **************** DECORATOR ******************* -->

-	<extension point="org.eclipse.ui.decorators"> 

-        <decorator 

-             id="org.eclipse.team.cvs.ui.decorator" 

-             label="%DecoratorStandard.name" 

-             state="false" 

-	         class="org.eclipse.team.internal.ccvs.ui.CVSDecorator" 

-             objectClass="org.eclipse.core.resources.IResource"

-             adaptable="true"> 

-         </decorator> 

-	</extension>    

-</plugin>
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareEditorInput.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareEditorInput.java
deleted file mode 100644
index c593e86..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareEditorInput.java
+++ /dev/null
@@ -1,368 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2002.

- * All Rights Reserved.

- */

- 

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.compare.CompareConfiguration;

-import org.eclipse.compare.CompareEditorInput;

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.compare.ResourceNode;

-import org.eclipse.compare.structuremergeviewer.Differencer;

-import org.eclipse.compare.structuremergeviewer.IStructureComparator;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.OperationCanceledException;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.core.runtime.SubProgressMonitor;

-import org.eclipse.team.ccvs.core.CVSTag;

-import org.eclipse.team.ccvs.core.CVSTeamProvider;

-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;

-import org.eclipse.team.ccvs.core.ICVSRemoteResource;

-import org.eclipse.team.core.ITeamProvider;

-import org.eclipse.team.core.TeamException;

-import org.eclipse.team.core.TeamPlugin;

-import org.eclipse.team.internal.ccvs.core.CVSException;

-import org.eclipse.team.internal.ccvs.core.resources.CVSLocalSyncElement;

-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;

-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;

-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;

-import org.eclipse.team.internal.ccvs.core.resources.LocalResource;

-import org.eclipse.team.internal.ccvs.core.syncinfo.*;

-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-

-/**

- * A compare input for performing naive comparisons between

- * resources and resource editions.

- */

-public class CVSCompareEditorInput extends CompareEditorInput {

-	private ITypedElement left;

-	private ITypedElement right;

-	private ITypedElement ancestor;	

-	

-	// comparison constants

-	private static final int NODE_EQUAL = 0;

-	private static final int NODE_NOT_EQUAL = 1;

-	private static final int NODE_UNKNOWN = 2;

-	

-	// provider for the project being compared

-	CVSTeamProvider cvsProvider = null;

-	

-	/**

-	 * Creates a new CVSCompareEditorInput.

-	 */

-	public CVSCompareEditorInput(ITypedElement left, ITypedElement right) {

-		this(left, right, null);

-	}

-	

-	/**

-	 * Creates a new CVSCompareEditorInput.

-	 */

-	public CVSCompareEditorInput(ITypedElement left, ITypedElement right, ITypedElement ancestor) {

-		super(new CompareConfiguration());

-		this.left = left;

-		this.right = right;

-		this.ancestor = ancestor;

-	}

-	

-	/**

-	 * Overridden to create the CVSDiffTreeViewer to have the proper popup actions

-	 */

-	//public Viewer createDiffViewer(Composite parent) {

-	//	return new CVSDiffTreeViewer(parent, this);

-	//}

-

-	/**

-	 * Returns the label for the given input element.

-	 */

-	private String getLabel(ITypedElement element) {

-		if (element instanceof ResourceNode) {

-			return Policy.bind("CVSCompareEditorInput.workspace", element.getName());

-		}

-		if (element instanceof ResourceEditionNode) {

-			ICVSRemoteResource edition = ((ResourceEditionNode)element).getRemoteResource();

-			ICVSResource resource = (ICVSResource)edition;

-			try {

-				if (edition.isContainer()) {

-					CVSTag tag = ((ICVSRemoteFolder)edition).getTag();

-					if (tag == null) {

-						return Policy.bind("CVSCompareEditorInput.inHead", edition.getName());

-					} else if (tag.getType() == CVSTag.BRANCH) {

-						return Policy.bind("CVSCompareEditorInput.inBranch", new Object[] {edition.getName(), tag.getName()});

-					} else {

-						return Policy.bind("CVSCompareEditorInput.repository", new Object[] {edition.getName(), tag.getName()});

-					}

-				} else {

-					return Policy.bind("CVSCompareEditorInput.repository", new Object[] {edition.getName(), resource.getSyncInfo().getRevision()});

-				}

-			} catch (TeamException e) {

-				handle(e);

-				// Fall through and get the default label

-			}

-		}

-		return element.getName();

-	}

-	

-	/**

-	 * Returns the label for the given input element.

-	 */

-	private String getVersionLabel(ITypedElement element) {

-		if (element instanceof ResourceNode) {

-			return Policy.bind("CVSCompareEditorInput.workspaceLabel");

-		}

-		if (element instanceof ResourceEditionNode) {

-			ICVSRemoteResource edition = ((ResourceEditionNode)element).getRemoteResource();

-			ICVSResource resource = (ICVSResource)edition;

-			try {

-				if (edition.isContainer()) {

-					CVSTag tag = ((ICVSRemoteFolder)resource).getTag();

-					if (tag == null) {

-						return Policy.bind("CVSCompareEditorInput.headLabel");

-					} else if (tag.getType() == CVSTag.BRANCH) {

-						return Policy.bind("CVSCompareEditorInput.branchLabel", tag.getName());

-					} else {

-						return tag.getName();

-					}

-				} else {

-					return resource.getSyncInfo().getRevision();

-				}

-			} catch (TeamException e) {

-				handle(e);

-				// Fall through and get the default label

-			}

-		}

-		return element.getName();

-	}

-	

-	/*

-	 * Returns a guess of the resource name being compared, for display

-	 * in the title.

-	 */

-	private String guessResourceName() {

-		if (left != null) {

-			return left.getName();

-		}

-		if (right != null) {

-			return right.getName();

-		}

-		if (ancestor != null) {

-			return ancestor.getName();

-		}

-		return "";

-	}

-	

-	/**

-	 * Handles a random exception and sanitizes it into a reasonable

-	 * error message.  

-	 */

-	private void handle(Exception e) {

-		// create a status

-		Throwable t = e;

-		// unwrap the invocation target exception

-		if (t instanceof InvocationTargetException) {

-			t = ((InvocationTargetException)t).getTargetException();

-		}

-		IStatus error;

-		if (t instanceof CoreException) {

-			error = ((CoreException)t).getStatus();

-		} else if (t instanceof TeamException) {

-			error = ((TeamException)t).getStatus();

-		} else {

-			error = new Status(IStatus.ERROR, CVSUIPlugin.ID, 1, Policy.bind("internal"), t);

-		}

-		setMessage(error.getMessage());

-		if (!(t instanceof TeamException)) {

-			CVSUIPlugin.log(error);

-		}

-	}

-	

-	/**

-	 * Sets up the title and pane labels for the comparison view.

-	 */

-	private void initLabels() {

-		CompareConfiguration cc = (CompareConfiguration) getCompareConfiguration();

-	

-		String leftLabel = getLabel(left);

-		cc.setLeftLabel(leftLabel);

-		cc.setLeftImage(left.getImage());

-	

-		String rightLabel = getLabel(right);

-		cc.setRightLabel(rightLabel);

-		cc.setRightImage(right.getImage());

-	

-		String title;

-		if (ancestor != null) {

-			cc.setAncestorLabel(getLabel(ancestor));

-			cc.setAncestorImage(ancestor.getImage());

-			title = Policy.bind("CVSCompareEditorInput.titleAncestor", new Object[] {guessResourceName(), getVersionLabel(ancestor), getVersionLabel(left), getVersionLabel(right)} );

-		} else {

-			String leftName = null;

-			if (left != null) leftName = left.getName();

-			String rightName = null;

-			if (right != null) rightName = right.getName();

-			boolean differentNames = false;

-			if (leftName != null && !leftName.equals(rightName)) {

-				title = Policy.bind("CVSCompareEditorInput.titleNoAncestorDifferent", new Object[] {leftName, getVersionLabel(left), rightName, getVersionLabel(right)} ); 

-			} else {

-				title = Policy.bind("CVSCompareEditorInput.titleNoAncestor", new Object[] {guessResourceName(), getVersionLabel(left), getVersionLabel(right)} );

-			}

-		}

-		setTitle(title);

-	}

-	

-	/* (Non-javadoc)

-	 * Method declared on CompareEditorInput

-	 */

-	public boolean isSaveNeeded() {

-		return false;

-	}

-

-	/* (non-Javadoc)

-	 * Method declared on CompareEditorInput

-	 */

-	protected Object prepareInput(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {

-		boolean threeWay = ancestor != null;

-		if (right == null || left == null) {

-			setMessage(Policy.bind("CVSCompareEditorInput.different"));

-			return null;

-		}

-		

-		initLabels();

-	

-		Differencer d = new Differencer() {

-			protected boolean contentsEqual(Object input1, Object input2) {

-				int compare = teamEqual(input1, input2);

-				if (compare == NODE_EQUAL) {

-					return true;

-				}

-				if (compare == NODE_NOT_EQUAL) {

-					return false;

-				}

-				//revert to slow content comparison

-				return super.contentsEqual(input1, input2);

-			}

-			protected void updateProgress(IProgressMonitor progressMonitor, Object node) {

-				super.updateProgress(progressMonitor, node);

-				progressMonitor.worked(1);

-			}

-			protected Object[] getChildren(Object input) {

-				if (input instanceof IStructureComparator) {

-					Object[] children= ((IStructureComparator)input).getChildren();

-					if (children != null)

-						return children;

-				}

-				return null;

-			}

-		};

-		

-		try {

-			monitor.beginTask(Policy.bind("CVSCompareEditorInput.comparing"), 30);

-			

-			// get the CVS provider if one exists

-			if (left instanceof ResourceNode) {

-				IResource resource = ((ResourceNode)left).getResource();

-				ITeamProvider p = TeamPlugin.getManager().getProvider(resource);

-				if(p != null && p instanceof CVSTeamProvider) {

-					cvsProvider = (CVSTeamProvider)p;

-				}

-			}

-			

-			// do the diff	

-			IProgressMonitor sub = new SubProgressMonitor(monitor, 10);

-			try {

-				sub.beginTask(Policy.bind("CVSCompareEditorInput.comparing"), 100);

-				return d.findDifferences(threeWay, sub, null, ancestor, left, right);

-			} finally {

-				sub.done();

-			}

-		} catch (OperationCanceledException e) {

-			throw new InterruptedException(e.getMessage());

-		} catch (RuntimeException e) {

-			handle(e);

-			return null;	

-		} finally {

-			monitor.done();

-		}

-	}

-	

-	/**

-	 * Compares two nodes to determine if they are equal.  Returns NODE_EQUAL

-	 * of they are the same, NODE_NOT_EQUAL if they are different, and

-	 * NODE_UNKNOWN if comparison was not possible.

-	 */

-	protected int teamEqual(Object left, Object right) {

-		

-		// calculate the type for the left contribution

-		ICVSRemoteResource leftEdition = null;

-		if (left instanceof ResourceEditionNode) {

-			leftEdition = ((ResourceEditionNode)left).getRemoteResource();

-		} else if (left instanceof ResourceNode) {

-			IResource resource = ((ResourceNode)left).getResource();

-			try {

-				ICVSResource element = null;

-				if(resource.getType()==IResource.FILE) {

-					element = new LocalFile(resource.getLocation().toFile());

-					if (((LocalFile)element).isDirty()) {

-						return NODE_NOT_EQUAL;

-					}

-				} else {

-					element = new LocalFolder(resource.getLocation().toFile());

-				}

-				if(cvsProvider==null) {

-					return NODE_UNKNOWN;

-				}

-				leftEdition = cvsProvider.getRemoteResource(resource);

-			} catch(CVSException e) {

-				return NODE_UNKNOWN;

-			} catch(TeamException e) {

-				return NODE_UNKNOWN;

-			}

-		}

-		

-		// calculate the type for the right contribution

-		ICVSRemoteResource rightEdition = null;

-		if (right instanceof ResourceEditionNode)

-			rightEdition = ((ResourceEditionNode)right).getRemoteResource();

-		

-		

-		// compare them

-			

-		if (leftEdition == null || rightEdition == null) {

-			return NODE_UNKNOWN;

-		}

-		// if they're both non-files, they're the same

-		if (leftEdition.isContainer() && rightEdition.isContainer()) {

-			return NODE_EQUAL;

-		}

-		// if they have different types, they're different

-		if (leftEdition.isContainer() != rightEdition.isContainer()) {

-			return NODE_NOT_EQUAL;

-		}

-		

-		if (!leftEdition.getRepository().getLocation().equals(rightEdition.getRepository().getLocation())) {

-			return NODE_UNKNOWN;

-		}

-		try {

-			ResourceSyncInfo leftInfo = ((ICVSResource)leftEdition).getSyncInfo();

-			ResourceSyncInfo rightInfo = ((ICVSResource)rightEdition).getSyncInfo();

-			

-			if (leftEdition.getRepositoryRelativePath().equals(rightEdition.getRepositoryRelativePath()) &&

-				leftInfo.getRevision().equals(rightInfo.getRevision())) {

-				return NODE_EQUAL;

-			} else {

-				// Optimized for most common case. There are actually cases where a file is merged from

-				// one branch to another where the revision numbers are different but the file is the same.

-				// We do not handle this case properly.

-				return NODE_NOT_EQUAL;

-			}

-		} catch (TeamException e) {

-			handle(e);

-			return NODE_UNKNOWN;

-		}

-	}

-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareRevisionsInput.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareRevisionsInput.java
deleted file mode 100644
index bb2b2c0..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareRevisionsInput.java
+++ /dev/null
@@ -1,421 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.CompareEditorInput;
-import org.eclipse.compare.CompareUI;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.compare.ResourceNode;
-import org.eclipse.compare.structuremergeviewer.DiffContainer;
-import org.eclipse.compare.structuremergeviewer.DiffNode;
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.ccvs.core.ILogEntry;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-public class CVSCompareRevisionsInput extends CompareEditorInput {
-	IFile resource;
-	CVSTeamProvider provider;
-	ICVSRemoteFile currentEdition;
-	ILogEntry[] editions;
-	TableViewer viewer;
-	Action loadAction;
-	Shell shell;
-	
-	/**
-	 * This class is an edition node which knows the log entry it came from.
-	 */
-	class ResourceRevisionNode extends ResourceEditionNode {	
-		ILogEntry entry;
-		public ResourceRevisionNode(ILogEntry entry) {
-			super(entry.getRemoteFile());
-			this.entry = entry;
-		}
-		public ILogEntry getLogEntry() {
-			return entry;
-		}
-		public String getName() {
-			ICVSRemoteResource edition = getRemoteResource();
-			String revisionName = entry.getRevision();
-			if (revisionName != null) {
-				IResource resource = CVSCompareRevisionsInput.this.resource;
-				try {
-					ICVSRemoteFile currentEdition = (ICVSRemoteFile)provider.getRemoteResource(resource);
-					if (currentEdition != null && currentEdition.getRevision().equals(revisionName)) {
-						return "*" + revisionName;
-					} else {
-						return revisionName;
-					}
-				} catch (TeamException e) {
-					handle(e);
-				}
-			}
-			return super.getName();
-		}
-	};
-	/**
-	 * A compare node that gets its label from the right element
-	 */
-	class VersionCompareDiffNode extends DiffNode {
-		public VersionCompareDiffNode(ITypedElement left, ITypedElement right) {
-			super(left, right);
-		}
-		public String getName() {
-			return getRight().getName();
-		}
-	};
-	/**
-	 * A content provider which knows how to get the children of the diff container
-	 */
-	class VersionCompareContentProvider implements IStructuredContentProvider {
-		public void dispose() {
-		}
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		}
-		public Object[] getElements(Object inputElement) {
-			if (inputElement instanceof DiffContainer) {
-				return ((DiffContainer)inputElement).getChildren();
-			}
-			return null;
-		}
-	};
-	/**
-	 * A sorter which gets the remote resources from the diff nodes
-	 */
-	class VersionSorter extends HistorySorter {
-		public VersionSorter(int columnNumber) {
-			super(columnNumber);
-		}
-		public int compare(Viewer viewer, Object o1, Object o2) {
-			VersionCompareDiffNode d1 = (VersionCompareDiffNode)o1;
-			VersionCompareDiffNode d2 = (VersionCompareDiffNode)o2;
-			return super.compare(viewer, ((ResourceRevisionNode)d1.getRight()).getRemoteResource(), ((ResourceRevisionNode)d2.getRight()).getRemoteResource());
-		}
-		
-	};
-	
-	//column constants
-	private static final int COL_REVISION = 0;
-	private static final int COL_TAGS = 1;
-	private static final int COL_DATE = 2;
-	private static final int COL_AUTHOR = 3;
-	private static final int COL_COMMENT = 4;
-
-	/**
-	 * A history label provider, largely copied from HistoryView.
-	 */
-	class HistoryLabelProvider extends LabelProvider implements ITableLabelProvider {
-		public Image getColumnImage(Object element, int columnIndex) {
-			return null;
-		}
-		public String getColumnText(Object element, int columnIndex) {
-			if (!(element instanceof DiffNode)) return "";
-			ITypedElement right = ((DiffNode)element).getRight();
-			if (!(right instanceof ResourceRevisionNode)) return "";
-			ILogEntry entry = ((ResourceRevisionNode)right).getLogEntry();
-			switch (columnIndex) {
-				case COL_REVISION:
-					try {
-						StringBuffer revisionName = new StringBuffer();
-						if (currentEdition != null && currentEdition.getRevision().equals(entry.getRevision())) {
-							revisionName.append("*");
-						}
-						revisionName.append(entry.getRevision());
-						return revisionName.toString();
-					} catch (TeamException e) {
-						handle(e);
-					}
-					return entry.getRevision();
-				case COL_TAGS:
-					CVSTag[] tags = entry.getTags();
-					StringBuffer result = new StringBuffer();
-					for (int i = 0; i < tags.length; i++) {
-						result.append(tags[i].getName());
-						if (i < tags.length - 1) {
-							result.append(", ");
-						}
-					}
-					return result.toString();
-				case COL_DATE:
-					return entry.getDate();
-				case COL_AUTHOR:
-					return entry.getAuthor();
-				case COL_COMMENT:
-					String comment = entry.getComment();
-					int index = comment.indexOf("\n");
-					if (index == -1) return comment;
-					return comment.substring(0, index) + "[...]";
-			}
-			return "";
-		}
-	}
-	
-	public CVSCompareRevisionsInput(IFile resource, ILogEntry[] editions) {
-		super(new CompareConfiguration());
-		this.resource = resource;
-		this.provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(resource.getProject());
-		this.editions = editions;
-		updateCurrentEdition();
-		initializeActions();
-	}
-	/**
-	 * Creates the columns for the history table.
-	 * Copied from HistoryView.
-	 */
-	private void createColumns(Table table, TableLayout layout) {
-		SelectionListener headerListener = getColumnListener();
-		// revision
-		TableColumn col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.revision"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(20, true));
-	
-		// tags
-		col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.tags"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(20, true));
-	
-		// creation date
-		col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.date"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(20, true));
-	
-		// author
-		col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.author"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(20, true));
-	
-		//comment
-		col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.comment"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(50, true));
-	}
-	public Viewer createDiffViewer(Composite parent) {
-		this.shell = parent.getShell();
-		Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
-		GridData data = new GridData(GridData.FILL_BOTH);
-		table.setLayoutData(data);
-		table.setData(CompareUI.COMPARE_VIEWER_TITLE, Policy.bind("CVSCompareRevisionsInput.structureCompare"));
-	
-		TableLayout layout = new TableLayout();
-		table.setLayout(layout);
-		
-		createColumns(table, layout);
-	
-		viewer = new TableViewer(table);
-		viewer.setContentProvider(new VersionCompareContentProvider());
-		viewer.setLabelProvider(new HistoryLabelProvider());
-
-		MenuManager mm = new MenuManager();
-		mm.setRemoveAllWhenShown(true);
-		mm.addMenuListener(
-			new IMenuListener() {
-				public void menuAboutToShow(IMenuManager mm) {
-					mm.add(loadAction);
-				}
-			}
-		);
-		table.setMenu(mm.createContextMenu(table));
-		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				ISelection selection = event.getSelection();
-				if (!(selection instanceof IStructuredSelection)) {
-					loadAction.setEnabled(false);
-					return;
-				}
-				IStructuredSelection ss = (IStructuredSelection)selection;
-				loadAction.setEnabled(ss.size() == 1);
-			}	
-		});
-		return viewer;
-	}
-	/**
-	 * Adds the listener that sets the sorter.
-	 */
-	private SelectionListener getColumnListener() {
-		/**
-	 	 * This class handles selections of the column headers.
-		 * Selection of the column header will cause resorting
-		 * of the shown tasks using that column's sorter.
-		 * Repeated selection of the header will toggle
-		 * sorting order (ascending versus descending).
-		 */
-		return new SelectionAdapter() {
-			/**
-			 * Handles the case of user selecting the
-			 * header area.
-			 * <p>If the column has not been selected previously,
-			 * it will set the sorter of that column to be
-			 * the current tasklist sorter. Repeated
-			 * presses on the same column header will
-			 * toggle sorting order (ascending/descending).
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				// column selected - need to sort
-				int column = viewer.getTable().indexOf((TableColumn) e.widget);
-				HistorySorter oldSorter = (HistorySorter)viewer.getSorter();
-				if (oldSorter != null && column == oldSorter.getColumnNumber()) {
-					oldSorter.setReversed(!oldSorter.isReversed());
-					viewer.refresh();
-				} else {
-					viewer.setSorter(new HistorySorter(column));
-				}
-			}
-		};
-	}
-	private void initLabels() {
-		CompareConfiguration cc = (CompareConfiguration)getCompareConfiguration();
-		String resourceName = resource.getName();	
-//		if (editions[0].isTeamStreamResource()) {
-//			setTitle(Policy.bind("CompareResourceEditorInput.compareResourceAndStream", new Object[] {resourceName, editions[0].getTeamStream().getName()}));
-//		} else {
-//			setTitle(Policy.bind("CompareResourceEditorInput.compareResourceAndVersions", new Object[] {resourceName}));
-//		}
-		setTitle(Policy.bind("CVSCompareRevisionsInput.compareResourceAndVersions", new Object[] {resourceName}));
-		cc.setLeftEditable(true);
-		cc.setRightEditable(false);
-		
-		String leftLabel = Policy.bind("CVSCompareRevisionsInput.workspace", new Object[] {resourceName});
-		cc.setLeftLabel(leftLabel);
-		String rightLabel = Policy.bind("CVSCompareRevisionsInput.repository", new Object[] {resourceName});
-		cc.setRightLabel(rightLabel);
-	}
-	private void initializeActions() {
-		loadAction = new Action(Policy.bind("CVSCompareRevisionsInput.addToWorkspace"), null) {
-			public void run() {
-				try {
-					new ProgressMonitorDialog(shell).run(false, true, new WorkspaceModifyOperation() {
-						protected void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-							IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
-							if (selection.size() != 1) return;
-							VersionCompareDiffNode node = (VersionCompareDiffNode)selection.getFirstElement();
-							ResourceEditionNode right = (ResourceEditionNode)node.getRight();
-							ICVSRemoteResource edition = right.getRemoteResource();
-							// Do the load. This just consists of setting the local contents. We don't
-							// actually want to change the base.
-							try {
-								monitor.beginTask(null, 100);
-								InputStream in = edition.getContents(new SubProgressMonitor(monitor, 50));
-								resource.setContents(in, false, true, new SubProgressMonitor(monitor, 50));
-							} catch (TeamException e) {
-								throw new InvocationTargetException(e);
-							} catch (CoreException e) {
-								throw new InvocationTargetException(e);
-							} finally {
-								monitor.done();
-							}
-						}
-					});
-				} catch (InterruptedException e) {
-					// Do nothing
-					return;
-				} catch (InvocationTargetException e) {
-					handle(e);
-				}
-				// recompute the labels on the viewer
-				updateCurrentEdition();
-				viewer.refresh();
-			}
-		};
-		// set F1 help
-//		WorkbenchHelp.setHelp(loadAction, new Object[] {IVCMHelpContextIds.CATCHUPRELEASE_CATCHUP_ACTION});
-	}
-	public boolean isSaveNeeded() {
-		return false;
-	}
-	protected Object prepareInput(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-		initLabels();
-		DiffNode diffRoot = new DiffNode(Differencer.NO_CHANGE);
-		for (int i = 0; i < editions.length; i++) {		
-			ITypedElement left = new ResourceNode(resource);
-			ITypedElement right = new ResourceRevisionNode(editions[i]);
-			diffRoot.add(new VersionCompareDiffNode(left, right));
-		}
-		return diffRoot;		
-	}
-	private void updateCurrentEdition() {
-		try {
-			this.currentEdition = ((ICVSRemoteFile)provider.getRemoteResource(resource));
-		} catch (TeamException e) {
-			handle(e);
-		}
-	}
-	private void handle(Exception e) {
-		// create a status
-		Throwable t = e;
-		// unwrap the invocation target exception
-		if (t instanceof InvocationTargetException) {
-			t = ((InvocationTargetException)t).getTargetException();
-		}
-		IStatus error;
-		if (t instanceof CoreException) {
-			error = ((CoreException)t).getStatus();
-		} else if (t instanceof TeamException) {
-			error = ((TeamException)t).getStatus();
-		} else {
-			error = new Status(IStatus.ERROR, CVSUIPlugin.ID, 1, Policy.bind("internal"), t);
-		}
-		setMessage(error.getMessage());
-		ErrorDialog.openError(shell, null, null, error);
-		if (!(t instanceof TeamException)) {
-			CVSUIPlugin.log(error);
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java
deleted file mode 100644
index 484494d..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.util.List;
-import java.util.Map;
-
-public class CVSDecoration {
-	
-		private String format;
-		private Map bindings;
-		private List overlays;
-
-		/* package */ CVSDecoration() {
-			this(null, null, null);
-		}
-
-		/* package */ CVSDecoration(String format, Map bindings, List overlays) {
-			setFormat(format);
-			setBindings(bindings);
-			setOverlays(overlays);
-		}
-		
-		/**
-		 * Gets the overlays.
-		 * @return Returns a List
-		 */
-		public List getOverlays() {
-			return overlays;
-		}
-
-		/**
-		 * Sets the overlays.
-		 * @param overlays The overlays to set
-		 */
-		public void setOverlays(List overlays) {
-			this.overlays = overlays;
-		}
-
-		/**
-		 * Gets the substitutions.
-		 * @return Returns a String[]
-		 */
-		public Map getBindins() {
-			return bindings;
-		}
-
-		/**
-		 * Sets the substitutions.
-		 * @param substitutions The substitutions to set
-		 */
-		public void setBindings(Map bindings) {
-			this.bindings = bindings;
-		}
-
-		/**
-		 * Gets the textBinding.
-		 * @return Returns a String
-		 */
-		public String getFormat() {
-			return format;
-		}
-
-		/**
-		 * Sets the textBinding.
-		 * @param textBinding The textBinding to set
-		 */
-		public void setFormat(String format) {
-			this.format = format;
-		}			
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecorationRunnable.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecorationRunnable.java
deleted file mode 100644
index 1f10296..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecorationRunnable.java
+++ /dev/null
@@ -1,267 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceVisitor;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;
-import org.eclipse.team.internal.ccvs.core.syncinfo.*;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.ui.ISharedImages;
-import org.eclipse.team.ui.TeamUIPlugin;
-
-/**
- * Performs the decoration calculation for elements made available via the decoration notifier.
- */
-public class CVSDecorationRunnable implements Runnable {
-
-	// Images cached for better performance
-	private ImageDescriptor dirty;
-	private ImageDescriptor checkedIn;
-	private ImageDescriptor checkedOut;
-
-	// Provides resources to be decorated and is notified when decoration has been calculated
-	private IDecorationNotifier notifier;
-
-	/*
-	 * Define a cached image descriptor which only creates the image data once
-	 */
-	public class CachedImageDescriptor extends ImageDescriptor {
-		ImageDescriptor descriptor;
-		ImageData data;
-		public CachedImageDescriptor(ImageDescriptor descriptor) {
-			this.descriptor = descriptor;
-		}
-		public ImageData getImageData() {
-			if (data == null) {
-				data = descriptor.getImageData();
-			}
-			return data;
-		}
-	}
-
-	/* package */
-	CVSDecorationRunnable(IDecorationNotifier notifier) {
-
-		dirty = new CachedImageDescriptor(TeamUIPlugin.getPlugin().getImageDescriptor(ISharedImages.IMG_DIRTY_OVR));
-		checkedIn = new CachedImageDescriptor(TeamUIPlugin.getPlugin().getImageDescriptor(ISharedImages.IMG_CHECKEDIN_OVR));
-		checkedOut = new CachedImageDescriptor(TeamUIPlugin.getPlugin().getImageDescriptor(ISharedImages.IMG_CHECKEDOUT_OVR));
-
-		this.notifier = notifier;
-	}
-
-	/*
-	 * @see Runnable#run()
-	 */
-	public void run() {
-		while (true) {
-			// will block if there are no resources to be decorated
-			IResource resource = notifier.next();
-			
-			// if next() returned null, we are done and should shut down.
-			if (resource == null) {
-				return;
-			}
-			// it is possible that the resource to be decorated is no longer associated
-			// with a CVS provider. This could happen if the team nature was removed
-			// between the time the decoration event was posted to the thread and the time
-			// the thread processes the decoration.
-			ITeamProvider provider = TeamPlugin.getManager().getProvider(resource);
-			if(!resource.exists() || provider==null || !(provider instanceof CVSTeamProvider)) {
-				continue;
-			}
-
-			// determine a if resource has outgoing changes (e.g. is dirty).
-			IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
-			boolean isDirty = false;
-			boolean computeDeepDirtyCheck = store.getBoolean(ICVSUIConstants.PREF_CALCULATE_DIRTY);
-			int type = resource.getType();
-			if(type == IResource.FILE || computeDeepDirtyCheck) {
-				isDirty = isDirty(resource);
-			}
-			
-			// compute decorations						
-			CVSDecoration decoration = computeTextLabelFor(resource, isDirty, provider);
-			decoration.setOverlays(computeLabelOverlaysFor(resource, isDirty, provider));
-			
-			// notify that decoration is ready
-			notifier.decorated(resource, decoration);
-		}
-	}
-
-	private CVSDecoration computeTextLabelFor(IResource resource, boolean isDirty, ITeamProvider provider) {
-		Map bindings = new HashMap(3);
-		String format = ""; //$NON-NLS-1$
-		IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
-		
-		IPath resourceLocation = resource.getLocation();
-		int type = resource.getType();
-		
-		// if the resource does not have a location then return. This can happen if the resource
-		// has been deleted after we where asked to decorate it.
-		if(resourceLocation==null) {
-			return new CVSDecoration(format, bindings, null);
-		}
-		
-		if(type==IResource.FOLDER) {
-			format = store.getString(ICVSUIConstants.PREF_FOLDERTEXT_DECORATION);
-		} else if(type==IResource.PROJECT) {
-			format = store.getString(ICVSUIConstants.PREF_PROJECTTEXT_DECORATION);
-		} else {
-			format = store.getString(ICVSUIConstants.PREF_FILETEXT_DECORATION);
-		}
-		
-		if(isDirty) {
-			bindings.put(CVSDecoratorConfiguration.DIRTY_FLAG, store.getString(ICVSUIConstants.PREF_DIRTY_FLAG));
-		}
-			
-		try {
-			switch (type) {
-				case IResource.FOLDER : 
-				case IResource.PROJECT :
-					ICVSFolder folder = new LocalFolder(resourceLocation.toFile());
-					FolderSyncInfo folderInfo = folder.getFolderSyncInfo();
-					if (folderInfo != null) {
-						CVSTag tag = folderInfo.getTag();
-						if(tag!=null) {
-							bindings.put(CVSDecoratorConfiguration.RESOURCE_TAG, tag.getName());
-						}
-						ICVSRepositoryLocation location = CVSProviderPlugin.getProvider().getRepository(folderInfo.getRoot());
-						bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_HOST, location.getHost());
-						bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_METHOD, location.getMethod().getName());
-						bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_USER, location.getUsername());
-						bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_ROOT, location.getRootDirectory());
-						bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_REPOSITORY, folderInfo.getRepository());
-					}
-					break;
-				case IResource.FILE :
-					format = store.getString(ICVSUIConstants.PREF_FILETEXT_DECORATION);
-					ICVSFile file = new LocalFile(resourceLocation.toFile());
-					ResourceSyncInfo fileInfo = file.getSyncInfo();
-					if (fileInfo != null) {
-						CVSTag tag = fileInfo.getTag();
-						if(fileInfo.isAdded()) {
-							bindings.put(CVSDecoratorConfiguration.ADDED_FLAG, store.getString(ICVSUIConstants.PREF_ADDED_FLAG));
-						} else {
-							bindings.put(CVSDecoratorConfiguration.FILE_REVISION, fileInfo.getRevision());
-						}
-						bindings.put(CVSDecoratorConfiguration.FILE_KEYWORD, CVSDecorator.getFileTypeString(fileInfo.getName(), fileInfo.getKeywordMode()));
-						if (tag != null && (tag.getType() != CVSTag.HEAD)) {
-							bindings.put(CVSDecoratorConfiguration.RESOURCE_TAG, tag.getName());
-						}
-					} else {
-						// only show the type that cvs will use when comitting the file
-						bindings.put(CVSDecoratorConfiguration.FILE_KEYWORD, CVSDecorator.getFileTypeString(file.getName(), null));
-					}
-					break;
-			}			
-			return new CVSDecoration(format, bindings, null);
-		} catch (CVSException e) {
-			return new CVSDecoration();
-		}
-	}
-
-	private List computeLabelOverlaysFor(IResource resource, boolean isDirty, ITeamProvider provider) {
-		List overlays = new ArrayList(3);
-		
-		IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
-		boolean showDirty = store.getBoolean(ICVSUIConstants.PREF_SHOW_DIRTY_DECORATION);
-		boolean showHasRemote = store.getBoolean(ICVSUIConstants.PREF_SHOW_HASREMOTE_DECORATION);
-		boolean showAdded = store.getBoolean(ICVSUIConstants.PREF_SHOW_ADDED_DECORATION);
-		
-		if(showDirty && isDirty) {
-				overlays.add(dirty);
-		}
-		
-		if (showHasRemote && provider.hasRemote(resource)) {
-			overlays.add(checkedIn);
-		}
-		if (showAdded && resource.getType() == IResource.FILE && provider.isCheckedOut(resource)) {
-			overlays.add(checkedOut);
-		}
-		if(overlays.isEmpty()) {
-			return null;
-		} else {		
-			return overlays;
-		}
-	}
-
-	private boolean isDirty(IResource resource) {
-		final CoreException DECORATOR_EXCEPTION = new CoreException(new Status(IStatus.OK, "id", 1, "", null)); //$NON-NLS-1$ //$NON-NLS-2$
-		try {
-			resource.accept(new IResourceVisitor() {
-				public boolean visit(IResource resource) throws CoreException {
-
-					// a project can't be dirty, continue with its children
-					if (resource.getType() == IResource.PROJECT) {
-						return true;
-					}
-					
-					// if the resource does not exist in the workbench or on the file system, stop searching.
-					if(!resource.exists()) {
-						return false;
-					}
-
-					ICVSResource cvsResource;
-					if (resource.getType() == IResource.FILE) {
-						cvsResource = new LocalFile(resource.getLocation().toFile());
-					} else {
-						cvsResource = new LocalFolder(resource.getLocation().toFile());
-					}
-
-					try {
-						if (!cvsResource.isManaged()) {
-							if (cvsResource.isIgnored() || cvsResource.getParent().isIgnored()) {
-								return false;
-							} else {
-								// new resource, show as dirty
-								throw DECORATOR_EXCEPTION;
-							}
-						}
-						if (!cvsResource.isFolder()) {
-							if (((ICVSFile) cvsResource).isModified()) {
-								// file has changed, show as dirty
-								throw DECORATOR_EXCEPTION;
-							}
-						}
-					} catch (CVSException e) {
-						return true;
-					}
-					// no change -- keep looking in children
-					return true;
-				}
-			}, IResource.DEPTH_INFINITE, true);
-		} catch (CoreException e) {
-			//if our exception was caught, we know there's a dirty child
-			return e == DECORATOR_EXCEPTION;
-		}
-		return false;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecorator.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecorator.java
deleted file mode 100644
index bf52fc4..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecorator.java
+++ /dev/null
@@ -1,338 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.IResourceStateChangeListener;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSProvider;
-import org.eclipse.team.internal.ccvs.core.util.Assert;
-
-/**
- * Classes registered with the workbench decoration extension point. The <code>CVSDecorationRunnable</code> class
- * actually calculates the decoration, while this class is responsible for listening to the following sources
- * for indications that the decorators need updating:
- * <ul>
- * 	<li>workbench label requests (decorateText/decorateImage)
- * 	<li>workspace resource change events (resourceChanged)
- * 	<li>cvs state changes (resourceStateChanged)
- * </ul>
- * <p>
- * [Note: There are several optimization that can be implemented in this class: (1) cache something
- * so that computing the dirty state of containers does not imply traversal of all children, (2) improve
- * the queue used between the decorator and the decorator runnable such that priority can be
- * given to visible elements when decoration requests are made.]
- */
-public class CVSDecorator extends LabelProvider implements ILabelDecorator, IResourceStateChangeListener, IDecorationNotifier {
-
-	private static CVSDecorator theDecorator = null;
-	
-	// Resources that need an icon and text computed for display to the user, no order
-	private Set decoratorNeedsUpdating = Collections.synchronizedSet(new HashSet());
-
-	// When decorations are computed they are added to this cache via decorated() method
-	private Map cache = Collections.synchronizedMap(new HashMap());
-
-	// Updater thread, computes decoration labels and images
-	private Thread decoratorUpdateThread;
-
-	private boolean shutdown = false;
-	
-	public CVSDecorator() {
-		// The decorator is a singleton, there should never be more than one instance.
-		// temporary until the UI component properly calls dispose when the workbench shutsdown
-		// UI Bug 9633
-		Assert.isTrue(theDecorator==null);
-		theDecorator = this;
-		
-		decoratorUpdateThread = new Thread(new CVSDecorationRunnable(this), "CVS"); //$NON-NLS-1$
-		decoratorUpdateThread.start();
-		TeamPlugin.getManager().addResourceStateChangeListener(this);
-	}
-
-	public String decorateText(String text, Object o) {
-		IResource resource = getResource(o);
-		if (resource == null || text == null || resource.getType() == IResource.ROOT)
-			return text;
-		if (getCVSProviderFor(resource) == null)
-			return text;
-
-		CVSDecoration decoration = (CVSDecoration) cache.get(resource);
-
-		if (decoration != null) {
-			String format = decoration.getFormat();
-			if (format == null) {
-				return text;
-			} else {
-				Map bindings = decoration.getBindins();
-				if (bindings.isEmpty())
-					return text;
-				bindings.put(CVSDecoratorConfiguration.RESOURCE_NAME, text);
-				return CVSDecoratorConfiguration.bind(format, bindings);
-			}
-		} else {
-			addResourcesToBeDecorated(new IResource[] { resource });
-			return text;
-		}
-	}
-
-	public Image decorateImage(Image image, Object o) {
-		IResource resource = getResource(o);
-		if (resource == null || image == null || resource.getType() == IResource.ROOT)
-			return image;
-		if (getCVSProviderFor(resource) == null)
-			return image;
-
-		CVSDecoration decoration = (CVSDecoration) cache.get(resource);
-
-		if (decoration != null) {
-			List overlays = decoration.getOverlays();
-			return overlays == null ? image : new OverlayIcon(image.getImageData(), new ImageDescriptor[][] {(ImageDescriptor[]) overlays.toArray(new ImageDescriptor[overlays.size()])}, new Point(16, 16)).createImage();
-		} else {
-			addResourcesToBeDecorated(new IResource[] { resource });
-			return image;
-		}
-	}
-
-	/*
-	 * @see IDecorationNotifier#next()
-	 */
-	public synchronized IResource next() {
-		try {
-			if (shutdown) return null;
-			
-			if (decoratorNeedsUpdating.isEmpty()) {
-				wait();
-			}
-			// We were awakened.
-			if (shutdown) {
-				// The decorator was awakened by the plug-in as it was shutting down.
-				return null;
-			}
-			Iterator iterator = decoratorNeedsUpdating.iterator();
-			IResource resource = (IResource) iterator.next();
-			iterator.remove();
-
-			//System.out.println("++ Next: " + resource.getFullPath() + " remaining in cache: " + cache.size());
-
-			return resource;
-		} catch (InterruptedException e) {
-		}
-		return null;
-	}
-
-	/*
-	 * @see IDecorationNotifier#notify(IResource, CVSDecoration)
-	 */
-	public synchronized void decorated(IResource resource, CVSDecoration decoration) {
-		// ignore resources that aren't in the workbench anymore.
-		if(resource.exists() && !shutdown) {
-			cache.put(resource, decoration);
-			postLabelEvents(new LabelProviderChangedEvent[] { new LabelProviderChangedEvent(this, resource)});
-		}
-	}
-
-	/*
-	 * @see IResourceChangeListener#resourceChanged(IResourceChangeEvent)
-	 */
-
-	/*
-	 * @see IResourceStateChangeListener#resourceStateChanged(IResource[])
-	 */
-	public void resourceStateChanged(IResource[] changedResources) {
-		// add depth first so that update thread processes parents first.
-		//System.out.println(">> State Change Event");
-		List resources = new ArrayList();
-		List noProviderResources = new ArrayList();
-		for (int i = 0; i < changedResources.length; i++) {
-			// ignore subtrees that aren't associated with a provider, this can happen on import
-			// of a new project to CVS.
-			if (getCVSProviderFor(changedResources[i]) == null) {
-				noProviderResources.add(changedResources[i]);
-			}
-			resources.addAll(computeParents(changedResources[i]));
-		}
-		addResourcesToBeDecorated((IResource[]) resources.toArray(new IResource[resources.size()]));
-		if(!noProviderResources.isEmpty()) {
-			List events = new ArrayList();
-			for (Iterator it = resources.iterator(); it.hasNext();) {
-				IResource element = (IResource) it.next();
-				events.add(new LabelProviderChangedEvent(this, element));
-			}
-			postLabelEvents((LabelProviderChangedEvent[]) events.toArray(new LabelProviderChangedEvent[events.size()]));
-		}
-	}
-
-	public static void refresh() {
-		try {
-			IResource[] resources = ResourcesPlugin.getWorkspace().getRoot().members();
-			for (int i = 0; i < resources.length; i++) {
-				if (getCVSProviderFor(resources[i]) != null) {
-					refresh(resources[i]);
-				}
-			}
-		} catch (CoreException e) {
-		}
-	}
-
-	public static void refresh(IResource resource) {
-		final List resources = new ArrayList();
-		try {
-			resource.accept(new IResourceVisitor() {
-				public boolean visit(IResource resource) {
-					resources.add(resource);
-					return true;
-				}
-			});
-			TeamPlugin.getManager().broadcastResourceStateChanges((IResource[]) resources.toArray(new IResource[resources.size()]));	
-		} catch (CoreException e) {
-		}
-	}
-
-	private List computeParents(IResource resource) {
-		IResource current = resource;
-		List resources = new ArrayList();
-		while (current.getType() != IResource.ROOT) {
-			resources.add(current);
-			current = current.getParent();
-		}
-		return resources;
-	}
-	
-	private synchronized void addResourcesToBeDecorated(IResource[] resources) {
-		if (resources.length > 0) {
-			for (int i = 0; i < resources.length; i++) {
-				//System.out.println("\t to update: " + resources[i].getFullPath());
-				decoratorNeedsUpdating.add(resources[i]);
-			}
-			notify();
-		}
-	}
-
-	/** 
-	 * Answers null if a provider does not exist or the provider is not a CVS provider. These resources
-	 * will be ignored by the decorator.
-	 */
-	private static CVSTeamProvider getCVSProviderFor(IResource resource) {
-		ITeamProvider p = TeamPlugin.getManager().getProvider(resource);
-		if (p == null || !(p instanceof CVSTeamProvider)) {
-			return null;
-		}
-		return (CVSTeamProvider) p;
-	}
-	
-	/**
-	 * Returns the resource for the given input object, or
-	 * null if there is no resource associated with it.
-	 * 
-	 * @param object  the object to find the resource for
-	 * @return the resource for the given object, or null
-	 */
-	private IResource getResource(Object object) {
-		if (object instanceof IResource) {
-			return (IResource)object;
-		}
-		if (object instanceof IAdaptable) {
-			return (IResource)((IAdaptable)object).getAdapter(IResource.class);
-		}
-		return null;
-	}
-
-	/**
-	 * Post the label events to the UI thread
-	 * 
-	 * @param events  the events to post
-	 */
-	private void postLabelEvents(final LabelProviderChangedEvent[] events) {
-		// now post the change events to the UI thread
-		if (events.length > 0) {
-			Display.getDefault().asyncExec(new Runnable() {
-				public void run() {
-					for (int i = 0; i < events.length; i++) {
-						fireLabelProviderChanged(events[i]);
-					}
-				}
-			});
-		}
-	} 
-	
-	private void shutdown() {
-		shutdown = true;
-		// Wake the thread up if it is asleep.
-		synchronized (this) {
-			notifyAll();
-		}
-		try {
-			// Wait for the decorator thread to finish before returning.
-			decoratorUpdateThread.join();
-		} catch (InterruptedException e) {
-		}
-	}
-
-	public static void shutdownAll() {
-		if(theDecorator!=null) {
-			theDecorator.dispose();
-		}
-	}
-	
-	public static String getFileTypeString(String name, String keyword) {
-		StringBuffer buffer = new StringBuffer();
-		boolean isBinary = false;
-		if(keyword!=null) {
-			if (keyword.equals("-kb")) { //$NON-NLS-1$
-				isBinary = true;
-			}
-		} else {
-			isBinary = !CVSProvider.isText(name);
-		}
-		
-		if(isBinary) {
-			buffer.append(Policy.bind("CVSFilePropertiesPage.binary")); 
-		} else {
-			buffer.append(Policy.bind("CVSFilePropertiesPage.text"));
-			if(keyword!=null && !keyword.equals("-ko") && !"".equals(keyword)) { //$NON-NLS-1$ //$NON-NLS-2$
-				buffer.append(" " + keyword); //$NON-NLS-1$
-			}
-		}		
-		return buffer.toString();
-	}
-	
-	/*
-	 * @see IBaseLabelProvider#dispose()
-	 */
-	public void dispose() {
-		super.dispose();
-		shutdown();
-		
-		TeamPlugin.getManager().removeResourceStateChangeListener(this);
-		
-		decoratorNeedsUpdating.clear();
-		cache.clear();
-		theDecorator = null;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorConfiguration.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorConfiguration.java
deleted file mode 100644
index 80d811c..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorConfiguration.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.team.ccvs.core.CVSStatus;
-
-public class CVSDecoratorConfiguration {
-
-	// bindings for 
-	public static final String RESOURCE_NAME = "name"; //$NON-NLS-1$
-	public static final String RESOURCE_TAG = "tag"; //$NON-NLS-1$
-	public static final String FILE_REVISION = "revision"; //$NON-NLS-1$
-	public static final String FILE_KEYWORD = "keyword"; //$NON-NLS-1$
-	
-	// bindings for repository location
-	public static final String REMOTELOCATION_METHOD = "method"; //$NON-NLS-1$
-	public static final String REMOTELOCATION_USER = "user"; //$NON-NLS-1$
-	public static final String REMOTELOCATION_HOST = "host"; //$NON-NLS-1$
-	public static final String REMOTELOCATION_ROOT = "root"; //$NON-NLS-1$
-	public static final String REMOTELOCATION_REPOSITORY = "repository"; //$NON-NLS-1$
-	
-	// bindings for resource states
-	public static final String DIRTY_FLAG = "dirty_flag"; //$NON-NLS-1$
-	public static final String ADDED_FLAG = "added_flag"; //$NON-NLS-1$
-	public static final String DEFAULT_DIRTY_FLAG = ">"; //$NON-NLS-1$
-	public static final String DEFAULT_ADDED_FLAG = "*"; //$NON-NLS-1$
-	
-	// default text decoration formats
-	public static final String DEFAULT_FILETEXTFORMAT = "{dirty_flag}{name}  {revision} {tag}"; //$NON-NLS-1$
-	public static final String DEFAULT_FOLDERTEXTFORMAT = "{dirty_flag}{name}  {tag}"; //$NON-NLS-1$
-	public static final String DEFAULT_PROJECTTEXTFORMAT = "{dirty_flag}{name}  {tag} [{host}]"; //$NON-NLS-1$
-
-	// prefix characters that can be removed if the following binding is not found
-	private static final char KEYWORD_SEPSPACE = ' ';
-	private static final char KEYWORD_SEPCOLON = ':';
-	private static final char KEYWORD_SEPAT = '@';
-		
-	public static String bind(String format, Map bindings) {
-		StringBuffer output = new StringBuffer(80);
-		int length = format.length();
-		int start = -1;
-		int end = length;
-		while (true) {
-			if ((end = format.indexOf('{', start)) > -1) {
-				output.append(format.substring(start + 1, end));
-				if ((start = format.indexOf('}', end)) > -1) {
-					String s = (String)bindings.get(format.substring(end + 1, start));
-					if(s!=null) {
-						output.append(s);
-					} else {
-						// support for removing prefix character if binding is null
-						int curLength = output.length();
-						if(curLength>0) {
-							char c = output.charAt(curLength - 1);
-							if(c == KEYWORD_SEPCOLON || c == KEYWORD_SEPAT) {
-								output.deleteCharAt(curLength - 1);							
-							}
-						}
-					}
-				} else {
-					output.append(format.substring(end, length));
-					break;
-				}
-			} else {
-				output.append(format.substring(start + 1, length));
-				break;
-			}
-		}
-		return output.toString();
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java
deleted file mode 100644
index 4bfe11a..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java
+++ /dev/null
@@ -1,385 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.dialogs.ListSelectionDialog;
-
-public class CVSDecoratorPreferencesPage extends PreferencePage implements IWorkbenchPreferencePage {
-
-	private Button imageShowDirty;
-	private Button imageShowHasRemote;
-	private Button imageShowAdded;
-	
-	private Text fileTextFormat;
-	private Text fileTextFormatExample;
-	
-	private Text folderTextFormat;
-	private Text folderTextFormatExample;
-	
-	private Text projectTextFormat;
-	private Text projectTextFormatExample;
-	
-	private Text dirtyFlag;
-	private Text addedFlag;
-	
-	private Button showDirty;
-	
-	class StringPair {
-		String s1;
-		String s2;
-	}
-	
-	class TextPair {
-		TextPair(Text t1, Text t2) {
-			this.t1 = t1;
-			this.t2 = t2;
-		}
-		Text t1;
-		Text t2;
-	}
-	
-	protected TextPair createFormatEditorControl(Composite composite, String title, String buttonText, final Map supportedBindings) {
-		createLabel(composite, title, 1);
-		Text format = new Text(composite, SWT.BORDER);
-		format.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		format.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {				
-				updateExamples();
-			}
-		});
-		Button b = new Button(composite, SWT.NONE);
-		b.setText(buttonText);
-		b.setLayoutData(new GridData());
-		final Text formatToInsert = format;
-		b.addListener(SWT.MouseDown, new Listener() {
-			public void handleEvent (Event event) {
-				addVariables(formatToInsert, supportedBindings);
-			}			
-		});
-		
-		createLabel(composite, Policy.bind("Example__1"), 1); //$NON-NLS-1$
-		Text example = new Text(composite, SWT.BORDER);
-		example.setEditable(false);
-		example.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		createLabel(composite, "", 1); // spacer //$NON-NLS-1$
-		return new TextPair(format, example);
-	}
-	
-	protected void updateExamples() {
-		String example = ""; //$NON-NLS-1$
-		Map bindings = new HashMap();
-		try {
-			ICVSRepositoryLocation location = CVSRepositoryLocation.fromString(":pserver:username@host.acme.org:/home/cvsroot");				 //$NON-NLS-1$
-			bindings.put(CVSDecoratorConfiguration.RESOURCE_TAG, "v2_0"); //$NON-NLS-1$
-			bindings.put(CVSDecoratorConfiguration.FILE_KEYWORD, CVSDecorator.getFileTypeString("file.txt",null)); //$NON-NLS-1$
-			bindings.put(CVSDecoratorConfiguration.FILE_REVISION, "1.34"); //$NON-NLS-1$
-			bindings.put(CVSDecoratorConfiguration.DIRTY_FLAG, dirtyFlag.getText());
-			bindings.put(CVSDecoratorConfiguration.ADDED_FLAG, addedFlag.getText());
-			bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_HOST, location.getHost());
-			bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_METHOD, location.getMethod().getName());
-			bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_USER, location.getUsername());
-			bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_ROOT, location.getRootDirectory());
-			bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_REPOSITORY, "org.eclipse.project1"); //$NON-NLS-1$
-		} catch(CVSException e) {
-			example = e.getMessage();
-		}
-		bindings.put(CVSDecoratorConfiguration.RESOURCE_NAME, "file.txt"); //$NON-NLS-1$
-		setTextFormatExample(bindings);
-		bindings.remove(CVSDecoratorConfiguration.RESOURCE_NAME);
-		bindings.put(CVSDecoratorConfiguration.RESOURCE_NAME, "folder"); //$NON-NLS-1$
-		setFolderFormatExample(bindings);
-		bindings.remove(CVSDecoratorConfiguration.RESOURCE_NAME);
-		bindings.put(CVSDecoratorConfiguration.RESOURCE_NAME, "Project"); //$NON-NLS-1$
-		setProjectFormatExample(bindings);
-	}
-	
-	/**
-	 * @see PreferencePage#createContents(Composite)
-	 */
-	protected Control createContents(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NULL);
-		GridLayout layout= new GridLayout();
-		composite.setLayout(layout);
-		composite.setLayoutData(new GridData());
-
-		// file text decoration options
-
-		Group fileTextGroup = new Group(composite, SWT.NULL);
-		layout = new GridLayout();
-		layout.numColumns = 3;
-		fileTextGroup.setLayout(layout);
-		GridData data = new GridData();
-		data.horizontalAlignment = GridData.FILL;
-		fileTextGroup.setLayoutData(data);
-		fileTextGroup.setText(Policy.bind("Text_Labels_12")); //$NON-NLS-1$
-		createLabel(fileTextGroup, Policy.bind("Select_the_format_for_file,_folders,_and_project_text_labels__13"), 3); //$NON-NLS-1$
-
-		TextPair format = createFormatEditorControl(fileTextGroup, Policy.bind("&File_Format__14"), Policy.bind("Add_&Variables_15"), getFileBindingDescriptions()); //$NON-NLS-1$ //$NON-NLS-2$
-		fileTextFormat = format.t1;
-		fileTextFormatExample = format.t2;
-		format = createFormatEditorControl(fileTextGroup, Policy.bind("F&older_Format__16"), Policy.bind("Add_Varia&bles_17"), getFolderBindingDescriptions()); //$NON-NLS-1$ //$NON-NLS-2$
-		folderTextFormat = format.t1;
-		folderTextFormatExample = format.t2;
-		format = createFormatEditorControl(fileTextGroup, Policy.bind("&Project_Format__18"), Policy.bind("Add_Variable&s_19"), getFolderBindingDescriptions()); //$NON-NLS-1$ //$NON-NLS-2$
-		projectTextFormat = format.t1;
-		projectTextFormatExample = format.t2;
-
-		createLabel(fileTextGroup, Policy.bind("&Label_decoration_for_outgoing__20"), 1); //$NON-NLS-1$
-		dirtyFlag = new Text(fileTextGroup, SWT.BORDER);
-		dirtyFlag.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		dirtyFlag.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {				
-				updateExamples();
-			}
-		});
-		createLabel(fileTextGroup, "", 1); // spacer //$NON-NLS-1$
-		
-		createLabel(fileTextGroup, Policy.bind("Label_decorat&ion_for_added__22"), 1); //$NON-NLS-1$
-		addedFlag = new Text(fileTextGroup, SWT.BORDER);
-		addedFlag.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		addedFlag.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {				
-				updateExamples();
-			}
-		});
-
-		createLabel(fileTextGroup, "", 1); // spacer //$NON-NLS-1$
-		
-		// image decoration options
-		
-		Group imageGroup = new Group(composite, SWT.NULL);
-		layout = new GridLayout();
-		imageGroup.setLayout(layout);
-		data = new GridData();
-		data.horizontalAlignment = GridData.FILL;
-		imageGroup.setLayoutData(data);
-		imageGroup.setText(Policy.bind("Icon_Overlays_24")); //$NON-NLS-1$
-		imageShowDirty = createCheckBox(imageGroup, Policy.bind("Sho&w_outgoing_25")); //$NON-NLS-1$
-		imageShowHasRemote = createCheckBox(imageGroup, Policy.bind("Show_has_&remote_26")); //$NON-NLS-1$
-		imageShowAdded = createCheckBox(imageGroup, Policy.bind("S&how_is_added_27")); //$NON-NLS-1$
-		
-		showDirty = createCheckBox(composite, Policy.bind("&Compute_deep_outgoing_state_for_folders_(disabling_this_will_improve_decorator_performance)_28")); //$NON-NLS-1$
-				
-		initializeValues();
-		return composite;
-	}
-	
-	private Label createLabel(Composite parent, String text, int span) {
-		Label label = new Label(parent, SWT.LEFT);
-		label.setText(text);
-		GridData data = new GridData();
-		data.horizontalSpan = span;
-		data.horizontalAlignment = GridData.FILL;
-		label.setLayoutData(data);
-		return label;
-	}
-	
-	private Button createCheckBox(Composite group, String label) {
-		Button button = new Button(group, SWT.CHECK);
-		button.setText(label);
-		return button;
-	}
-	
-	protected void setTextFormatExample(Map bindings) {
-		String example = CVSDecoratorConfiguration.bind(fileTextFormat.getText(), bindings);				
-		fileTextFormatExample.setText(example);
-	}
-	
-	protected void setFolderFormatExample(Map bindings) {
-		String example = CVSDecoratorConfiguration.bind(folderTextFormat.getText(), bindings);				
-		folderTextFormatExample.setText(example);
-	}
-	
-	protected void setProjectFormatExample(Map bindings) {
-		String example = CVSDecoratorConfiguration.bind(projectTextFormat.getText(), bindings);					
-		projectTextFormatExample.setText(example);
-	}
-
-	/**
-	 * Initializes states of the controls from the preference store.
-	 */
-	private void initializeValues() {
-		IPreferenceStore store = getPreferenceStore();
-		
-		fileTextFormat.setText(store.getString(ICVSUIConstants.PREF_FILETEXT_DECORATION));
-		folderTextFormat.setText(store.getString(ICVSUIConstants.PREF_FOLDERTEXT_DECORATION));
-		projectTextFormat.setText(store.getString(ICVSUIConstants.PREF_PROJECTTEXT_DECORATION));
-		
-		addedFlag.setText(store.getString(ICVSUIConstants.PREF_ADDED_FLAG));
-		dirtyFlag.setText(store.getString(ICVSUIConstants.PREF_DIRTY_FLAG));
-		
-		imageShowDirty.setSelection(store.getBoolean(ICVSUIConstants.PREF_SHOW_DIRTY_DECORATION));
-		imageShowAdded.setSelection(store.getBoolean(ICVSUIConstants.PREF_SHOW_ADDED_DECORATION));
-		imageShowHasRemote.setSelection(store.getBoolean(ICVSUIConstants.PREF_SHOW_HASREMOTE_DECORATION));
-		
-		showDirty.setSelection(store.getBoolean(ICVSUIConstants.PREF_CALCULATE_DIRTY));
-	
-		setValid(true);
-	}
-
-	/**
-	* @see IWorkbenchPreferencePage#init(IWorkbench)
-	*/
-	public void init(IWorkbench workbench) {
-	}
-
-	/**
-	 * OK was clicked. Store the CVS preferences.
-	 *
-	 * @return whether it is okay to close the preference page
-	 */
-	public boolean performOk() {
-		IPreferenceStore store = getPreferenceStore();
-		store.setValue(ICVSUIConstants.PREF_FILETEXT_DECORATION, fileTextFormat.getText());
-		store.setValue(ICVSUIConstants.PREF_FOLDERTEXT_DECORATION, folderTextFormat.getText());
-		store.setValue(ICVSUIConstants.PREF_PROJECTTEXT_DECORATION, projectTextFormat.getText());
-		
-		store.setValue(ICVSUIConstants.PREF_ADDED_FLAG, addedFlag.getText());
-		store.setValue(ICVSUIConstants.PREF_DIRTY_FLAG, dirtyFlag.getText());
-		
-		store.setValue(ICVSUIConstants.PREF_SHOW_DIRTY_DECORATION, imageShowDirty.getSelection());
-		store.setValue(ICVSUIConstants.PREF_SHOW_ADDED_DECORATION, imageShowAdded.getSelection());
-		store.setValue(ICVSUIConstants.PREF_SHOW_HASREMOTE_DECORATION, imageShowHasRemote.getSelection());
-		
-		store.setValue(ICVSUIConstants.PREF_CALCULATE_DIRTY, showDirty.getSelection());
-		
-		CVSDecorator.refresh();
-		return true;
-	}
-
-	/**
-	 * Defaults was clicked. Restore the CVS preferences to
-	 * their default values
-	 */
-	protected void performDefaults() {
-		super.performDefaults();
-		IPreferenceStore store = getPreferenceStore();
-		
-		fileTextFormat.setText(store.getDefaultString(ICVSUIConstants.PREF_FILETEXT_DECORATION));
-		folderTextFormat.setText(store.getDefaultString(ICVSUIConstants.PREF_FOLDERTEXT_DECORATION));
-		projectTextFormat.setText(store.getDefaultString(ICVSUIConstants.PREF_PROJECTTEXT_DECORATION));
-		
-		addedFlag.setText(store.getDefaultString(ICVSUIConstants.PREF_ADDED_FLAG));
-		dirtyFlag.setText(store.getDefaultString(ICVSUIConstants.PREF_DIRTY_FLAG));
-		
-		imageShowDirty.setSelection(store.getDefaultBoolean(ICVSUIConstants.PREF_SHOW_DIRTY_DECORATION));
-		imageShowAdded.setSelection(store.getDefaultBoolean(ICVSUIConstants.PREF_SHOW_ADDED_DECORATION));
-		imageShowHasRemote.setSelection(store.getDefaultBoolean(ICVSUIConstants.PREF_SHOW_HASREMOTE_DECORATION));
-		
-		showDirty.setSelection(store.getDefaultBoolean(ICVSUIConstants.PREF_CALCULATE_DIRTY));
-	}
-
-	/**
-	* Returns preference store that belongs to the our plugin.
-	* This is important because we want to store
-	* our preferences separately from the desktop.
-	*
-	* @return the preference store for this plugin
-	*/
-	protected IPreferenceStore doGetPreferenceStore() {
-		return CVSUIPlugin.getPlugin().getPreferenceStore();
-	}
-	
-	/**
-	 * Add another project to the list at the end.
-	 */
-	private void addVariables(Text target, Map bindings) {
-	
-		final List variables = new ArrayList(bindings.size());
-		
-		ILabelProvider labelProvider = new LabelProvider() {
-			public String getText(Object element) {
-				return ((StringPair)element).s1 + " - " + ((StringPair)element).s2; //$NON-NLS-1$
-			}
-		};
-		
-		IStructuredContentProvider contentsProvider = new IStructuredContentProvider() {
-			public Object[] getElements(Object inputElement) {
-				return (Object[]) variables.toArray(new StringPair[variables.size()]);
-			}
-			public void dispose() {}
-			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
-		};
-		
-		for (Iterator it = bindings.keySet().iterator(); it.hasNext();) {
-			StringPair variable = new StringPair();
-			variable.s1 = (String) it.next(); // variable
-			variable.s2 = (String) bindings.get(variable.s1); // description
-			variables.add(variable);				
-		}
-	
-		ListSelectionDialog dialog =
-			new ListSelectionDialog(
-				this.getShell(),
-				this,
-				contentsProvider,
-				labelProvider,
-				Policy.bind("Select_the_&variables_to_add_to_the_decoration_format__30")); //$NON-NLS-1$
-		dialog.setTitle(Policy.bind("Add_Variables_31")); //$NON-NLS-1$
-		if (dialog.open() != dialog.OK)
-			return;
-	
-		Object[] result = dialog.getResult();
-		
-		for (int i = 0; i < result.length; i++) {
-			target.insert("{"+((StringPair)result[i]).s1 +"}"); //$NON-NLS-1$ //$NON-NLS-2$
-		}		
-	}
-	
-	private Map getFolderBindingDescriptions() {
-		Map bindings = new HashMap();
-		bindings.put(CVSDecoratorConfiguration.RESOURCE_NAME, Policy.bind("name_of_the_resource_being_decorated_34")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.RESOURCE_TAG, Policy.bind("the_tag_applied_to_the_resource_(version,_branch,_or_date)_35")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_HOST, Policy.bind("the_repository_location__s_hostname_36")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_METHOD, Policy.bind("the_connection_method_(e.g._pserver,_ssh)_37")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_USER, Policy.bind("user_name_for_the_connection_38")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_ROOT, Policy.bind("repository_home_directory_on_server_39")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_REPOSITORY, Policy.bind("root_relative_directory_40")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.DIRTY_FLAG, Policy.bind("flag_indicating_that_the_folder_has_a_child_resource_with_outgoing_changes_41")); //$NON-NLS-1$
-		return bindings;
-	}
-	
-	private Map getFileBindingDescriptions() {
-		Map bindings = new HashMap();
-		bindings.put(CVSDecoratorConfiguration.RESOURCE_NAME, Policy.bind("name_of_the_resource_being_decorated_42")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.RESOURCE_TAG, Policy.bind("the_tag_applied_to_the_resource_43")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.FILE_KEYWORD, Policy.bind("keyword_subsitution_rule_for_the_resource_44")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.FILE_REVISION, Policy.bind("last_revision_loaded_into_workspace_45")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.DIRTY_FLAG, Policy.bind("flag_indicating_that_the_file_has_outgoing_changes_46")); //$NON-NLS-1$
-		bindings.put(CVSDecoratorConfiguration.ADDED_FLAG, Policy.bind("flag_indicating_that_the_file_has_been_added_to_the_server_47")); //$NON-NLS-1$
-		return bindings;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFilePropertiesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFilePropertiesPage.java
deleted file mode 100644
index c08f967..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFilePropertiesPage.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;
-import org.eclipse.team.internal.ccvs.core.syncinfo.*;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-public class CVSFilePropertiesPage extends PropertyPage {
-	IFile file;
-
-	/*
-	 * @see PreferencesPage#createContents
-	 */
-	protected Control createContents(Composite parent) {
-		initialize();
-		noDefaultAndApplyButton();
-		Composite composite = new Composite(parent, SWT.NULL);
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		composite.setLayout(layout);
-		
-		try {
-			LocalFile cvsResource = new LocalFile(file.getLocation().toFile());
-			if (!cvsResource.isManaged()) {
-				if (cvsResource.isIgnored()) {
-					createLabel(composite, Policy.bind("CVSFilePropertiesPage.ignored"));
-				} else {
-					createLabel(composite, Policy.bind("CVSFilePropertiesPage.notManaged"));
-				}
-				createLabel(composite, "");
-				return composite;
-			}
-			ResourceSyncInfo syncInfo = cvsResource.getSyncInfo();
-			
-			// Base
-			createLabel(composite, Policy.bind("CVSFilePropertiesPage.baseRevision"));
-			createLabel(composite, syncInfo.getRevision());
-			createLabel(composite, Policy.bind("CVSFilePropertiesPage.baseTimestamp"));
-			createLabel(composite, syncInfo.getTimeStamp());
-			
-			// Dirty and Modified
-			createLabel(composite, Policy.bind("CVSFilePropertiesPage.dirty"));
-			createLabel(composite, cvsResource.isDirty() ? Policy.bind("yes") : Policy.bind("no"));
-			createLabel(composite, Policy.bind("CVSFilePropertiesPage.modified"));
-			createLabel(composite, cvsResource.isModified() ? Policy.bind("yes") : Policy.bind("no"));
-			
-			// Keyword Mode
-			createLabel(composite, Policy.bind("CVSFilePropertiesPage.keywordMode"));
-			String keywordMode = syncInfo.getKeywordMode();
-			if (keywordMode.equals("-kb")) {
-				createLabel(composite, Policy.bind("CVSFilePropertiesPage.binary")); 
-			} else if (keywordMode.equals("-ko")) {
-				createLabel(composite, Policy.bind("CVSFilePropertiesPage.textNoKeyword"));
-			} else if (keywordMode.equals("")) {
-				createLabel(composite, Policy.bind("CVSFilePropertiesPage.text"));
-			} else {
-				createLabel(composite, keywordMode);
-			}
-			
-			// Tag
-			createLabel(composite, Policy.bind("CVSFilePropertiesPage.tag"));
-			CVSTag tag = syncInfo.getTag();
-			if (tag == null) {
-				createLabel(composite, Policy.bind("CVSFilePropertiesPage.none"));
-			} else {
-				switch (tag.getType()) {
-					case CVSTag.HEAD:
-						createLabel(composite, tag.getName());
-						break;
-					case CVSTag.VERSION:
-						createLabel(composite, Policy.bind("CVSFilePropertiesPage.version", tag.getName()));
-						break;
-					case CVSTag.BRANCH:
-						createLabel(composite, Policy.bind("CVSFilePropertiesPage.branch", tag.getName()));
-						break;
-					case CVSTag.DATE:
-						createLabel(composite, Policy.bind("CVSFilePropertiesPage.date", tag.getName()));
-						break;
-				}
-			}
-			
-			// Permissions
-			createLabel(composite, Policy.bind("CVSFilePropertiesPage.permissions"));
-			String permissions = syncInfo.getPermissions();
-			if (permissions == null) {
-				createLabel(composite, Policy.bind("CVSFilePropertiesPage.notAvailable"));
-			} else {
-				createLabel(composite, syncInfo.getPermissions());
-			}
-		} catch (TeamException e) {
-			// Display error text
-			createLabel(composite, Policy.bind("CVSFilePropertiesPage.error"));
-			createLabel(composite, "");
-		}
-		return composite;
-	}
-	/**
-	 * Utility method that creates a label instance
-	 * and sets the default layout data.
-	 *
-	 * @param parent  the parent for the new label
-	 * @param text  the text for the new label
-	 * @return the new label
-	 */
-	protected Label createLabel(Composite parent, String text) {
-		Label label = new Label(parent, SWT.LEFT);
-		label.setText(text);
-		GridData data = new GridData();
-		data.horizontalSpan = 1;
-		data.horizontalAlignment = GridData.FILL;
-		label.setLayoutData(data);
-		return label;
-	}
-	/**
-	 * Initializes the page
-	 */
-	private void initialize() {
-		// Get the file that is the source of this property page
-		file = null;
-		IAdaptable element = getElement();
-		if (element instanceof IFile) {
-			file = (IFile)element;
-		} else {
-			Object adapter = element.getAdapter(IFile.class);
-			if (adapter instanceof IFile) {
-				file = (IFile)adapter;
-			}
-		}
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java
deleted file mode 100644
index 65cdb71..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java
+++ /dev/null
@@ -1,245 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Command.QuietOption;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * CVS Preference Page
- * 
- * Allows the configuration of CVS specific options.
- * The currently supported options are:
- *  - Allow loading of CVS administration directory (CVSROOT)
- * 
- * There are currently a couple of deficiencies:
- *  1. The Repository view is not refreshed when the show CVSROOT option is changed
- *  2. There is no help associated with the page
- */
-public class CVSPreferencesPage
-	extends PreferencePage
-	implements IWorkbenchPreferencePage {
-
-	private Button pruneEmptyDirectoriesField;
-	private Text timeoutValue;
-	private Combo quietnessCombo;
-	private Button historyTracksSelectionButton;
-	
-	/**
-	 * Utility method that creates a combo box
-	 *
-	 * @param parent  the parent for the new label
-	 * @return the new widget
-	 */
-	protected Combo createCombo(Composite parent) {
-		Combo combo = new Combo(parent, SWT.READ_ONLY);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
-		combo.setLayoutData(data);
-		return combo;
-	}
-	
-	/**
-	 * Creates composite control and sets the default layout data.
-	 *
-	 * @param parent  the parent of the new composite
-	 * @param numColumns  the number of columns for the new composite
-	 * @return the newly-created coposite
-	 */
-	private Composite createComposite(Composite parent, int numColumns) {
-		Composite composite = new Composite(parent, SWT.NULL);
-
-		//GridLayout
-		GridLayout layout = new GridLayout();
-		layout.numColumns = numColumns;
-		composite.setLayout(layout);
-
-		//GridData
-		GridData data = new GridData();
-		data.verticalAlignment = GridData.FILL;
-		data.horizontalAlignment = GridData.FILL;
-		composite.setLayoutData(data);
-		return composite;
-	}
-
-	/**
-	 * Creates an new checkbox instance and sets the default
-	 * layout data.
-	 *
-	 * @param group  the composite in which to create the checkbox
-	 * @param label  the string to set into the checkbox
-	 * @return the new checkbox
-	 */
-	private Button createCheckBox(Composite group, String label) {
-		Button button = new Button(group, SWT.CHECK | SWT.LEFT);
-		button.setText(label);
-		GridData data = new GridData();
-		data.horizontalSpan = 2;
-		button.setLayoutData(data);
-		return button;
-	}
-
-	/**
-	 * @see PreferencePage#createContents(Composite)
-	 */
-	protected Control createContents(Composite parent) {
-		Composite composite = createComposite(parent, 2);
-
-		// set F1 help
-//		WorkbenchHelp.setHelp(composite, new DialogPageContextComputer(this, ICVSHelpContextIds.CVS_PREFERENCE_PAGE));
-
-		pruneEmptyDirectoriesField = createCheckBox(composite, Policy.bind("CVSPreferencePage.pruneEmptyDirectories"));
-
-		createLabel(composite, Policy.bind("CVSPreferencePage.timeoutValue"));
-		timeoutValue = createTextField(composite);
-		timeoutValue.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				// Parse the timeout value
-				try {
-					Integer.parseInt(timeoutValue.getText());
-					setValid(true);
-				} catch (NumberFormatException ex) {
-					setValid(false);
-				}
-			}
-		});
-		
-		createLabel(composite, Policy.bind("CVSPreferencePage.quietness"));
-		quietnessCombo = createCombo(composite);
-		
-		historyTracksSelectionButton = createCheckBox(composite, Policy.bind("CVSPreferencePage.historyTracksSelection"));
-		
-		initializeValues();
-
-		return composite;
-	}
-	/**
-	 * Utility method that creates a label instance
-	 * and sets the default layout data.
-	 *
-	 * @param parent  the parent for the new label
-	 * @param text  the text for the new label
-	 * @return the new label
-	 */
-	private Label createLabel(Composite parent, String text) {
-		Label label = new Label(parent, SWT.LEFT);
-		label.setText(text);
-		GridData data = new GridData();
-		data.horizontalSpan = 1;
-		data.horizontalAlignment = GridData.FILL;
-		label.setLayoutData(data);
-		return label;
-	}
-	/**
-	 * Creates an new text widget and sets the default
-	 * layout data.
-	 *
-	 * @param group  the composite in which to create the checkbox
-	 * @return the new text widget
-	 */ 
-	private Text createTextField(Composite group) {
-		Text text = new Text(group, SWT.BORDER);
-		text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		return text;
-	}
-	/**
-	 * Initializes states of the controls from the preference store.
-	 */
-	private void initializeValues() {
-		IPreferenceStore store = getPreferenceStore();
-		pruneEmptyDirectoriesField.setSelection(store.getBoolean(ICVSUIConstants.PREF_PRUNE_EMPTY_DIRECTORIES));
-		timeoutValue.setText(new Integer(store.getInt(ICVSUIConstants.PREF_TIMEOUT)).toString());
-		quietnessCombo.add(Policy.bind("CVSPreferencePage.notquiet"));
-		quietnessCombo.add(Policy.bind("CVSPreferencePage.somewhatquiet"));
-		quietnessCombo.add(Policy.bind("CVSPreferencePage.reallyquiet"));
-		quietnessCombo.select(store.getInt(ICVSUIConstants.PREF_QUIETNESS));
-		historyTracksSelectionButton.setSelection(store.getBoolean(ICVSUIConstants.PREF_HISTORY_TRACKS_SELECTION));
-	}
-
-	/**
-	* @see IWorkbenchPreferencePage#init(IWorkbench)
-	*/
-	public void init(IWorkbench workbench) {
-	}
-
-	/**
-	 * OK was clicked. Store the CVS preferences.
-	 *
-	 * @return whether it is okay to close the preference page
-	 */
-	public boolean performOk() {
-		
-		// Parse the timeout value
-		int timeout = Integer.parseInt(timeoutValue.getText());
-		
-		IPreferenceStore store = getPreferenceStore();
-		
-		store.setValue(ICVSUIConstants.PREF_PRUNE_EMPTY_DIRECTORIES, pruneEmptyDirectoriesField.getSelection());
-		store.setValue(ICVSUIConstants.PREF_TIMEOUT, timeout);
-		store.setValue(ICVSUIConstants.PREF_QUIETNESS, quietnessCombo.getSelectionIndex());
-		store.setValue(ICVSUIConstants.PREF_HISTORY_TRACKS_SELECTION, historyTracksSelectionButton.getSelection());	
-		
-		CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(
-			store.getBoolean(ICVSUIConstants.PREF_PRUNE_EMPTY_DIRECTORIES));
-		CVSProviderPlugin.getPlugin().setTimeout(
-			store.getInt(ICVSUIConstants.PREF_TIMEOUT));
-		CVSProviderPlugin.getPlugin().setQuietness(
-			getQuietnessOptionFor(store.getInt(ICVSUIConstants.PREF_QUIETNESS)));
-
-		return true;
-	}
-
-	/**
-	 * Defaults was clicked. Restore the CVS preferences to
-	 * their default values
-	 */
-	protected void performDefaults() {
-		super.performDefaults();
-		IPreferenceStore store = getPreferenceStore();
-		pruneEmptyDirectoriesField.setSelection(
-			store.getDefaultBoolean(ICVSUIConstants.PREF_PRUNE_EMPTY_DIRECTORIES));
-		timeoutValue.setText(new Integer(store.getDefaultInt(ICVSUIConstants.PREF_TIMEOUT)).toString());
-		quietnessCombo.select(store.getDefaultInt(ICVSUIConstants.PREF_QUIETNESS));
-		historyTracksSelectionButton.setSelection(store.getDefaultBoolean(ICVSUIConstants.PREF_HISTORY_TRACKS_SELECTION));
-	}
-
-	/**
-	* Returns preference store that belongs to the our plugin.
-	* This is important because we want to store
-	* our preferences separately from the desktop.
-	*
-	* @return the preference store for this plugin
-	*/
-	protected IPreferenceStore doGetPreferenceStore() {
-		return CVSUIPlugin.getPlugin().getPreferenceStore();
-	}
-	
-	protected static QuietOption getQuietnessOptionFor(int option) {
-		switch (option) {
-			case 0: return Command.VERBOSE;
-			case 1: return Command.PARTLY_QUIET;
-			case 2: return Command.SILENT;
-		}
-		return null;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPropertiesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPropertiesPage.java
deleted file mode 100644
index 2c935d7..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPropertiesPage.java
+++ /dev/null
@@ -1,255 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.ccvs.core.IUserInfo;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-public class CVSPropertiesPage extends PropertyPage {
-	IProject project;
-	
-	// Widgets
-	Text userText;
-	Text passwordText;
-	Combo methodType;
-	Label hostLabel;
-	Label pathLabel;
-	Label moduleLabel;
-	Label portLabel;
-	
-	boolean passwordChanged;
-
-	IUserInfo info;
-	CVSTeamProvider provider;
-		
-	/*
-	 * @see PreferencesPage#createContents
-	 */
-	protected Control createContents(Composite parent) {
-		initialize();
-		
-		Composite composite = new Composite(parent, SWT.NULL);
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		composite.setLayout(layout);
-		
-		Label label = createLabel(composite, Policy.bind("CVSPropertiesPage.connectionType"));
-		methodType = createCombo(composite);
-		
-		label = createLabel(composite, Policy.bind("CVSPropertiesPage.user"));
-		userText = createTextField(composite);
-		
-		label = createLabel(composite, Policy.bind("CVSPropertiesPage.password"));
-		passwordText = createTextField(composite);
-		passwordText.setEchoChar('*');
-		
-		label = createLabel(composite, Policy.bind("CVSPropertiesPage.host"));
-		hostLabel = createLabel(composite, "");
-		
-		label = createLabel(composite, Policy.bind("CVSPropertiesPage.port"));
-		portLabel = createLabel(composite, "");
-		
-		label = createLabel(composite, Policy.bind("CVSPropertiesPage.path"));
-		pathLabel = createLabel(composite, "");
-		
-		label = createLabel(composite, Policy.bind("CVSPropertiesPage.module"));
-		moduleLabel = createLabel(composite, "");
-		
-		initializeValues();
-		passwordText.addListener(SWT.Modify, new Listener() {
-			public void handleEvent(Event event) {
-				passwordChanged = true;
-			}
-		});
-		return composite;
-	}
-	/**
-	 * Utility method that creates a combo box
-	 *
-	 * @param parent  the parent for the new label
-	 * @return the new widget
-	 */
-	protected Combo createCombo(Composite parent) {
-		Combo combo = new Combo(parent, SWT.READ_ONLY);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
-		combo.setLayoutData(data);
-		return combo;
-	}
-	/**
-	 * Utility method that creates a label instance
-	 * and sets the default layout data.
-	 *
-	 * @param parent  the parent for the new label
-	 * @param text  the text for the new label
-	 * @return the new label
-	 */
-	protected Label createLabel(Composite parent, String text) {
-		Label label = new Label(parent, SWT.LEFT);
-		label.setText(text);
-		GridData data = new GridData();
-		data.horizontalSpan = 1;
-		data.horizontalAlignment = GridData.FILL;
-		label.setLayoutData(data);
-		return label;
-	}
-	/**
-	 * Create a text field specific for this application
-	 *
-	 * @param parent  the parent of the new text field
-	 * @return the new text field
-	 */
-	protected Text createTextField(Composite parent) {
-		Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		data.verticalAlignment = GridData.CENTER;
-		data.grabExcessVerticalSpace = false;
-		data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
-		text.setLayoutData(data);
-		return text;
-	}
-	/**
-	 * Initializes the page
-	 */
-	private void initialize() {
-		// Get the project that is the source of this property page
-		project = null;
-		IAdaptable element = getElement();
-		if (element instanceof IProject) {
-			project = (IProject)element;
-		} else {
-			Object adapter = element.getAdapter(IProject.class);
-			if (adapter instanceof IProject) {
-				project = (IProject)adapter;
-			}
-		}
-	}
-	/**
-	 * Set the initial values of the widgets
-	 */
-	private void initializeValues() {
-		passwordChanged = false;
-		
-		provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(project);
-		if (provider == null) return;
-		
-		String[] methods = CVSProviderPlugin.getProvider().getSupportedConnectionMethods();
-		for (int i = 0; i < methods.length; i++) {
-			methodType.add(methods[i]);
-		}
-		try {
-			String method = provider.getConnectionMethod(project);
-			methodType.select(methodType.indexOf(method));
-		
-			info = provider.getUserInfo(project);
-			userText.setText(info.getUsername());
-		} catch (TeamException e) {
-			handle(e);
-		}
-		passwordText.setText("*********");
-		
-		try {
-			ICVSRemoteResource resource = provider.getRemoteResource(project);
-			ICVSRepositoryLocation location = resource.getRepository();
-			hostLabel.setText(location.getHost());
-			int port = location.getPort();
-			if (port == ICVSRepositoryLocation.USE_DEFAULT_PORT) {
-				portLabel.setText(Policy.bind("CVSPropertiesPage.defaultPort"));
-			} else {
-				portLabel.setText("" + port);
-			}
-			pathLabel.setText(location.getRootDirectory());
-			moduleLabel.setText(resource.getRepositoryRelativePath());
-		} catch (TeamException e) {
-			handle(e);
-		}
-	}
-	/*
-	 * @see PreferencesPage#performOk
-	 */
-	public boolean performOk() {
-		info.setUsername(userText.getText());
-		if (passwordChanged) {
-			info.setPassword(passwordText.getText());
-		}
-		final String type = methodType.getText();
-		try {
-			new ProgressMonitorDialog(getShell()).run(true, false, new IRunnableWithProgress() {
-				public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-					try {
-						provider.setConnectionInfo(project, type, info, monitor);
-					} catch (TeamException e) {
-						throw new InvocationTargetException(e);
-					}
-				}
-			});
-		} catch (InvocationTargetException e) {
-			Throwable t = e.getTargetException();
-			if (t instanceof TeamException) {
-				handle((TeamException)t);
-			} else if (t instanceof CoreException) {
-				handle(((CoreException)t).getStatus());
-			} else {
-				IStatus status = new Status(IStatus.ERROR, CVSUIPlugin.ID, 1, "Internal error occured", t);
-				handle(status);
-				CVSUIPlugin.log(status);
-			}
-		} catch (InterruptedException e) {
-		}
-					
-		return true;
-	}
-	/**
-	 * Shows the given errors to the user.
-	 */
-	protected void handle(TeamException e) {
-		handle(e.getStatus());
-	}
-	
-	protected void handle(IStatus status) {
-		if (!status.isOK()) {
-			IStatus toShow = status;
-			if (status.isMultiStatus()) {
-				IStatus[] children = status.getChildren();
-				if (children.length == 1) {
-					toShow = children[0];
-				}
-			}
-			ErrorDialog.openError(getShell(), status.getMessage(), null, toShow);
-		}
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSResourceNode.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSResourceNode.java
deleted file mode 100644
index 0e7358b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSResourceNode.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

- 

-import java.util.ArrayList;

-

-import org.eclipse.compare.ResourceNode;

-import org.eclipse.compare.structuremergeviewer.IStructureComparator;

-import org.eclipse.core.resources.IContainer;

-import org.eclipse.core.resources.IFolder;

-import org.eclipse.core.resources.IProject;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.team.core.TeamException;

-import org.eclipse.team.internal.ccvs.core.resources.ICVSFile;

-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;

-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;

-

-/**

- * This class is a wrapper for a CVSResource. We use it instead of the standard

- * ResourceNode because it can more accurately get its local children taking

- * into account ignored resources, CVS/ directories, etc.

- */

-public class CVSResourceNode extends ResourceNode {

-	ArrayList fChildren;

-	

-	public CVSResourceNode(IResource resource) {

-		super(resource);

-	}

-	

-	public Object[] getChildren() {

-		if (fChildren == null) {

-			fChildren= new ArrayList();

-			IResource resource = getResource();

-			if (resource instanceof IContainer) {

-				try {

-					ICVSFile[] files = new LocalFolder(resource.getLocation().toFile()).getFiles();

-					for (int i= 0; i < files.length; i++) {

-						IResource child = getFile((IContainer)resource, files[i].getName());

-						if (child.exists()) {

-							IStructureComparator childNode = createChild(child);

-							if (childNode != null) {

-								fChildren.add(childNode);

-							}

-						}

-					}

-					ICVSFolder[] folders = new LocalFolder(resource.getLocation().toFile()).getFolders();

-					for (int i= 0; i < folders.length; i++) {

-						IResource child = getFolder((IContainer)resource, folders[i].getName());

-						if (child.exists()) {

-							IStructureComparator childNode = createChild(child);

-							if (childNode != null) {

-								fChildren.add(childNode);

-							}

-						}

-					}

-				} catch (TeamException e) {

-					CVSUIPlugin.log(e.getStatus());

-				}

-			}

-		}

-		return fChildren.toArray();

-	}

-	

-	private IResource getFile(IContainer container, String name) {

-		if (container instanceof IProject) {

-			return ((IProject)container).getFile(name);

-		}

-		if (container instanceof IFolder) {

-			return ((IFolder)container).getFile(name);

-		}

-		return null;

-	}

-	

-	private IResource getFolder(IContainer container, String name) {

-		if (container instanceof IProject) {

-			return ((IProject)container).getFolder(name);

-		}

-		if (container instanceof IFolder) {

-			return ((IFolder)container).getFolder(name);

-		}

-		return null;

-	}

-	

-	protected IStructureComparator createChild(IResource child) {

-		return new CVSResourceNode(child);

-	}

-}

diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
deleted file mode 100644
index e8de3ce..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
+++ /dev/null
@@ -1,249 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Hashtable;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.listeners.ICommandOutputListener;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.ui.model.CVSAdapterFactory;
-import org.eclipse.team.ui.TeamUIPlugin;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * UI Plugin for CVS provider-specific workbench functionality.
- */
-public class CVSUIPlugin extends AbstractUIPlugin {
-	/**
-	 * The id of the CVS plug-in
-	 */
-	public static final String ID = "org.eclipse.team.cvs.ui";
-	
-	private Hashtable imageDescriptors = new Hashtable(20);
-	
-	private ChangeListener changeListener = new ChangeListener();
-
-	public final static String ICON_PATH;
-	static {
-		if (Display.getCurrent().getIconDepth() > 4) {
-			ICON_PATH = ICVSUIConstants.ICON_PATH_FULL;
-		} else {
-			ICON_PATH = ICVSUIConstants.ICON_PATH_BASIC;
-		}
-	}
-
-	/**
-	 * The singleton plug-in instance
-	 */
-	private static CVSUIPlugin plugin;
-	
-	/**
-	 * The repository manager
-	 */
-	private RepositoryManager repositoryManager;
-	
-	/**
-	 * CVSUIPlugin constructor
-	 * 
-	 * @param descriptor  the plugin descriptor
-	 */
-	public CVSUIPlugin(IPluginDescriptor descriptor) {
-		super(descriptor);
-		plugin = this;
-	}
-
-	/**
-	 * Creates an image and places it in the image registry.
-	 */
-	protected void createImageDescriptor(String id, URL baseURL) {
-		URL url = null;
-		try {
-			url = new URL(baseURL, ICON_PATH + id);
-		} catch (MalformedURLException e) {
-		}
-		ImageDescriptor desc = ImageDescriptor.createFromURL(url);
-		imageDescriptors.put(id, desc);
-	}
-	
-	/**
-	 * Returns the active workbench page.
-	 * 
-	 * @return the active workbench page
-	 */
-	public static IWorkbenchPage getActivePage() {
-		IWorkbenchWindow window = getPlugin().getWorkbench().getActiveWorkbenchWindow();
-		if (window == null) return null;
-		return window.getActivePage();
-	}
-	
-	/**
-	 * Returns the image descriptor for the given image ID.
-	 * Returns null if there is no such image.
-	 */
-	public ImageDescriptor getImageDescriptor(String id) {
-		return (ImageDescriptor)imageDescriptors.get(id);
-	}
-	
-	/**
-	 * Returns the singleton plug-in instance.
-	 * 
-	 * @return the plugin instance
-	 */
-	public static CVSUIPlugin getPlugin() {
-		return plugin;
-	}
-
-	/**
-	 * Returns the repository manager
-	 * 
-	 * @return the repository manager
-	 */
-	public RepositoryManager getRepositoryManager() {
-		return repositoryManager;
-	}
-	
-	/**
-	 * Initializes the table of images used in this plugin.
-	 */
-	private void initializeImages() {
-		URL baseURL = getDescriptor().getInstallURL();
-	
-		// objects
-		createImageDescriptor(ICVSUIConstants.IMG_REPOSITORY, baseURL); 
-		createImageDescriptor(ICVSUIConstants.IMG_REFRESH, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_NEWLOCATION, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_TAG, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_CLEAR, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_BRANCHES_CATEGORY, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_VERSIONS_CATEGORY, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_WIZBAN_BRANCH, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_WIZBAN_MERGE, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_WIZBAN_SHARE, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_MERGEABLE_CONFLICT, baseURL);
-		createImageDescriptor(ICVSUIConstants.IMG_QUESTIONABLE, baseURL);
-	}
-	/**
-	 * Convenience method for logging statuses to the plugin log
-	 * 
-	 * @param status  the status to log
-	 */
-	public static void log(IStatus status) {
-		getPlugin().getLog().log(status);
-	}
-	
-	/**
-	 * Initializes the preferences for this plugin if necessary.
-	 */
-	protected void initializePreferences() {
-		IPreferenceStore store = getPreferenceStore();
-		store.setDefault(ICVSUIConstants.PREF_SHOW_COMMENTS, true);
-		store.setDefault(ICVSUIConstants.PREF_SHOW_TAGS, true);
-		store.setDefault(ICVSUIConstants.PREF_PRUNE_EMPTY_DIRECTORIES, CVSProviderPlugin.DEFAULT_PRUNE);
-		store.setDefault(ICVSUIConstants.PREF_TIMEOUT, CVSProviderPlugin.DEFAULT_TIMEOUT);
-		store.setDefault(ICVSUIConstants.PREF_SHOW_MODULES, false);
-		store.setDefault(ICVSUIConstants.PREF_HISTORY_TRACKS_SELECTION, false);
-		
-		store.setDefault(ICVSUIConstants.PREF_FILETEXT_DECORATION, CVSDecoratorConfiguration.DEFAULT_FILETEXTFORMAT);
-		store.setDefault(ICVSUIConstants.PREF_FOLDERTEXT_DECORATION, CVSDecoratorConfiguration.DEFAULT_FOLDERTEXTFORMAT);
-		store.setDefault(ICVSUIConstants.PREF_PROJECTTEXT_DECORATION, CVSDecoratorConfiguration.DEFAULT_PROJECTTEXTFORMAT);
-		
-		store.setDefault(ICVSUIConstants.PREF_ADDED_FLAG, CVSDecoratorConfiguration.DEFAULT_ADDED_FLAG);
-		store.setDefault(ICVSUIConstants.PREF_DIRTY_FLAG, CVSDecoratorConfiguration.DEFAULT_DIRTY_FLAG);
-				
-		store.setDefault(ICVSUIConstants.PREF_SHOW_ADDED_DECORATION, true);
-		store.setDefault(ICVSUIConstants.PREF_SHOW_HASREMOTE_DECORATION, true);
-		store.setDefault(ICVSUIConstants.PREF_SHOW_DIRTY_DECORATION, false);
-		store.setDefault(ICVSUIConstants.PREF_ADDED_FLAG, CVSDecoratorConfiguration.DEFAULT_ADDED_FLAG);
-		store.setDefault(ICVSUIConstants.PREF_DIRTY_FLAG, CVSDecoratorConfiguration.DEFAULT_DIRTY_FLAG);
-		store.setDefault(ICVSUIConstants.PREF_CALCULATE_DIRTY, true);
-		
-		// Forward the values to the CVS plugin
-		CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(store.getBoolean(ICVSUIConstants.PREF_PRUNE_EMPTY_DIRECTORIES));
-		CVSProviderPlugin.getPlugin().setTimeout(store.getInt(ICVSUIConstants.PREF_TIMEOUT));
-		CVSProviderPlugin.getPlugin().setQuietness(CVSPreferencesPage.getQuietnessOptionFor(store.getInt(ICVSUIConstants.PREF_QUIETNESS)));
-	}
-
-	/**
-	 * @see Plugin#startup()
-	 */
-	public void startup() throws CoreException {
-		super.startup();
-		Policy.localize("org.eclipse.team.internal.ccvs.ui.messages");
-		
-		// XXX This should be refactored!!!
-		Command.setConsoleListener(new ICommandOutputListener() {
-			public IStatus messageLine(String line, ICVSFolder commandRoot, IProgressMonitor monitor) {
-				Console.appendAll(line + '\n');
-				return OK;
-			}
-			public IStatus errorLine(String line, ICVSFolder commandRoot, IProgressMonitor monitor) {
-				Console.appendAll(line + '\n');
-				return OK;
-			}
-		});
-
-		CVSAdapterFactory factory = new CVSAdapterFactory();
-		Platform.getAdapterManager().registerAdapters(factory, ICVSRemoteFile.class);
-		Platform.getAdapterManager().registerAdapters(factory, ICVSRemoteFolder.class);
-		Platform.getAdapterManager().registerAdapters(factory, ICVSRepositoryLocation.class);
-		
-		initializeImages();
-		initializePreferences();
-		repositoryManager = new RepositoryManager();
-		changeListener.register();
-		
-		// if the global ignores list is changed then update decorators.
-		TeamUIPlugin.getPlugin().addPropertyChangeListener(new IPropertyChangeListener() {
-			public void propertyChange(PropertyChangeEvent event) {
-				if(event.getProperty().equals(TeamUIPlugin.GLOBAL_IGNORES_CHANGED)) {
-					CVSDecorator.refresh();
-				}
-			}
-		});
-		
-		try {
-			repositoryManager.startup();
-		} catch (TeamException e) {
-			throw new CoreException(e.getStatus());
-		}
-	}
-	
-	/**
-	 * @see Plugin#shutdown()
-	 */
-	public void shutdown() throws CoreException {
-		CVSDecorator.shutdownAll();
-		changeListener.deregister();
-		super.shutdown();
-		try {
-			repositoryManager.shutdown();
-		} catch (TeamException e) {
-			throw new CoreException(e.getStatus());
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ChangeListener.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ChangeListener.java
deleted file mode 100644
index c2988a0..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ChangeListener.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ccvs.core.util.ResourceDeltaVisitor;
-
-public class ChangeListener extends ResourceDeltaVisitor {
-
-	static class ConfirmFolderDeleteDialog extends MessageDialog {
-		private Button doNotShowOption;
-		
-		ConfirmFolderDeleteDialog(Shell parentShell) {
-			super(
-				parentShell, 
-				getTitle(), 
-				null,	// accept the default window icon
-				getMessage(),
-				MessageDialog.INFORMATION, 
-				new String[] {IDialogConstants.OK_LABEL},
-				0); 	// yes is the default
-		}
-		
-		static String getTitle() {
-			return "Deleting CVS folders";
-		}
-		
-		static String getMessage() {
-			return "Folders cannot be deleted from a CVS server from the client. To delete the folder...";	
-		}
-		
-		protected Control createCustomArea(Composite parent) {
-			Composite composite = new Composite(parent, SWT.NONE);
-			composite.setLayout(new GridLayout());
-			doNotShowOption = new Button(composite, SWT.CHECK);
-			doNotShowOption.addSelectionListener(selectionListener);
-			
-			doNotShowOption.setText("Do not ask me about this again");
-
-			// set initial state
-			doNotShowOption.setSelection(false);
-			return composite;
-		}
-		
-		private SelectionListener selectionListener = new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				Button button = (Button) e.widget;
-				if (button.getSelection()) {					
-				}
-			}
-		};
-	}
-
-	/*
-	 * @see ResourceDeltaVisitor#handleAdded(IResource[])
-	 */
-	protected void handleAdded(IResource[] resources) {
-	}
-
-	/*
-	 * @see ResourceDeltaVisitor#handleRemoved(IResource[])
-	 */
-	protected void handleRemoved(IResource[] resources) {
-		List folderDeletions = new ArrayList();
-		for (int i = 0; i < resources.length; i++) {
-			if(resources[i].getType()==IResource.FOLDER) {
-				folderDeletions.add(resources[i]);
-			}
-		}
-		
-		if(!folderDeletions.isEmpty()) {
-			// prompt user
-		}
-	}
-
-	/*
-	 * @see ResourceDeltaVisitor#handleChanged(IResource[])
-	 */
-	protected void handleChanged(IResource[] resources) {
-	}
-
-	/*
-	 * @see ResourceDeltaVisitor#finished()
-	 */
-	protected void finished() {
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java
deleted file mode 100644
index 4494133..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.util.Vector;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.texteditor.ITextEditorActionConstants;
-
-/**
- * Console is a view that displays the communication with the CVS server
- */
-public class Console extends ViewPart {
-
-	public final static String CONSOLE_ID = "org.eclipse.team.ccvs.ui.console";
-	
-	private TextViewer viewer;
-	private TextViewerAction copyAction;
-	private TextViewerAction selectAllAction;
-	private Action clearOutputAction;
-	private IDocument document;
-	
-	// All instances of the console
-	static Vector instances = new Vector();
-
-	/**
-	 * Console Constructor
-	 */
-	public Console() {
-		instances.add(this);
-		document = new Document("");
-	}
-
-	/**
-	 * Returns all instances of the console view
-	 * 
-	 * @return all instances of the console
-	 */
-	public static Console[] getInstances() {
-		return (Console[])instances.toArray(new Console[instances.size()]);
-	}
-
-	/**
-	 * Create contributed actions
-	 */
-	protected void createActions() {
-		clearOutputAction = new Action(Policy.bind("Console.clearOutput"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_CLEAR)) {
-			public void run() {
-				clearOutput();
-			}
-		};
-		
-		MenuManager mgr = new MenuManager();
-		mgr.setRemoveAllWhenShown(true);
-		mgr.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager mgr) {
-				fillContextMenu(mgr);
-			}
-		});
-		Menu menu = mgr.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-
-		// Create the local tool bar
-		IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager();
-		tbm.add(clearOutputAction);
-		tbm.update(false);
-
-
-		// Create actions for the text editor
-		IActionBars actionBars = getViewSite().getActionBars();
-		
-		copyAction = new TextViewerAction(viewer, ITextOperationTarget.COPY);
-		copyAction.setText(Policy.bind("Console.copy"));
-		actionBars.setGlobalActionHandler(ITextEditorActionConstants.COPY, copyAction);
-		
-		selectAllAction = new TextViewerAction(viewer, ITextOperationTarget.SELECT_ALL);
-		selectAllAction.setText(Policy.bind("Console.selectAll"));
-		actionBars.setGlobalActionHandler(ITextEditorActionConstants.SELECT_ALL, selectAllAction);
-
-		actionBars.updateActionBars();
-	}
-
-	/**
-	 * Append the given string to the console
-	 * 
-	 * @param message  the string to append
-	 */
-	public void append(final String message) {
-		getViewSite().getShell().getDisplay().syncExec(new Runnable() {
-			public void run() {
-				try {
-					document.replace(document.getLength(), 0, message);
-					if (message.length() > 0 && viewer != null) {
-						viewer.revealRange(document.getLength() - 1, 1);
-					}
-				} catch (BadLocationException e) {
-					IStatus status = new Status(IStatus.ERROR, CVSUIPlugin.ID, 1, null, e);
-					ErrorDialog.openError(getViewSite().getShell(), Policy.bind("simpleInternal"), Policy.bind("internal"), status);
-					CVSUIPlugin.log(status);
-				}
-			}
-		});
-	}
-
-	/**
-	 * Append the given string to all consoles
-	 * 
-	 * @param message  the string to append
-	 */
-	public static void appendAll(String message) {
-		// Show the console
-		try {
-			IWorkbenchPage page = CVSUIPlugin.getActivePage();
-			if (page != null) {
-				page.showView(CONSOLE_ID);
-			}
-		} catch (PartInitException e) {
-			CVSUIPlugin.log(e.getStatus());
-		}
-		
-		if (message.length() == 0) return;
-		// XXX What was the purpose of this?
-//		boolean appendCr = message.charAt(message.length() - 1) == '\n';
-		Console[] consoles = Console.getInstances();
-		for (int i = 0; i < consoles.length; i++) {
-			consoles[i].append(message);
-//			if (appendCr) {
-//				consoles[i].append("\n");
-//			}
-		}
-	}
-	
-	/**
-	 * Clear the output of the console
-	 */
-	public void clearOutput() {
-		document.set("");
-	}
-
-	/**
-	 * Add the actions to the context menu
-	 * 
-	 * @param manager  the manager of the context menu
-	 */
-	protected void fillContextMenu(IMenuManager manager) {
-		manager.add(copyAction);
-		manager.add(selectAllAction);
-		manager.add(new Separator());
-		manager.add(clearOutputAction);
-	}
-
-	/*
-	 * @see WorkbenchPart#setFocus()
-	 */
-	public void setFocus() {
-		viewer.getTextWidget().setFocus();
-	}
-
-	/*
-	 * @see WorkbenchPart#createPartControl(Composite)
-	 */
-	public void createPartControl(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NULL);
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		composite.setLayout(layout);
-		composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
-	
-		viewer = new TextViewer(composite, SWT.V_SCROLL | SWT.H_SCROLL);
-		GridData data = new GridData(GridData.FILL_BOTH);
-		viewer.setEditable(false);
-		viewer.getControl().setLayoutData(data);
-		viewer.setDocument(document);
-		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				copyAction.update();
-			}
-		});
-		createActions();
-	}
-
-	/*
-	 * @see WorkbenchPart#dispose
-	 */
-	public void dispose() {
-		instances.remove(this);
-		super.dispose();
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConsoleOutputStream.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConsoleOutputStream.java
deleted file mode 100644
index 5cb5d1a..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConsoleOutputStream.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * ConsoleOutputStream is a buffered output stream that additionally
- * flushes the buffer when a carriage return is found.
- */
-public class ConsoleOutputStream extends OutputStream {
-
-	private static final int BUFFER_LENGTH = 256;
-	private static byte[] buffer = new byte[BUFFER_LENGTH];
-	private static int size = 0;
-	
-	/**
-	 * @see OutputStream#write(int)
-	 */
-	public void write(int b) throws IOException {
-		if ((((char)b) == '\n') || (size >= buffer.length))
-			writeBufferToConsole();
-		else
-			buffer[size++] = (byte)b;
-	}
-	
-	/**
-	 * Flush the buffer
-	 */
-	private void writeBufferToConsole() {
-		Console.appendAll(new String(buffer, 0, size));
-		size = 0;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryDropAdapter.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryDropAdapter.java
deleted file mode 100644
index 6d515cc..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryDropAdapter.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.ViewerDropAdapter;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.ui.part.ResourceTransfer;
-
-public class HistoryDropAdapter extends ViewerDropAdapter {
-	HistoryView view;
-	
-	public HistoryDropAdapter(StructuredViewer viewer, HistoryView view) {
-		super(viewer);
-		this.view = view;
-	}
-	/*
-	 * Override dragOver to slam the detail to DROP_LINK, as we do not
-	 * want to really execute a DROP_MOVE, although we want to respond
-	 * to it.
-	 */
-	public void dragOver(DropTargetEvent event) {
-		if ((event.operations & DND.DROP_LINK) == DND.DROP_LINK) {
-			event.detail = DND.DROP_LINK;
-		}
-		super.dragOver(event);
-	}
-	/*
-	 * Override drop to slam the detail to DROP_LINK, as we do not
-	 * want to really execute a DROP_MOVE, although we want to respond
-	 * to it.
-	 */
-	public void drop(DropTargetEvent event) {
-		super.drop(event);
-		event.detail = DND.DROP_LINK;
-	}
-	public boolean performDrop(Object data) {
-		if (data == null) return false;
-		IResource[] sources = (IResource[])data;
-		if (sources.length == 0) return false;
-		IResource resource = sources[0];
-		if (!(resource instanceof IFile)) return false;
-		view.showHistory(resource);
-		return true;
-	}
-	public boolean validateDrop(Object target, int operation, TransferData transferType) {
-		if (transferType != null && ResourceTransfer.getInstance().isSupportedType(transferType)) {
-			return true;
-		}
-		return false;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistorySorter.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistorySorter.java
deleted file mode 100644
index 274fd49..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistorySorter.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ILogEntry;
-
-/**
- * This sorter is used by the HistoryView
- */
-class HistorySorter extends ViewerSorter {
-	private boolean reversed = false;
-	private int columnNumber;
-	
-	private VersionCollator versionCollator = new VersionCollator();
-	
-	// column headings:	"Revision" "Tags" "Date" "Author" "Comment"
-	private int[][] SORT_ORDERS_BY_COLUMN = {
-		{0, 4, 1, 2, 3},	/* version */ 
-		{1, 0, 2, 3, 4},	/* tags */
-		{1, 4, 0, 2, 3},	/* date */
-		{2, 4, 1, 3, 0},	/* author */
-		{3, 4, 1, 2, 0}	/* comment */
-	};
-	
-	/**
-	 * The constructor.
-	 */
-	public HistorySorter(int columnNumber) {
-		this.columnNumber = columnNumber;
-	}
-	/**
-	 * Compares two log entries, sorting first by the main column of this sorter,
-	 * then by subsequent columns, depending on the column sort order.
-	 */
-	public int compare(Viewer viewer, Object o1, Object o2) {
-		ILogEntry e1 = (ILogEntry)o1;
-		ILogEntry e2 = (ILogEntry)o2;
-		int[] columnSortOrder = SORT_ORDERS_BY_COLUMN[columnNumber];
-		int result = 0;
-		for (int i = 0; i < columnSortOrder.length; ++i) {
-			result = compareColumnValue(columnSortOrder[i], e1, e2);
-			if (result != 0)
-				break;
-		}
-		if (reversed)
-			result = -result;
-		return result;
-	}
-	/**
-	 * Compares two markers, based only on the value of the specified column.
-	 */
-	int compareColumnValue(int columnNumber, ILogEntry e1, ILogEntry e2) {
-		switch (columnNumber) {
-			case 0: /* version */
-				return versionCollator.compare(e1.getRevision(), e2.getRevision());
-			case 1: /* tags */
-				CVSTag[] tags1 = e1.getTags();
-				CVSTag[] tags2 = e2.getTags();
-				if (tags2.length == 0) {
-					return -1;
-				}
-				if (tags1.length == 0) {
-					return 1;
-				}
-				return getCollator().compare(tags1[0].getName(), tags2[0].getName());
-			case 2: /* date  */
-				// To do: use dates instead of strings
-				String date1 = e1.getDate();
-				String date2 = e2.getDate();
-				//return date1.compareTo(date2);
-				return getCollator().compare(date1, date2);
-			case 3: /* author */
-				return getCollator().compare(e1.getAuthor(), e2.getAuthor());
-			case 4: /* comment */
-				return getCollator().compare(e1.getComment(), e2.getComment());
-			default:
-				return 0;
-		}
-	}
-	/**
-	 * Returns the number of the column by which this is sorting.
-	 */
-	public int getColumnNumber() {
-		return columnNumber;
-	}
-	/**
-	 * Returns true for descending, or false
-	 * for ascending sorting order.
-	 */
-	public boolean isReversed() {
-		return reversed;
-	}
-	/**
-	 * Sets the sorting order.
-	 */
-	public void setReversed(boolean newReversed) {
-		reversed = newReversed;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryView.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryView.java
deleted file mode 100644
index 89c32c2..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryView.java
+++ /dev/null
@@ -1,656 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ILogEntry;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.actions.OpenLogEntryAction;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-import org.eclipse.ui.part.ResourceTransfer;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.texteditor.ITextEditorActionConstants;
-
-/**
- * The history view allows browsing of an array of resource revisions
- */
-public class HistoryView extends ViewPart implements ISelectionListener {
-	private IFile file;
-	private CVSTeamProvider provider;
-	
-	private TableViewer tableViewer;
-	private TextViewer textViewer;
-	private TableViewer tagViewer;
-	
-	private OpenLogEntryAction openAction;
-	private IAction toggleTextAction;
-	private IAction toggleListAction;
-	private TextViewerAction copyAction;
-	private TextViewerAction selectAllAction;
-	private Action addAction;
-	
-	private SashForm sashForm;
-	private SashForm innerSashForm;
-	
-	//column constants
-	private static final int COL_REVISION = 0;
-	private static final int COL_TAGS = 1;
-	private static final int COL_DATE = 2;
-	private static final int COL_AUTHOR = 3;
-	private static final int COL_COMMENT = 4;
-
-	private Image branchImage;
-	private Image versionImage;
-	
-	class HistoryLabelProvider extends LabelProvider implements ITableLabelProvider {
-		public Image getColumnImage(Object element, int columnIndex) {
-			return null;
-		}
-		public String getColumnText(Object element, int columnIndex) {
-			ILogEntry entry = (ILogEntry)element;
-			switch (columnIndex) {
-				case COL_REVISION:
-					String revision = entry.getRevision();
-					if (file == null) return revision;
-					try {
-						ICVSRemoteFile currentEdition = (ICVSRemoteFile)provider.getRemoteResource(file);
-						if (currentEdition != null && currentEdition.getRevision().equals(revision)) {
-							return "*" + revision;
-						}
-					} catch (TeamException e) {
-						ErrorDialog.openError(getViewSite().getShell(), null, null, e.getStatus());
-					}
-					return revision;
-				case COL_TAGS:
-					CVSTag[] tags = entry.getTags();
-					StringBuffer result = new StringBuffer();
-					for (int i = 0; i < tags.length; i++) {
-						result.append(tags[i].getName());
-						if (i < tags.length - 1) {
-							result.append(", ");
-						}
-					}
-					return result.toString();
-				case COL_DATE:
-					return entry.getDate();
-				case COL_AUTHOR:
-					return entry.getAuthor();
-				case COL_COMMENT:
-					String comment = entry.getComment();
-					int index = comment.indexOf("\n");
-					switch (index) {
-						case -1:
-							return comment;
-						case 0:
-							return "[...]";
-						default:
-							return comment.substring(0, index - 1) + "[...]";
-					}
-			}
-			return "";
-		}
-	}
-	
-	public static final String VIEW_ID = "org.eclipse.team.ccvs.ui.HistoryView";
-	
-	/**
-	 * Adds the action contributions for this view.
-	 */
-	protected void contributeActions() {
-		// Refresh (toolbar)
-		final Action refreshAction = new Action(Policy.bind("HistoryView.refresh"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_REFRESH)) {
-			public void run() {
-				BusyIndicator.showWhile(tableViewer.getTable().getDisplay(), new Runnable() {
-					public void run() {
-						tableViewer.refresh();
-					}
-				});
-			}
-		};
-		refreshAction.setToolTipText(Policy.bind("HistoryView.refresh"));
-		
-		// Double click open action
-		openAction = new OpenLogEntryAction();
-		tableViewer.getTable().addListener(SWT.DefaultSelection, new Listener() {
-			public void handleEvent(Event e) {
-				openAction.selectionChanged(null, tableViewer.getSelection());
-				openAction.run(null);
-			}
-		});
-
-		addAction = new Action(Policy.bind("HistoryView.addToWorkspace")) {
-			public void run() {
-				try {
-					new ProgressMonitorDialog(getViewSite().getShell()).run(true, true, new WorkspaceModifyOperation() {
-						protected void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-							if (file == null) return;
-							ISelection selection = tableViewer.getSelection();
-							if (!(selection instanceof IStructuredSelection)) return;
-							IStructuredSelection ss = (IStructuredSelection)selection;
-							Object o = ss.getFirstElement();
-							ILogEntry entry = (ILogEntry)o;
-							ICVSRemoteFile remoteFile = entry.getRemoteFile();
-							// Do the load. This just consists of setting the local contents. We don't
-							// actually want to change the base.
-							monitor.beginTask(null, 100);
-							try {
-								InputStream in = remoteFile.getContents(new SubProgressMonitor(monitor, 50));
-								file.setContents(in, false, true, new SubProgressMonitor(monitor, 50));				
-							} catch (TeamException e) {
-								throw new InvocationTargetException(e);
-							} catch (CoreException e) {
-								throw new InvocationTargetException(e);
-							} finally {
-								monitor.done();
-							}
-						}
-					});
-				} catch (InvocationTargetException e) {
-					Throwable t = e.getTargetException();
-					if (t instanceof TeamException) {
-						ErrorDialog.openError(getViewSite().getShell(), null, null, ((TeamException)t).getStatus());
-					} else if (t instanceof CoreException) {
-						IStatus status = ((CoreException)t).getStatus();
-						ErrorDialog.openError(getViewSite().getShell(), null, null, status);
-						CVSUIPlugin.log(status);
-					} else {
-						// To do
-					}
-				} catch (InterruptedException e) {
-					// Do nothing
-				}
-			}
-		};
-
-		// Toggle text visible action
-		final IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
-		toggleTextAction = new Action(Policy.bind("HistoryView.showComment")) {
-			public void run() {
-				setViewerVisibility();
-				store.setValue(ICVSUIConstants.PREF_SHOW_COMMENTS, toggleTextAction.isChecked());
-			}
-		};
-		toggleTextAction.setChecked(store.getBoolean(ICVSUIConstants.PREF_SHOW_COMMENTS));
-		// Toggle list visible action
-		toggleListAction = new Action(Policy.bind("HistoryView.showTags")) {
-			public void run() {
-				setViewerVisibility();
-				store.setValue(ICVSUIConstants.PREF_SHOW_TAGS, toggleListAction.isChecked());
-			}
-		};
-		toggleListAction.setChecked(store.getBoolean(ICVSUIConstants.PREF_SHOW_TAGS));
-		
-		// Contribute actions to popup menu
-		MenuManager menuMgr = new MenuManager();
-		Menu menu = menuMgr.createContextMenu(tableViewer.getTable());
-		menuMgr.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager menuMgr) {
-				fillTableMenu(menuMgr);
-			}
-		});
-		menuMgr.setRemoveAllWhenShown(true);
-		tableViewer.getTable().setMenu(menu);
-		getSite().registerContextMenu(menuMgr, tableViewer);
-
-		// Contribute toggle text visible to the toolbar drop-down
-		IActionBars actionBars = getViewSite().getActionBars();
-		IMenuManager actionBarsMenu = actionBars.getMenuManager();
-		actionBarsMenu.add(toggleTextAction);
-		actionBarsMenu.add(toggleListAction);
-
-		// Create the local tool bar
-		IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager();
-		tbm.add(refreshAction);
-		tbm.update(false);
-	
-		// Create actions for the text editor
-		copyAction = new TextViewerAction(textViewer, ITextOperationTarget.COPY);
-		copyAction.setText(Policy.bind("HistoryView.copy"));
-		actionBars.setGlobalActionHandler(ITextEditorActionConstants.COPY, copyAction);
-		
-		selectAllAction = new TextViewerAction(textViewer, ITextOperationTarget.SELECT_ALL);
-		selectAllAction.setText(Policy.bind("HistoryView.selectAll"));
-		actionBars.setGlobalActionHandler(ITextEditorActionConstants.SELECT_ALL, selectAllAction);
-
-		actionBars.updateActionBars();
-
-		menuMgr = new MenuManager();
-		menuMgr.setRemoveAllWhenShown(true);
-		menuMgr.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager menuMgr) {
-				fillTextMenu(menuMgr);
-			}
-		});
-		StyledText text = textViewer.getTextWidget();
-		menu = menuMgr.createContextMenu(text);
-		text.setMenu(menu);
-	}
-	private void setViewerVisibility() {
-		boolean showText = toggleTextAction.isChecked();
-		boolean showList = toggleListAction.isChecked();
-		if (showText && showList) {
-			sashForm.setMaximizedControl(null);
-			innerSashForm.setMaximizedControl(null);
-		} else if (showText) {
-			sashForm.setMaximizedControl(null);
-			innerSashForm.setMaximizedControl(textViewer.getTextWidget());
-		} else if (showList) {
-			sashForm.setMaximizedControl(null);
-			innerSashForm.setMaximizedControl(tagViewer.getTable());
-		} else {
-			sashForm.setMaximizedControl(tableViewer.getControl());
-		}
-	}
-	/**
-	 * Creates the columns for the history table.
-	 */
-	private void createColumns(Table table, TableLayout layout) {
-		SelectionListener headerListener = getColumnListener();
-		// revision
-		TableColumn col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.revision"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(20, true));
-	
-		// tags
-		col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.tags"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(20, true));
-	
-		// creation date
-		col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.date"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(20, true));
-	
-		// author
-		col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.author"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(20, true));
-	
-		//comment
-		col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-		col.setText(Policy.bind("HistoryView.comment"));
-		col.addSelectionListener(headerListener);
-		layout.addColumnData(new ColumnWeightData(50, true));
-	}
-	/*
-	 * Method declared on IWorkbenchPart
-	 */
-	public void createPartControl(Composite parent) {
-		initializeImages();
-		sashForm = new SashForm(parent, SWT.VERTICAL);
-		sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));
-		tableViewer = createTable(sashForm);
-		innerSashForm = new SashForm(sashForm, SWT.HORIZONTAL);
-		tagViewer = createTagTable(innerSashForm);
-		textViewer = createText(innerSashForm);
-		sashForm.setWeights(new int[] { 70, 30 });
-		innerSashForm.setWeights(new int[] { 50, 50 });
-		getSite().getPage().getWorkbenchWindow().getSelectionService().addSelectionListener(this);
-		contributeActions();
-		setViewerVisibility();
-		// set F1 help
-		//WorkbenchHelp.setHelp(viewer.getControl(), new ViewContextComputer (this, IVCMHelpContextIds.RESOURCE_HISTORY_VIEW));
-		initDragAndDrop();
-	}
-	private void initializeImages() {
-		CVSUIPlugin plugin = CVSUIPlugin.getPlugin();
-		versionImage = plugin.getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION).createImage();
-		branchImage = plugin.getImageDescriptor(ICVSUIConstants.IMG_TAG).createImage();
-	}
-	/**
-	 * Creates the group that displays lists of the available repositories
-	 * and team streams.
-	 *
-	 * @param the parent composite to contain the group
-	 * @return the group control
-	 */
-	protected TableViewer createTable(Composite parent) {
-		Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
-		GridData data = new GridData(GridData.FILL_BOTH);
-		table.setLayoutData(data);
-	
-		TableLayout layout = new TableLayout();
-		table.setLayout(layout);
-		
-		createColumns(table, layout);
-	
-		TableViewer viewer = new TableViewer(table);
-		viewer.setContentProvider(new IStructuredContentProvider() {
-			public Object[] getElements(Object inputElement) {
-				if (!(inputElement instanceof ICVSRemoteFile)) return null;
-				ICVSRemoteFile remoteFile = (ICVSRemoteFile)inputElement;
-				try {
-					return remoteFile.getLogEntries(new NullProgressMonitor());
-				} catch (TeamException e) {
-					ErrorDialog.openError(getViewSite().getShell(), null, null, e.getStatus());
-					// Set a default title
-					setTitle(Policy.bind("HistoryView.title"));
-				}
-				return null;
-				
-			}
-			public void dispose() {
-			}
-			/**
-			 * The input has changed. Change the title of the view if necessary.
-			 */
-			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-				if (oldInput == null && newInput == null) return;
-				if (!(newInput instanceof ICVSRemoteFile)) {
-					setTitle(Policy.bind("HistoryView.title"));
-					return;
-				}
-				ICVSRemoteFile newFile = (ICVSRemoteFile)newInput;
-				setTitle(Policy.bind("HistoryView.titleWithArgument", newFile.getName()));
-			}
-		});
-		viewer.setLabelProvider(new HistoryLabelProvider());
-		
-		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				ISelection selection = event.getSelection();
-				if (selection == null || !(selection instanceof IStructuredSelection)) {
-					textViewer.setDocument(new Document(""));
-					tagViewer.setInput(null);
-					return;
-				}
-				IStructuredSelection ss = (IStructuredSelection)selection;
-				if (ss.size() != 1) {
-					textViewer.setDocument(new Document(""));
-					tagViewer.setInput(null);
-					return;
-				}
-				ILogEntry entry = (ILogEntry)ss.getFirstElement();
-				textViewer.setDocument(new Document(entry.getComment()));
-				tagViewer.setInput(entry.getTags());
-			}
-		});
-		
-		// By default, reverse sort by revision.
-		HistorySorter sorter = new HistorySorter(COL_REVISION);
-		sorter.setReversed(true);
-		viewer.setSorter(sorter);
-		
-		return viewer;
-	}
-	private TableViewer createTagTable(Composite parent) {
-		Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
-		TableViewer result = new TableViewer(table);
-		TableLayout layout = new TableLayout();
-		layout.addColumnData(new ColumnWeightData(100));
-		table.setLayout(layout);
-		result.setContentProvider(new SimpleContentProvider() {
-			public Object[] getElements(Object inputElement) {
-				if (inputElement == null) return new Object[0];
-				CVSTag[] tags = (CVSTag[])inputElement;
-				return tags;
-			}
-		});
-		result.setLabelProvider(new LabelProvider() {
-			public Image getImage(Object element) {
-				if (element == null) return null;
-				CVSTag tag = (CVSTag)element;
-				switch (tag.getType()) {
-					case CVSTag.BRANCH:
-					case CVSTag.HEAD:
-						return branchImage;
-					case CVSTag.VERSION:
-						return versionImage;
-				}
-				return null;
-			}
-			public String getText(Object element) {
-				return ((CVSTag)element).getName();
-			}
-		});
-		result.setSorter(new ViewerSorter() {
-			public int compare(Viewer viewer, Object e1, Object e2) {
-				if (!(e1 instanceof CVSTag) || !(e2 instanceof CVSTag)) return super.compare(viewer, e1, e2);
-				CVSTag tag1 = (CVSTag)e1;
-				CVSTag tag2 = (CVSTag)e2;
-				int type1 = tag1.getType();
-				int type2 = tag2.getType();
-				if (type1 != type2) {
-					return type2 - type1;
-				}
-				return super.compare(viewer, tag1, tag2);
-			}
-		});
-		return result;
-	}
-	protected TextViewer createText(Composite parent) {
-		TextViewer result = new TextViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.READ_ONLY);
-		result.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				copyAction.update();
-			}
-		});
-		return result;
-	}
-	public void dispose() {
-		getSite().getPage().getWorkbenchWindow().getSelectionService().removeSelectionListener(this);
-		branchImage.dispose();
-		versionImage.dispose();
-	}	
-	/**
-	 * Adds the listener that sets the sorter.
-	 */
-	private SelectionListener getColumnListener() {
-		/**
-	 	 * This class handles selections of the column headers.
-		 * Selection of the column header will cause resorting
-		 * of the shown tasks using that column's sorter.
-		 * Repeated selection of the header will toggle
-		 * sorting order (ascending versus descending).
-		 */
-		return new SelectionAdapter() {
-			/**
-			 * Handles the case of user selecting the
-			 * header area.
-			 * <p>If the column has not been selected previously,
-			 * it will set the sorter of that column to be
-			 * the current tasklist sorter. Repeated
-			 * presses on the same column header will
-			 * toggle sorting order (ascending/descending).
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				// column selected - need to sort
-				int column = tableViewer.getTable().indexOf((TableColumn) e.widget);
-				HistorySorter oldSorter = (HistorySorter)tableViewer.getSorter();
-				if (oldSorter != null && column == oldSorter.getColumnNumber()) {
-					oldSorter.setReversed(!oldSorter.isReversed());
-					tableViewer.refresh();
-				} else {
-					tableViewer.setSorter(new HistorySorter(column));
-				}
-			}
-		};
-	}
-	/**
-	 * Returns the table viewer contained in this view.
-	 */
-	protected TableViewer getViewer() {
-		return tableViewer;
-	}
-	/**
-	 * Adds drag and drop support to the history view.
-	 */
-	void initDragAndDrop() {
-		int ops = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
-		Transfer[] transfers = new Transfer[] {ResourceTransfer.getInstance()};
-		tableViewer.addDropSupport(ops, transfers, new HistoryDropAdapter(tableViewer, this));
-	}
-	private void fillTableMenu(IMenuManager manager) {
-		if (tableViewer.getInput() == null) return;
-		// file actions go first (view file)
-		manager.add(new Separator(IWorkbenchActionConstants.GROUP_FILE));
-		if (file != null) {
-			// Add the "Add to Workspace" action if 1 revision is selected.
-			ISelection sel = tableViewer.getSelection();
-			if (!sel.isEmpty()) {
-				if (sel instanceof IStructuredSelection) {
-					if (((IStructuredSelection)sel).size() == 1) {
-						manager.add(addAction);
-					}
-				}
-			}
-		}
-		manager.add(new Separator("additions"));
-		manager.add(new Separator("additions-end"));
-	}
-	private void fillTextMenu(IMenuManager manager) {
-		manager.add(copyAction);
-		manager.add(selectAllAction);
-	}
-	/**
-	 * Makes the history view visible in the active perspective. If there
-	 * isn't a history view registered <code>null</code> is returned.
-	 * Otherwise the opened view part is returned.
-	 */
-	public static HistoryView openInActivePerspective() {
-		try {
-			return (HistoryView)CVSUIPlugin.getActivePage().showView(VIEW_ID);
-		} catch (PartInitException pe) {
-			return null;
-		}
-	}
-	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-		if (CVSUIPlugin.getPlugin().getPreferenceStore().getBoolean(ICVSUIConstants.PREF_HISTORY_TRACKS_SELECTION)) {
-			if (selection == null) return;
-			if (!(selection instanceof IStructuredSelection)) return;
-			IStructuredSelection ss = (IStructuredSelection)selection;
-			if (ss.size() != 1) {
-				showHistory((IResource)null);
-				return;
-			}
-			Object first = ss.getFirstElement();
-			if (first instanceof IResource) {
-				showHistory((IResource)first);
-			} else if (first instanceof ICVSRemoteFile) {
-				showHistory((ICVSRemoteFile)first);
-			}
-		}
-	}
-	/** (Non-javadoc)
-	 * Method declared on IWorkbenchPart
-	 */
-	public void setFocus() {
-		if (tableViewer != null) {
-			Table control = tableViewer.getTable();
-			if (control != null && !control.isDisposed()) {
-				control.setFocus();
-			}
-		}
-	}
-	
-	/**
-	 * Shows the history for the given IResource in the view.
-	 * 
-	 * Only files are supported for now.
-	 */
-	public void showHistory(IResource resource) {
-		if (resource instanceof IFile) {
-			IFile file = (IFile)resource;
-			this.file = file;
-			ITeamProvider teamProvider = TeamPlugin.getManager().getProvider(file.getProject());
-			if (teamProvider != null && teamProvider instanceof CVSTeamProvider) {
-				this.provider = (CVSTeamProvider)teamProvider;
-				try {
-					tableViewer.setInput(provider.getRemoteResource(file));
-				} catch (TeamException e) {
-					ErrorDialog.openError(getViewSite().getShell(), null, null, e.getStatus());
-				}				
-			}
-			return;
-		}
-		this.file = null;
-		tableViewer.setInput(null);
-	}
-	
-	/**
-	 * Shows the history for the given ICVSRemoteFile in the view.
-	 */
-	public void showHistory(ICVSRemoteFile file) {
-		if (file == null) {
-			tableViewer.setInput(null);
-			return;
-		}
-		this.file = null;
-		tableViewer.setInput(file);
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java
deleted file mode 100644
index f28ef47..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-public interface ICVSUIConstants {
-	// image paths
-	public final String ICON_PATH_FULL = "icons/full/";
-	public final String ICON_PATH_BASIC = "icons/basic/";
-	
-	// images
-	
-	// overlays
-	public final String IMG_MERGEABLE_CONFLICT = "ovr16/confauto_ov.gif";
-	public final String IMG_QUESTIONABLE = "ovr16/question_ov.gif";
-	
-	// objects
-	public final String IMG_REPOSITORY = "obj16/repository_rep.gif";
-	public final String IMG_TAG = "obj16/tag.gif";
-	public final String IMG_BRANCHES_CATEGORY = "obj16/branches_rep.gif";
-	public final String IMG_VERSIONS_CATEGORY = "obj16/versions_rep.gif";
-	public final String IMG_PROJECT_VERSION = "obj16/prjversions_rep.gif";
-	
-	// toolbar
-	public final String IMG_REFRESH = "clcl16/refresh.gif";
-	public final String IMG_CLEAR = "clcl16/clear_co.gif";
-	
-	// wizards
-	public final String IMG_NEWLOCATION = "wizards/newlocation_wiz.gif";
-	
-	// preferences
-	public final String PREF_SHOW_COMMENTS = "pref_show_comments";
-	public final String PREF_SHOW_TAGS = "pref_show_tags";
-	public final String PREF_PRUNE_EMPTY_DIRECTORIES = "pref_prune_empty_directories";	
-	public final String PREF_TIMEOUT = "pref_timeout";	
-	public final String PREF_QUIETNESS = "pref_quietness";
-	public final String PREF_SHOW_MODULES = "pref_show_modules";
-	public final String PREF_HISTORY_TRACKS_SELECTION = "pref_history_tracks_selection";
-		
-	// decorator preferences
-	public final String PREF_FILETEXT_DECORATION = "pref_filetext_decoration";
-	public final String PREF_FOLDERTEXT_DECORATION = "pref_foldertext_decoration";
-	public final String PREF_PROJECTTEXT_DECORATION = "pref_projecttext_decoration";
-	
-	public final String PREF_SHOW_DIRTY_DECORATION = "pref_show_overlaydirty";
-	public final String PREF_SHOW_ADDED_DECORATION = "pref_show_added";
-	public final String PREF_SHOW_HASREMOTE_DECORATION = "pref_show_hasremote";
-	
-	public final String PREF_DIRTY_FLAG = "pref_dirty_flag";
-	public final String PREF_ADDED_FLAG = "pref_added_flag";
-	
-	public final String PREF_CALCULATE_DIRTY = "pref_calculate_dirty";	
-
-	// Wizard banners
-	public final String IMG_WIZBAN_SHARE = "wizban/newconnect_wizban.gif";	
-	public final String IMG_WIZBAN_BRANCH = "wizban/newstream_wizban.gif";	
-	public final String IMG_WIZBAN_MERGE = "wizban/mergestream_wizban.gif";	
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IDecorationNotifier.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IDecorationNotifier.java
deleted file mode 100644
index 541086b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IDecorationNotifier.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.core.resources.IResource;
-
-public interface IDecorationNotifier {
-	
-	/**
-	 * Answers the next resource that needs decorating.
-	 */
-	public IResource next();
-	
-	/**
-	 * Called to associate a decoration to a resource.
-	 */
-	public void decorated(IResource resource, CVSDecoration decoration);
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IRepositoryListener.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IRepositoryListener.java
deleted file mode 100644
index 12448c9..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IRepositoryListener.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-
-public interface IRepositoryListener {
-	public void repositoryAdded(ICVSRepositoryLocation root);
-	public void repositoryRemoved(ICVSRepositoryLocation root);
-	public void branchTagsAdded(BranchTag[] tags, ICVSRepositoryLocation root);
-	public void branchTagsRemoved(BranchTag[] tags, ICVSRepositoryLocation root);
-	public void versionTagsAdded(CVSTag[] tags, ICVSRepositoryLocation root);
-	public void versionTagsRemoved(CVSTag[] tags, ICVSRepositoryLocation root);
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/OverlayIcon.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/OverlayIcon.java
deleted file mode 100644
index ebb9dbc..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/OverlayIcon.java
+++ /dev/null
@@ -1,145 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.jface.resource.CompositeImageDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.team.internal.ui.*;
-
-/**
- * An OverlayIcon consists of a main icon and several adornments.
- */
-public class OverlayIcon extends CompositeImageDescriptor {
-	// Constants for default size
-	static final int DEFAULT_WIDTH = 22;
-	static final int DEFAULT_HEIGHT = 16;
-	
-	// The size of this icon
-	private Point size = null;
-		
-	// The base image
-	private ImageData base;
-	// All overlay images
-	private ImageDescriptor overlays[][];
-
-	/**
-	 * OverlayIcon constructor
-	 * 
-	 * @param base  the base image
-	 * @param overlays  the overlay images
-	 * @param size  the size of the icon
-	 */
-	public OverlayIcon(ImageData base, ImageDescriptor[][] overlays, Point size) {
-		this.base = base;
-		this.overlays = overlays;
-		this.size = size;
-	}
-	/**
-	 * Draws the overlays in the bottom left
-	 * 
-	 * @param overlays  the overlay images
-	 */
-	protected void drawBottomLeft(ImageDescriptor[] overlays) {
-		if (overlays == null) return;
-		int length = overlays.length;
-		int x = 0;
-		for (int i= 0; i < 3; i++) {
-			if (i < length && overlays[i] != null) {
-				ImageData id = overlays[i].getImageData();
-				drawImage(id, x, getSize().y - id.height);
-				//x += id.width;
-			}
-		}
-	}
-	/**
-	 * Draws the overlays in the bottom right
-	 * 
-	 * @param overlays  the overlay images
-	 */
-	protected void drawBottomRight(ImageDescriptor[] overlays) {
-		if (overlays == null) return;
-		int length = overlays.length;
-		int x = getSize().x;
-		for (int i= 2; i >= 0; i--) {
-			if (i < length && overlays[i] != null) {
-				ImageData id = overlays[i].getImageData();
-				//x -= id.width;
-				drawImage(id, x, getSize().y - id.height);
-			}
-		}
-	}
-	/*
-	 * @see CompositeImage#fill
-	 */
-	protected void drawCompositeImage(int width, int height) {
-		ImageData bg = base;
-		if (bg == null) {
-			bg = DEFAULT_IMAGE_DATA;
-		}
-		drawImage(bg, 0, 0);
-		
-		if (overlays != null) {
-			if (overlays.length > 0) {
-				drawTopRight(overlays[0]);
-			}
-				
-			if (overlays.length > 1) {
-				drawBottomRight(overlays[1]);
-			}
-				
-			if (overlays.length > 2) {
-				drawBottomLeft(overlays[2]);
-			}
-				
-			if (overlays.length > 3) {
-				drawTopLeft(overlays[3]);
-			}
-		}	
-	}
-	/**
-	 * Draws the overlays in the top left
-	 * 
-	 * @param overlays  the overlay images
-	 */
-	protected void drawTopLeft(ImageDescriptor[] overlays) {
-		if (overlays == null) return;
-		int length = overlays.length;
-		int x = 0;
-		for (int i= 0; i < 3; i++) {
-			if (i < length && overlays[i] != null) {
-				ImageData id = overlays[i].getImageData();
-				drawImage(id, x, 0);
-				//x += id.width;
-			}
-		}
-	}
-	/**
-	 * Draws the overlays in the top right
-	 * 
-	 * @param overlays  the overlay images
-	 */
-	protected void drawTopRight(ImageDescriptor[] overlays) {
-		if (overlays == null) return;
-		int length = overlays.length;
-		//int x = getSize().x;
-		int x = 0;
-		for (int i = 8; i >= 0; i--) {
-			if (i < length && overlays[i] != null) {
-				ImageData id = overlays[i].getImageData();
-				//x -= id.width;
-				drawImage(id, x, 0);
-			}
-		}
-	}
-	/*
-	 * @see CompositeImage#getSize
-	 */
-	protected Point getSize() {
-		return size;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Policy.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Policy.java
deleted file mode 100644
index 206c393..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Policy.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
-
-public class Policy {
-	protected static ResourceBundle bundle = null;
-
-	/**
-	 * Creates a NLS catalog for the given locale.
-	 */
-	public static void localize(String bundleName) {
-		bundle = ResourceBundle.getBundle(bundleName);
-	}
-	
-	/**
-	 * Lookup the message with the given ID in this catalog and bind its
-	 * substitution locations with the given string.
-	 */
-	public static String bind(String id, String binding) {
-		return bind(id, new String[] { binding });
-	}
-	
-	/**
-	 * Lookup the message with the given ID in this catalog and bind its
-	 * substitution locations with the given strings.
-	 */
-	public static String bind(String id, String binding1, String binding2) {
-		return bind(id, new String[] { binding1, binding2 });
-	}
-	
-	/**
-	 * Gets a string from the resource bundle. We don't want to crash because of a missing String.
-	 * Returns the key if not found.
-	 */
-	public static String bind(String key) {
-		try {
-			return bundle.getString(key);
-		} catch (MissingResourceException e) {
-			return key;
-		} catch (NullPointerException e) {
-			return "!" + key + "!";
-		}
-	}
-	
-	/**
-	 * Gets a string from the resource bundle and binds it with the given arguments. If the key is 
-	 * not found, return the key.
-	 */
-	public static String bind(String key, Object[] args) {
-		try {
-			return MessageFormat.format(bind(key), args);
-		} catch (MissingResourceException e) {
-			return key;
-		} catch (NullPointerException e) {
-			return "!" + key + "!";
-		}
-	}
-	
-	/**
-	 * Progress monitor helpers
-	 */
-	public static void checkCanceled(IProgressMonitor monitor) {
-		if (monitor.isCanceled())
-			throw new OperationCanceledException();
-	}
-	public static IProgressMonitor monitorFor(IProgressMonitor monitor) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		return monitor;
-	}	
-	public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		if (monitor instanceof NullProgressMonitor)
-			return monitor;
-		return new SubProgressMonitor(monitor, ticks);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java
deleted file mode 100644
index 4ff60aa..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Prompts the user for a multi-line comment for releasing to CVS.
- */
-public class ReleaseCommentDialog extends Dialog {
-	private static final int WIDTH_HINT = 350;
-	private static final int HEIGHT_HINT = 50;
-	
-	private String comment = "";
-	
-	private Text text;
-	
-	/**
-	 * ReleaseCommentDialog constructor.
-	 * 
-	 * @param parentShell  the parent of this dialog
-	 */
-	public ReleaseCommentDialog(Shell parentShell) {
-		super(parentShell);
-	}
-	/*
-	 * @see Dialog#createDialogArea(Composite)
-	 */
-	protected Control createDialogArea(Composite parent) {
-		getShell().setText(Policy.bind("ReleaseCommentDialog.title"));
-		Composite composite = new Composite(parent, SWT.NULL);
-		composite.setLayout(new GridLayout());
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		
-		Label label = new Label(composite, SWT.NULL);
-		label.setLayoutData(new GridData());
-		label.setText(Policy.bind("ReleaseCommentDialog.enterComment"));
-		
-		text = new Text(composite, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
-		GridData data = new GridData(GridData.FILL_BOTH);
-		data.widthHint = WIDTH_HINT;
-		data.heightHint = HEIGHT_HINT;
-		text.setLayoutData(data);
-		text.setText(comment);
-		text.selectAll();
-		text.addListener(SWT.KeyDown, new Listener() {
-			public void handleEvent(Event e) {
-				if (((e.stateMask & SWT.CTRL) != 0) && (e.character == '\n')) {
-					okPressed();
-				}
-			}
-		});
-		// Hack: need to add the verify to make the key listener work. Don't know why.
-		text.addListener(SWT.Verify, new Listener() {
-			public void handleEvent(Event e) {
-			}
-		});
-		return composite;
-	}
-	/**
-	 * Return the entered comment
-	 * 
-	 * @return the comment
-	 */
-	public String getComment() {
-		return comment;
-	}
-	/**
-	 * Set the initial comment
-	 * 
-	 * @param comment  the initial comment
-	 */
-	public void setComment(String comment) {
-		this.comment = comment;
-	}
-	/*
-	 * @see Dialog#okPressed
-	 */
-	protected void okPressed() {
-		comment = text.getText();
-		super.okPressed();
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileEditorInput.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileEditorInput.java
deleted file mode 100644
index 40ea826..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileEditorInput.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.io.InputStream;
-
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IStorageEditorInput;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * An editor input for a file in a repository.
- */
-public class RemoteFileEditorInput implements IWorkbenchAdapter, IStorageEditorInput {
-	private ICVSRemoteFile file;
-	private IStorage storage;
-
-	/**
-	 * Creates FileEditionEditorInput on the given file.
-	 */
-	public RemoteFileEditorInput(ICVSRemoteFile file) {
-		this.file = file;
-	}
-	/**
-	 * Returns whether the editor input exists.  
-	 * <p>
-	 * This method is primarily used to determine if an editor input should 
-	 * appear in the "File Most Recently Used" menu.  An editor input will appear 
-	 * in the list until the return value of <code>exists</code> becomes 
-	 * <code>false</code> or it drops off the bottom of the list.
-	 *
-	 * @return <code>true</code> if the editor input exists; <code>false</code>
-	 *		otherwise
-	 */
-	public boolean exists() {
-		return true;
-	}
-	public boolean equals(Object o) {
-		if (!(o instanceof RemoteFileEditorInput)) return false;
-		RemoteFileEditorInput input = (RemoteFileEditorInput)o;
-		return file.equals(input.file);
-	}
-	/**
-	 * Returns an object which is an instance of the given class
-	 * associated with this object. Returns <code>null</code> if
-	 * no such object can be found.
-	 *
-	 * @param adapter the adapter class to look up
-	 * @return a object castable to the given class, 
-	 *    or <code>null</code> if this object does not
-	 *    have an adapter for the given class
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapter == IWorkbenchAdapter.class) {
-			return this;
-		}
-		return null;
-	}
-	/**
-	 * Returns the children of this object.  When this object
-	 * is displayed in a tree, the returned objects will be this
-	 * element's children.  Returns an empty array if this
-	 * object has no children.
-	 *
-	 * @param object The object to get the children for.
-	 */
-	public Object[] getChildren(Object o) {
-		return new Object[0];
-	}
-	/**
-	 * Returns an open input stream on the contents of this file.
-	 * The client is responsible for closing the stream when finished.
-	 *
-	 * @return an input stream containing the contents of the file
-	 * @exception CoreException if this method fails. 
-	 */
-	public InputStream getContents() throws CoreException {
-		try {
-			return file.getContents(new NullProgressMonitor());
-		} catch (TeamException e) {
-			throw new CoreException(e.getStatus());
-		}
-	}
-	/**
-	 * Returns the content type of the input.  For instance, if the input
-	 * wraps an <code>IFile</code> the content type would be derived from 
-	 * the extension or mime type.  If the input wraps another object it
-	 * may just be the object type.  The content type is used for
-	 * editor mapping.
-	 */
-	public String getContentType() {
-		String name = file.getName();
-		return name.substring(name.lastIndexOf('.')+1);
-	}
-	/**
-	 * Returns the fully qualified path name of the input.
-	 */
-	public String getFullPath() {
-		//use path to make sure slashes are correct
-		// to do. For now, just return the name
-		//return new Path(file.getProjectName()).append(file.getProjectRelativePath()).toString();
-		return getName();
-	}
-	/**
-	 * Returns the image descriptor for this input.
-	 *
-	 * @return the image descriptor for this input
-	 */
-	public ImageDescriptor getImageDescriptor() {
-		IWorkbenchAdapter fileAdapter = (IWorkbenchAdapter)file.getAdapter(IWorkbenchAdapter.class);
-		return fileAdapter == null ? null : fileAdapter.getImageDescriptor(file);
-	}
-	/**
-	 * @see IWorkbenchAdapter#getImageDescriptor
-	 */
-	public ImageDescriptor getImageDescriptor(Object object) {
-		IWorkbenchAdapter fileAdapter = (IWorkbenchAdapter)file.getAdapter(IWorkbenchAdapter.class);
-		return fileAdapter == null ? null : fileAdapter.getImageDescriptor(file);
-	}
-	/**
-	 * @see IWorkbenchAdapter#getLabel
-	 */
-	public String getLabel(Object o) {
-		return file.getName();
-	}
-	/**
-	 * Returns the input name for display purposes.  For instance, if
-	 * the fully qualified input name is "a\b\MyFile.gif" the return value for
-	 * <code>getName</code> is "MyFile.gif".
-	 */
-	public String getName() {
-		String name = file.getName();
-		try {
-			return name + " " + file.getRevision();
-		} catch (TeamException e) {
-			return name;
-		}
-	}
-	/**
-	 * Returns the logical parent of the given object in its tree.
-	 * Returns <code>null</code> if there is no parent, or if this object doesn't
-	 * belong to a tree.
-	 *
-	 * @param object The object to get the parent for.
-	 */
-	public Object getParent(Object o) {
-		return null;
-	}
-	/*
-	 * Returns an interface used to persist the object.  If the editor input
-	 * cannot be persisted this method returns <code>null</code>.
-	 */
-	public IPersistableElement getPersistable() {
-		//not persistable
-		return null;
-	}
-	/**
-	 * Returns the underlying IStorage object.
-	 *
-	 * @return an IStorage object.
-	 * @exception CoreException if this method fails
-	 */
-	public IStorage getStorage() throws CoreException {
-		if (storage == null) {
-			storage = new RemoteFileStorage(file);
-		}
-		return storage;
-	}
-	/**
-	 * Returns the tool tip text for this editor input.  This text
-	 * is used to differentiate between two input with the same name.
-	 * For instance, MyClass.java in folder X and MyClass.java in folder Y.
-	 * <p> 
-	 * The format of the path will vary with each input type.  For instance,
-	 * if the editor input is of type <code>IFileEditorInput</code> this method
-	 * should return the fully qualified resource path.  For editor input of
-	 * other types it may be different. 
-	 * </p>
-	 * @return the tool tip text
-	 */
-	public String getToolTipText() {
-		//use path to make sure slashes are correct
-		return getName();
-		//return new Path(file.getProjectName()).append(file.getProjectRelativePath()).toString();
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileStorage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileStorage.java
deleted file mode 100644
index a96d3f7..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileStorage.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.InputStream;
-
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.core.TeamException;
-
-public class RemoteFileStorage extends PlatformObject implements IStorage {
-	ICVSRemoteFile file;
-	public RemoteFileStorage(ICVSRemoteFile file) {
-		this.file = file;
-	}
-	public InputStream getContents() throws CoreException {
-		try {
-			return file.getContents(new NullProgressMonitor());
-		} catch (TeamException e) {
-			throw new CoreException(e.getStatus());
-		}
-	}
-	public IPath getFullPath() {
-		return new Path(file.getName());
-	}
-	public String getName() {
-		return file.getName();
-	}
-	public boolean isReadOnly() {
-		return true;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositoriesView.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositoriesView.java
deleted file mode 100644
index e039d11..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositoriesView.java
+++ /dev/null
@@ -1,251 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.actions.OpenRemoteFileAction;
-import org.eclipse.team.internal.ccvs.ui.model.AllRootsElement;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-import org.eclipse.team.internal.ccvs.ui.model.RemoteContentProvider;
-import org.eclipse.team.internal.ccvs.ui.wizards.NewLocationWizard;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.part.DrillDownAdapter;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * RepositoriesView is a view on a set of known CVS repositories
- * which allows navigation of the structure of the repository and
- * the performing of CVS-specific operations on the repository contents.
- */
-public class RepositoriesView extends ViewPart {
-	public static final String VIEW_ID = "org.eclipse.team.ccvs.ui.RepositoriesView";
-
-	// The tree viewer
-	private TreeViewer viewer;
-	
-	// The root
-	private AllRootsElement root;
-	
-	// Drill down adapter
-	private DrillDownAdapter drillPart;
-	
-	// Actions
-	private Action showFoldersAction;
-	private Action showModulesAction;
-	private OpenRemoteFileAction openAction;	
-	private Action refreshAction;
-	
-	IRepositoryListener listener = new IRepositoryListener() {
-		public void repositoryAdded(final ICVSRepositoryLocation root) {
-			viewer.getControl().getDisplay().syncExec(new Runnable() {
-				public void run() {
-					viewer.refresh();
-					viewer.setSelection(new StructuredSelection(root));
-				}
-			});
-		}
-		public void repositoryRemoved(ICVSRepositoryLocation root) {
-			refresh();
-		}
-		public void branchTagsAdded(BranchTag[] tags, final ICVSRepositoryLocation root) {
-			refresh();
-		}
-		public void branchTagsRemoved(BranchTag[] tags, final ICVSRepositoryLocation root) {
-			refresh();
-		}
-		public void versionTagsAdded(CVSTag[] tags, final ICVSRepositoryLocation root) {
-			refresh();
-		}
-		public void versionTagsRemoved(CVSTag[] tags, final ICVSRepositoryLocation root) {
-			refresh();
-		}
-		private void refresh() {
-			Display display = viewer.getControl().getDisplay();
-			display.syncExec(new Runnable() {
-				public void run() {
-					viewer.refresh();
-				}
-			});
-		}
-	};
-
-	/**
-	 * Contribute actions to the view
-	 */
-	private void contributeActions() {
-		// Create actions
-		
-		// Refresh (toolbar)
-		refreshAction = new Action(Policy.bind("RepositoriesView.refresh"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_REFRESH)) {
-			public void run() {
-				viewer.refresh();
-			}
-		};
-		refreshAction.setToolTipText(Policy.bind("RepositoriesView.refresh"));
-
-		// New Repository (popup)
-		final Action newAction = new Action(Policy.bind("RepositoriesView.new"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_NEWLOCATION)) {
-			public void run() {
-				NewLocationWizard wizard = new NewLocationWizard();
-				WizardDialog dialog = new WizardDialog(viewer.getTree().getShell(), wizard);
-				dialog.open();
-			}
-		};
-
-		// Create the popup menu
-		MenuManager menuMgr = new MenuManager();
-		Tree tree = viewer.getTree();
-		Menu menu = menuMgr.createContextMenu(tree);
-		menuMgr.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager manager) {
-				// File actions go first (view file)
-				manager.add(new Separator(IWorkbenchActionConstants.GROUP_FILE));
-				
-				// New actions go next
-				MenuManager sub = new MenuManager(Policy.bind("RepositoriesView.newSubmenu"), IWorkbenchActionConstants.GROUP_ADD);
-				sub.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-				manager.add(sub);
-				
-				// Misc additions go last
-				manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-				
-				manager.add(refreshAction);
-				sub.add(newAction);
-			}
-		});
-		menuMgr.setRemoveAllWhenShown(true);
-		tree.setMenu(menu);
-		getSite().registerContextMenu(menuMgr, viewer);
-	
-		// Create the local tool bar
-		IActionBars bars = getViewSite().getActionBars();
-		IToolBarManager tbm = bars.getToolBarManager();
-		drillPart.addNavigationActions(tbm);
-		tbm.add(refreshAction);
-		tbm.update(false);
-		
-		// Create the open action for double clicks
-		openAction = new OpenRemoteFileAction();
-		viewer.addDoubleClickListener(new IDoubleClickListener() {
-			public void doubleClick(DoubleClickEvent e) {
-				handleDoubleClick(e);
-			}
-		});
-		
-		// Add module toggling to the local pull-down menu
-		IMenuManager mgr = bars.getMenuManager();
-		showFoldersAction = new Action("Show Folders") {
-			public void run() {
-				CVSUIPlugin.getPlugin().getPreferenceStore().setValue(ICVSUIConstants.PREF_SHOW_MODULES, false);
-				showModulesAction.setChecked(false);
-				viewer.refresh();
-			}
-		};
-		showModulesAction = new Action("Show Modules") {
-			public void run() {
-				CVSUIPlugin.getPlugin().getPreferenceStore().setValue(ICVSUIConstants.PREF_SHOW_MODULES, true);
-				showFoldersAction.setChecked(false);
-				viewer.refresh();
-			}
-		};
-		boolean showModules = CVSUIPlugin.getPlugin().getPreferenceStore().getBoolean(ICVSUIConstants.PREF_SHOW_MODULES);
-		showFoldersAction.setChecked(!showModules);
-		showModulesAction.setChecked(showModules);
-		mgr.add(showFoldersAction);
-		mgr.add(showModulesAction);
-		bars.updateActionBars();
-	}
-	
-	/*
-	 * @see WorkbenchPart#createPartControl
-	 */
-	public void createPartControl(Composite parent) {
-		initialize();
-		viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
-		viewer.setContentProvider(new RemoteContentProvider());
-		viewer.setLabelProvider(new WorkbenchLabelProvider());
-		getSite().setSelectionProvider(viewer);
-		viewer.setInput(root);
-		viewer.setSorter(new RepositorySorter());
-		viewer.getControl().addKeyListener(new KeyAdapter() {
-			public void keyPressed(KeyEvent event) {
-				if (event.keyCode == SWT.F5) {
-					refreshAction.run();
-				}
-			}
-		});
-		drillPart = new DrillDownAdapter(viewer);
-		contributeActions();
-		CVSUIPlugin.getPlugin().getRepositoryManager().addRepositoryListener(listener);
-	}
-	
-	/*
-	 * @see WorkbenchPart#dispose
-	 */
-	public void dispose() {
-		CVSUIPlugin.getPlugin().getRepositoryManager().removeRepositoryListener(listener);
-	}
-	
-	/**
-	 * The mouse has been double-clicked in the tree, perform appropriate
-	 * behaviour.
-	 */
-	private void handleDoubleClick(DoubleClickEvent e) {
-		// Only act on single selection
-		ISelection selection = e.getSelection();
-		if (selection instanceof IStructuredSelection) {
-			IStructuredSelection structured = (IStructuredSelection)selection;
-			if (structured.size() == 1) {
-				Object first = structured.getFirstElement();
-				if (first instanceof ICVSRemoteFile) {
-					// It's a file, open it.
-					openAction.selectionChanged(null, selection);
-					openAction.run(null);
-				} else {
-					// Try to expand/contract
-					viewer.setExpandedState(first, !viewer.getExpandedState(first));
-				}
-			}
-		}
-	}
-	
-	/**
-	 * Initialize the repositories and actions
-	 */
-	private void initialize() {
-		root = new AllRootsElement();
-	}
-	/*
-	 * @see WorkbenchPart#setFocus
-	 */
-	public void setFocus() {
-		viewer.getControl().setFocus();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositoryManager.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositoryManager.java
deleted file mode 100644
index c929c56..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositoryManager.java
+++ /dev/null
@@ -1,581 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSListener;
-import org.eclipse.team.ccvs.core.ICVSProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.ccvs.core.ILogEntry;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.core.sync.IRemoteResource;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.NullCopyHandler;
-import org.eclipse.team.internal.ccvs.core.client.ResponseHandler;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-
-/**
- * This class is repsible for maintaining the UI's list of known repositories,
- * and a list of known tags within each of those repositories.
- * 
- * It also provides a number of useful methods for assisting in repository operations.
- */
-public class RepositoryManager {
-	private static final String STATE_FILE = ".repositoryManagerState";
-	
-	// Map ICVSRepositoryLocation -> List of Tags
-	Hashtable branchTags = new Hashtable();
-	// Map ICVSRepositoryLocation -> Hashtable of (Project name -> Set of CVSTags)
-	Hashtable versionTags = new Hashtable();
-	
-	List listeners = new ArrayList();
-
-	// The previously remembered comment
-	private static String previousComment = "";
-	
-	/**
-	 * Answer an array of all known remote roots.
-	 */
-	public ICVSRepositoryLocation[] getKnownRoots() {
-		return getCVSProvider().getKnownRepositories();
-	}
-	
-	private ICVSProvider getCVSProvider() {
-		return CVSProviderPlugin.getProvider();
-	}
-	
-	/**
-	 * Get the list of known branch tags for a given remote root.
-	 */
-	public BranchTag[] getKnownBranchTags(ICVSRepositoryLocation root) {
-		Set set = (Set)branchTags.get(root);
-		if (set == null) return new BranchTag[0];
-		return (BranchTag[])set.toArray(new BranchTag[0]);
-	}
-	/**
-	 * Get the list of known version tags for a given project.
-	 * 
-	 * This list includes:
-	 * -All manually defined or auto-defined version tags
-	 * -All tags for the .vcm_meta file, if one exists
-	 * 
-	 * A server hit is incurred on each call to ensure up-to-date results.
-	 */
-	public CVSTag[] getKnownVersionTags(ICVSRemoteResource resource, IProgressMonitor monitor) throws TeamException {
-		// Find tags in .vcm_meta file, optimization for Eclipse users
-		Set result = new HashSet();
-		ICVSRemoteFile vcmMeta = getVCMMeta(resource);
-		if (vcmMeta != null) {
-			CVSTag[] tags = getTags(vcmMeta, new NullProgressMonitor());
-			for (int i = 0; i < tags.length; i++) {
-				if (tags[i].getType() == CVSTag.VERSION) {
-					result.add(tags[i]);
-				}
-			}
-		}
-		
-		Hashtable table = (Hashtable)versionTags.get(resource.getRepository());
-		if (table == null) {
-			return (CVSTag[])result.toArray(new CVSTag[result.size()]);
-		}
-		Set set = (Set)table.get(resource.getName());
-		if (set == null) {
-			return (CVSTag[])result.toArray(new CVSTag[result.size()]);
-		}
-		result.addAll(set);
-		return (CVSTag[])result.toArray(new CVSTag[0]);
-	}
-	private ICVSRemoteFile getVCMMeta(ICVSRemoteResource resource) throws TeamException {
-		// There should be a better way of doing this.
-		IRemoteResource[] resources = resource.members(new NullProgressMonitor());
-		for (int i = 0; i < resources.length; i++) {
-			if (resources[i] instanceof ICVSRemoteFile && resources[i].getName().equals(".vcm_meta")) {
-				return (ICVSRemoteFile)resources[i];
-			}
-		}
-		return null;
-	}
-	/**
-	 * Add the given branch tags to the list of known tags for the given
-	 * remote root.
-	 */
-	public void addBranchTags(ICVSRepositoryLocation root, BranchTag[] tags) {
-		Set set = (Set)branchTags.get(root);
-		if (set == null) {
-			set = new HashSet();
-			branchTags.put(root, set);
-		}
-		for (int i = 0; i < tags.length; i++) {
-			set.add(tags[i]);
-		}
-		Iterator it = listeners.iterator();
-		while (it.hasNext()) {
-			IRepositoryListener listener = (IRepositoryListener)it.next();
-			listener.branchTagsAdded(tags, root);
-		}
-	}
-	/**
-	 * A repository root has been added. Notify any listeners.
-	 */
-	public void rootAdded(ICVSRepositoryLocation root) {
-		Iterator it = listeners.iterator();
-		while (it.hasNext()) {
-			IRepositoryListener listener = (IRepositoryListener)it.next();
-			listener.repositoryAdded(root);
-		}
-	}
-	
-	/**
-	 * A repository root has been removed.
-	 * Remove the tags defined for this root and notify any listeners
-	 */
-	public void rootRemoved(ICVSRepositoryLocation root) {
-		BranchTag[] branchTags = getKnownBranchTags(root);
-		Hashtable vTags = (Hashtable)this.versionTags.get(root);
-		this.branchTags.remove(root);
-		this.versionTags.remove(root);
-		Iterator it = listeners.iterator();
-		while (it.hasNext()) {
-			IRepositoryListener listener = (IRepositoryListener)it.next();
-			listener.branchTagsRemoved(branchTags, root);
-			if (vTags != null) {
-				Iterator keyIt = vTags.keySet().iterator();
-				while (keyIt.hasNext()) {
-					String projectName = (String)keyIt.next();
-					Set tagSet = (Set)vTags.get(projectName);
-					CVSTag[] versionTags = (CVSTag[])tagSet.toArray(new CVSTag[0]);
-					listener.versionTagsRemoved(versionTags, root);
-				}
-			}
-			listener.repositoryRemoved(root);
-		}
-	}
-	
-	/**
-	 * Add the given version tags to the list of known tags for the given
-	 * remote project.
-	 */
-	public void addVersionTags(ICVSRemoteResource resource, CVSTag[] tags) {
-		String name = resource.getName();
-		Hashtable table = (Hashtable)versionTags.get(resource.getRepository());
-		if (table == null) {
-			table = new Hashtable();
-			versionTags.put(resource.getRepository(), table);
-		}
-		Set set = (Set)table.get(name);
-		if (set == null) {
-			set = new HashSet();
-			table.put(name, set);
-		}
-		for (int i = 0; i < tags.length; i++) {
-			set.add(tags[i]);
-		}
-		Iterator it = listeners.iterator();
-		while (it.hasNext()) {
-			IRepositoryListener listener = (IRepositoryListener)it.next();
-			listener.versionTagsAdded(tags, resource.getRepository());
-		}
-	}
-	/**
-	 * Remove the given branch tag from the list of known tags for the
-	 * given remote root.
-	 */
-	public void removeBranchTag(ICVSRepositoryLocation root, BranchTag[] tags) {
-		Set set = (Set)branchTags.get(root);
-		if (set == null) return;
-		for (int i = 0; i < tags.length; i++) {
-			set.remove(tags[i]);
-		}
-		Iterator it = listeners.iterator();
-		while (it.hasNext()) {
-			IRepositoryListener listener = (IRepositoryListener)it.next();
-			listener.branchTagsRemoved(tags, root);
-		}
-	}
-	/**
-	 * Remove the given tags from the list of known tags for the
-	 * given remote root.
-	 */
-	public void removeVersionTags(ICVSRemoteResource resource, CVSTag[] tags) {
-		Hashtable table = (Hashtable)versionTags.get(resource.getRepository());
-		if (table == null) return;
-		Set set = (Set)table.get(resource.getName());
-		if (set == null) return;
-		for (int i = 0; i < tags.length; i++) {
-			set.remove(tags[i]);
-		}
-		Iterator it = listeners.iterator();
-		while (it.hasNext()) {
-			IRepositoryListener listener = (IRepositoryListener)it.next();
-			listener.versionTagsRemoved(tags, resource.getRepository());
-		}
-	}
-	
-	public void startup() throws TeamException {
-		loadState();
-		CVSProviderPlugin.getProvider().addRepositoryListener(new ICVSListener() {
-			public void repositoryAdded(ICVSRepositoryLocation root) {
-				rootAdded(root);
-			}
-			public void repositoryRemoved(ICVSRepositoryLocation root) {
-				rootRemoved(root);
-			}
-		});
-	}
-	
-	public void shutdown() throws TeamException {
-		saveState();
-	}
-	
-	private void loadState() throws TeamException {
-		IPath pluginStateLocation = CVSUIPlugin.getPlugin().getStateLocation().append(STATE_FILE);
-		File file = pluginStateLocation.toFile();
-		if (file.exists()) {
-			try {
-				DataInputStream dis = new DataInputStream(new FileInputStream(file));
-				try {
-					readState(dis);
-				} finally {
-					dis.close();
-				}
-			} catch (IOException e) {
-				throw new TeamException(new Status(Status.ERROR, CVSUIPlugin.ID, TeamException.UNABLE, Policy.bind("RepositoryManager.ioException"), e));
-			}
-		}
-	}
-	
-	private void saveState() throws TeamException {
-		IPath pluginStateLocation = CVSUIPlugin.getPlugin().getStateLocation();
-		File tempFile = pluginStateLocation.append(STATE_FILE + ".tmp").toFile();
-		File stateFile = pluginStateLocation.append(STATE_FILE).toFile();
-		try {
-			DataOutputStream dos = new DataOutputStream(new FileOutputStream(tempFile));
-			try {
-				writeState(dos);
-			} finally {
-				dos.close();
-			}
-			if (stateFile.exists()) {
-				stateFile.delete();
-			}
-			boolean renamed = tempFile.renameTo(stateFile);
-			if (!renamed) {
-				throw new TeamException(new Status(Status.ERROR, CVSUIPlugin.ID, TeamException.UNABLE, Policy.bind("RepositoryManager.rename", tempFile.getAbsolutePath()), null));
-			}
-		} catch (IOException e) {
-			throw new TeamException(new Status(Status.ERROR, CVSUIPlugin.ID, TeamException.UNABLE, Policy.bind("RepositoryManager.save",stateFile.getAbsolutePath()), e));
-		}
-	}
-	private void writeState(DataOutputStream dos) throws IOException {
-		// Write the repositories
-		Collection repos = Arrays.asList(getKnownRoots());
-		dos.writeInt(repos.size());
-		Iterator it = repos.iterator();
-		while (it.hasNext()) {
-			ICVSRepositoryLocation root = (ICVSRepositoryLocation)it.next();
-			dos.writeUTF(root.getLocation());
-			BranchTag[] branchTags = getKnownBranchTags(root);
-			dos.writeInt(branchTags.length);
-			for (int i = 0; i < branchTags.length; i++) {
-				dos.writeUTF(branchTags[i].getTag().getName());
-				dos.writeInt(branchTags[i].getTag().getType());
-			}
-			// write number of projects for which there are tags in this root
-			Hashtable table = (Hashtable)versionTags.get(root);
-			if (table == null) {
-				dos.writeInt(0);
-			} else {
-				dos.writeInt(table.size());
-				// for each project, write the name of the project, number of tags, and each tag.
-				Iterator projIt = table.keySet().iterator();
-				while (projIt.hasNext()) {
-					String name = (String)projIt.next();
-					dos.writeUTF(name);
-					Set tagSet = (Set)table.get(name);
-					dos.writeInt(tagSet.size());
-					Iterator tagIt = tagSet.iterator();
-					while (tagIt.hasNext()) {
-						CVSTag tag = (CVSTag)tagIt.next();
-						dos.writeUTF(tag.getName());
-					}
-				}
-			}
-		}
-	}
-	private void readState(DataInputStream dis) throws IOException, TeamException {
-		int repoSize = dis.readInt();
-		for (int i = 0; i < repoSize; i++) {
-			ICVSRepositoryLocation root = CVSProviderPlugin.getProvider().getRepository(dis.readUTF());
-			int tagsSize = dis.readInt();
-			BranchTag[] branchTags = new BranchTag[tagsSize];
-			for (int j = 0; j < tagsSize; j++) {
-				String tagName = dis.readUTF();
-				int tagType = dis.readInt();
-				branchTags[j] = new BranchTag(new CVSTag(tagName, tagType), root);
-			}
-			addBranchTags(root, branchTags);
-			// read the number of projects for this root that have version tags
-			int projSize = dis.readInt();
-			if (projSize > 0) {
-				Hashtable projTable = new Hashtable();
-				versionTags.put(root, projTable);
-				for (int j = 0; j < projSize; j++) {
-					String name = dis.readUTF();
-					Set tagSet = new HashSet();
-					projTable.put(name, tagSet);
-					int numTags = dis.readInt();
-					for (int k = 0; k < numTags; k++) {
-						tagSet.add(new CVSTag(dis.readUTF(), CVSTag.VERSION));
-					}
-					Iterator it = listeners.iterator();
-					while (it.hasNext()) {
-						IRepositoryListener listener = (IRepositoryListener)it.next();
-						listener.versionTagsAdded((CVSTag[])tagSet.toArray(new CVSTag[0]), root);
-					}
-				}
-			}
-		}
-	}
-	
-	public void addRepositoryListener(IRepositoryListener listener) {
-		listeners.add(listener);
-	}
-	
-	public void removeRepositoryListener(IRepositoryListener listener) {
-		listeners.remove(listener);
-	}
-	
-	/**
-	 * Add the given resources to their associated providers.
-	 * This schedules the resources for addition; they still need to be committed.
-	 */
-	public void add(IResource[] resources, IProgressMonitor monitor) throws TeamException {
-		Hashtable table = getProviderMapping(resources);
-		Set keySet = table.keySet();
-		monitor.beginTask("", keySet.size() * 1000);
-		monitor.setTaskName(Policy.bind("RepositoryManager.adding"));
-		Iterator iterator = keySet.iterator();
-		while (iterator.hasNext()) {
-			IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-			CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-			provider.setComment(previousComment);
-			List list = (List)table.get(provider);
-			IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-			provider.add(providerResources, IResource.DEPTH_ZERO, subMonitor);
-		}		
-	}
-	
-	/**
-	 * Delete the given resources from their associated providers.
-	 * This schedules the resources for deletion; they still need to be committed.
-	 */
-	public void delete(IResource[] resources, IProgressMonitor monitor) throws TeamException {
-		Hashtable table = getProviderMapping(resources);
-		Set keySet = table.keySet();
-		monitor.beginTask("", keySet.size() * 1000);
-		monitor.setTaskName(Policy.bind("RepositoryManager.deleting"));
-		Iterator iterator = keySet.iterator();
-		while (iterator.hasNext()) {
-			IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-			CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-			provider.setComment(previousComment);
-			List list = (List)table.get(provider);
-			IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-			provider.delete(providerResources, subMonitor);
-		}		
-	}
-	public void update(IResource[] resources, Command.LocalOption[] options, boolean createBackups, IProgressMonitor monitor) throws TeamException {
-		Hashtable table = getProviderMapping(resources);
-		Set keySet = table.keySet();
-		monitor.beginTask("", keySet.size() * 1000);
-		monitor.setTaskName(Policy.bind("RepositoryManager.updating"));
-		Iterator iterator = keySet.iterator();
-		while (iterator.hasNext()) {
-			IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-			CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-			List list = (List)table.get(provider);
-			IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-			ResponseHandler handler = null;
-			if (!createBackups) {
-				handler = new NullCopyHandler();
-			}
-			provider.update(providerResources, options, null, handler, subMonitor);
-		}		
-	}
-	/**
-	 * Mark the files as merged.
-	 */
-	public void merged(IRemoteSyncElement[] elements) throws TeamException {
-		Hashtable table = getProviderMapping(elements);
-		Set keySet = table.keySet();
-		Iterator iterator = keySet.iterator();
-		while (iterator.hasNext()) {
-			CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-			provider.setComment(previousComment);
-			List list = (List)table.get(provider);
-			IRemoteSyncElement[] providerElements = (IRemoteSyncElement[])list.toArray(new IRemoteSyncElement[list.size()]);
-			provider.merged(providerElements);
-		}		
-	}
-	/**
-	 * Return the entered comment or null.
-	 * Persist the entered release comment for the next caller.
-	 */
-	public String promptForComment(final Shell shell) {
-		final int[] result = new int[1];
-		shell.getDisplay().syncExec(new Runnable() {
-			public void run() {
-				ReleaseCommentDialog dialog = new ReleaseCommentDialog(shell);
-				dialog.setComment(previousComment);
-				result[0] = dialog.open();
-				if (result[0] != ReleaseCommentDialog.OK) return;
-				previousComment = dialog.getComment();
-			}
-		});
-		if (result[0] != ReleaseCommentDialog.OK) return null;
-		return previousComment;
-	}
-	/**
-	 * Commit the given resources to their associated providers.
-	 * 
-	 * @param resources  the resources to commit
-	 * @param monitor  the progress monitor
-	 */
-	public void commit(IResource[] resources, String comment, IProgressMonitor monitor) throws TeamException {
-		Hashtable table = getProviderMapping(resources);
-		Set keySet = table.keySet();
-		monitor.beginTask("", keySet.size() * 1000);
-		monitor.setTaskName(Policy.bind("RepositoryManager.committing"));
-		Iterator iterator = keySet.iterator();
-		while (iterator.hasNext()) {
-			IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-			CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-			provider.setComment(comment);
-			List list = (List)table.get(provider);
-			IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-			provider.checkin(providerResources, IResource.DEPTH_INFINITE, subMonitor);
-		}
-	}
-	
-	/**
-	 * Helper method. Return a hashtable mapping provider to a list of resources
-	 * shared with that provider.
-	 */
-	private Hashtable getProviderMapping(IResource[] resources) {
-		Hashtable result = new Hashtable();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = TeamPlugin.getManager().getProvider(resources[i].getProject());
-			List list = (List)result.get(provider);
-			if (list == null) {
-				list = new ArrayList();
-				result.put(provider, list);
-			}
-			list.add(resources[i]);
-		}
-		return result;
-	}
-	/**
-	 * Helper method. Return a hashtable mapping provider to a list of IRemoteSyncElements
-	 * shared with that provider.
-	 */
-	private Hashtable getProviderMapping(IRemoteSyncElement[] elements) {
-		Hashtable result = new Hashtable();
-		for (int i = 0; i < elements.length; i++) {
-			ITeamProvider provider = TeamPlugin.getManager().getProvider(elements[i].getLocal().getProject());
-			List list = (List)result.get(provider);
-			if (list == null) {
-				list = new ArrayList();
-				result.put(provider, list);
-			}
-			list.add(elements[i]);
-		}
-		return result;
-	}
-
-	/**
-	 * Returns Branch and Version tags for the given files
-	 */	
-	public CVSTag[] getTags(ICVSRemoteFile file, IProgressMonitor monitor) throws TeamException {
-		ICVSRepositoryLocation root = file.getRepository();
-		Set tagSet = new HashSet();
-		ILogEntry[] entries = file.getLogEntries(monitor);
-		for (int j = 0; j < entries.length; j++) {
-			CVSTag[] tags = entries[j].getTags();
-			for (int k = 0; k < tags.length; k++) {
-				tagSet.add(tags[k]);
-			}
-		}
-		return (CVSTag[])tagSet.toArray(new CVSTag[0]);
-	}		
-
-	/**
-	 * Auto-define version and branch tags for the given files.
-	 */	
-	public void autoDefineTags(ICVSRemoteFile[] files, IProgressMonitor monitor) throws TeamException {
-		for (int i = 0; i < files.length; i++) {
-			ICVSRemoteFile file = files[i];
-			ICVSRepositoryLocation root = file.getRepository();
-			CVSTag[] tags = getTags(file, monitor);
-
-			// Break tags up into version tags and branch tags.
-			List branchTags = new ArrayList();
-			List versionTags = new ArrayList();
-			for (int j = 0; j < tags.length; j++) {
-				CVSTag tag = tags[j];
-				if (tag.getType() == CVSTag.BRANCH) {
-					branchTags.add(new BranchTag(tag, root));
-				} else {
-					versionTags.add(tag);
-				}
-			}
-			if (branchTags.size() > 0) {
-				addBranchTags(root, (BranchTag[])branchTags.toArray(new BranchTag[0]));
-			}
-			if (versionTags.size() > 0) {
-				// Current behaviour for version tags is to match the behaviour in VCM 1.0, 
-				// which is to attach them to the top-most folder in CVS. This may change in the future
-				// to allow a more flexible scheme of attaching 'project' semantics to arbitrary
-				// cvs folders. Get the top-most folder now to optimize.
-				ICVSRemoteResource current = file.getRemoteParent();
-				ICVSRemoteResource next = current.getRemoteParent();
-				while (next != null && next.getRemoteParent() != null) {
-					current = next;
-					next = current.getRemoteParent();
-				}
-				addVersionTags(current, (CVSTag[])versionTags.toArray(new CVSTag[0]));
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositorySorter.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositorySorter.java
deleted file mode 100644
index 0a60633..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RepositorySorter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.sync.IRemoteResource;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-
-public class RepositorySorter extends ViewerSorter {
-	public int category(Object element) {
-		if (element instanceof ICVSRemoteFolder) {
-			return 1;
-		}
-		if (element instanceof ICVSRemoteFile) {
-			return 2;
-		}
-		return 0;
-	}
-
-	public int compare(Viewer viewer, Object o1, Object o2) {
-		int cat1 = category(o1);
-		int cat2 = category(o2);
-		if (cat1 != cat2) return cat1 - cat2;
-		
-		if (o1 instanceof BranchTag && o2 instanceof BranchTag) {
-			CVSTag tag1 = ((BranchTag)o1).getTag();
-			CVSTag tag2 = ((BranchTag)o2).getTag();
-			return tag1.compareTo(tag2);
-		}
-		if (o1 instanceof ICVSRepositoryLocation && o2 instanceof ICVSRepositoryLocation) {
-			return ((ICVSRepositoryLocation)o1).getLocation().compareTo(((ICVSRepositoryLocation)o2).getLocation());
-		}
-		return super.compare(viewer, o1, o2);
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourceEditionNode.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourceEditionNode.java
deleted file mode 100644
index c5fcac5..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourceEditionNode.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

- 

-import java.io.InputStream;

-

-import org.eclipse.compare.BufferedContent;

-import org.eclipse.compare.CompareUI;

-import org.eclipse.compare.ITypedElement;

-import org.eclipse.compare.structuremergeviewer.IStructureComparator;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IPath;

-import org.eclipse.core.runtime.NullProgressMonitor;

-import org.eclipse.core.runtime.Path;

-import org.eclipse.swt.custom.BusyIndicator;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.widgets.Display;

-import org.eclipse.team.ccvs.core.ICVSRemoteResource;

-import org.eclipse.team.core.TeamException;

-import org.eclipse.team.core.sync.IRemoteResource;

-

-/**

- * A class for comparing ICVSRemoteResource objects

- */

-public class ResourceEditionNode extends BufferedContent implements IStructureComparator, ITypedElement {

-	private ICVSRemoteResource resource;

-	private ResourceEditionNode[] children;

-	

-	/**

-	 * Creates a new ResourceEditionNode on the given resource edition.

-	 */

-	public ResourceEditionNode(ICVSRemoteResource resourceEdition) {

-		this.resource = resourceEdition;

-	}

-		

-	/**

-	 * @see BufferedContent#createStream

-	 */

-	public InputStream createStream() throws CoreException {

-		if (resource == null) {

-			return null;

-		}

-		try {

-			return resource.getContents(new NullProgressMonitor());

-		} catch (TeamException e) {

-			throw new CoreException(e.getStatus());

-		}

-	}

-	

-	/**

-	 * Returns true if both resources names are identical.

-	 * The content is not considered.

-	 * @see IComparator#equals

-	 */

-	public boolean equals(Object other) {

-		if (other instanceof ITypedElement) {

-			String otherName = ((ITypedElement)other).getName();

-			return getName().equals(otherName);

-		}

-		return super.equals(other);

-	}

-	

-	/**

-	 * Enumerate children of this node (if any).

-	 */

-	public Object[] getChildren() {

-		if (children == null) {

-			if (resource == null) {

-				children = new ResourceEditionNode[0];

-			} else {

-				try {

-					IRemoteResource[] members = resource.members(new NullProgressMonitor());

-					children = new ResourceEditionNode[members.length];

-					for (int i = 0; i < members.length; i++) {

-						children[i] = new ResourceEditionNode((ICVSRemoteResource)members[i]);

-					}

-				} catch (TeamException e) {

-					CVSUIPlugin.log(e.getStatus());

-				}

-			}

-		}

-		return children;

-	}

-

-	/**

-	 * @see IStreamContentAccessor#getContents()

-	 */

-	public InputStream getContents() throws CoreException {

-		if (resource == null) {

-			return null;

-		}

-		//show busy cursor if this is happening in the UI thread

-		Display display = Display.getCurrent();

-		if (display != null) {

-			final InputStream[] stream = new InputStream[1];

-			final TeamException[] exception = new TeamException[1];

-			BusyIndicator.showWhile(display, new Runnable() {

-				public void run() {

-					try {

-						stream[0] = resource.getContents(new NullProgressMonitor());

-					} catch (TeamException e) {

-						exception[0] = e;

-					}

-				}

-			});

-			if (exception[0] != null) {

-				throw new CoreException(exception[0].getStatus());

-			}

-			return stream[0];

-		} else {

-			//we're not in the UI thread, just get the contents.

-			try {

-				return resource.getContents(new NullProgressMonitor());

-			} catch (TeamException e) {

-				throw new CoreException(e.getStatus());

-			}

-		}

-	}

-	

-	public Image getImage() {

-		return CompareUI.getImage(resource);

-	}

-	

-	/**

-	 * Returns the name of this node.

-	 */

-	public String getName() {

-		return resource == null ? "" : resource.getName();

-	}

-	

-	public ICVSRemoteResource getRemoteResource() {

-		return resource;

-	}

-	

-	/**

-	 * Returns the comparison type for this node.

-	 */

-	public String getType() {

-		if (resource == null) {

-			return UNKNOWN_TYPE;

-		}

-		if (resource.isContainer()) {

-			return FOLDER_TYPE;

-		}

-		String name = resource.getName();

-		name = name.substring(name.lastIndexOf('.') + 1);

-		return name.length() == 0 ? UNKNOWN_TYPE : name;

-	}

-	

-	/**

-	 * @see IComparator#equals

-	 */

-	public int hashCode() {

-		return getName().hashCode();

-	}

-}

diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourcePropertiesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourcePropertiesPage.java
deleted file mode 100644
index e3a506c..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourcePropertiesPage.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-/**
- * A property page which displays the CVS-specific properties for the
- * selected resource.
- */
-public class ResourcePropertiesPage extends PropertyPage {
-	// The resource to show properties for
-	IResource resource;
-
-	/*
-	 * @see PreferencePage#createContents(Composite)
-	 */
-	protected Control createContents(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		layout.marginHeight = layout.marginWidth = 0;
-		composite.setLayout(layout);
-		composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		
-		try {
-			IResource resource = getSelectedElement();
-			if (resource != null) {
-				CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(resource.getProject());;
-				if (!provider.isManaged(resource)) {
-					createPair(composite, Policy.bind("ResourcePropertiesPage.status"), Policy.bind("ResourcePropertiesPage.notManaged"));
-				} else {
-					createPair(composite, Policy.bind("ResourcePropertiesPage.status"), provider.hasRemote(resource) ? Policy.bind("ResourcePropertiesPage.versioned") : Policy.bind("ResourcePropertiesPage.notVersioned"));
-					createPair(composite, Policy.bind("ResourcePropertiesPage.state"), provider.isCheckedOut(resource) ? Policy.bind("ResourcePropertiesPage.checkedOut") : Policy.bind("ResourcePropertiesPage.checkedIn"));
-
-					//createPair(composite, Policy.bind("ResourcePropertiesPage.baseRevision"), common != null ? common.getVersionName() : Policy.bind("ResourcePropertiesPage.none"));
-				}
-			}
-		} catch (TeamException e) {
-			createPair(composite, Policy.bind("ResourcePropertiesPage.error"), e.getMessage());
-		}
-		return composite;
-	}
-
-	/**
-	 * Creates a key-value property pair in the given parent.
-	 * 
-	 * @param parent  the parent for the labels
-	 * @param left  the string for the left label
-	 * @param right  the string for the right label
-	 */
-	protected void createPair(Composite parent, String left, String right) {
-		Label label = new Label(parent, SWT.NONE);
-		label.setText(left);
-	
-		label = new Label(parent, SWT.NONE);
-		label.setText(right);
-		label.setToolTipText(right);
-		label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-	}
-
-	/**
-	 * Returns the element selected when the properties was run
-	 * 
-	 * @return the selected element
-	 */	
-	protected IResource getSelectedElement() {
-		// get the resource that is the source of this property page
-		IResource resource = null;
-		IAdaptable element = getElement();
-		if (element instanceof IResource) {
-			resource = (IResource)element;
-		} else {
-			Object adapter = element.getAdapter(IResource.class);
-			if (adapter instanceof IResource) {
-				resource = (IResource)adapter;
-			}
-		}
-		return resource;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/SimpleContentProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/SimpleContentProvider.java
deleted file mode 100644
index 4c503a3..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/SimpleContentProvider.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import org.eclipse.jface.viewers.*;
-
-/**
- * A default content provider to prevent subclasses from
- * having to implement methods they don't need.
- */
-public class SimpleContentProvider implements IStructuredContentProvider {
-
-	/**
-	 * SimpleContentProvider constructor.
-	 */
-	public SimpleContentProvider() {
-		super();
-	}
-	
-	/*
-	 * @see SimpleContentProvider#dispose()
-	 */
-	public void dispose() {
-	}
-	
-	/*
-	 * @see SimpleContentProvider#getElements()
-	 */
-	public Object[] getElements(Object element) {
-		return new Object[0];
-	}
-	
-	/*
-	 * @see SimpleContentProvider#inputChanged()
-	 */
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagSelectionDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagSelectionDialog.java
deleted file mode 100644
index 95a2263..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagSelectionDialog.java
+++ /dev/null
@@ -1,359 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.merge.ProjectElement;
-import org.eclipse.team.internal.ccvs.ui.merge.TagElement;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * Dialog to prompt the user to choose a tag for a selected resource
- */
-public class TagSelectionDialog extends Dialog {
-	private IResource resource;
-
-	private CVSTag result;
-	
-	// widgets;
-	private TreeViewer tagTree;
-	private Button okButton;
-	private Label messageLine;
-	private Button useDefinedTagButton;
-	private Button useSpecifiedTagButton;
-	private Combo tagTypeCombo;
-	private Text tagText;
-	private Image versionImage;
-	private Image branchImage;
-	
-	// constants
-	private static final int SIZING_DIALOG_WIDTH = 400;
-	private static final int SIZING_DIALOG_HEIGHT = 250;
-	
-	/**
-	 * Creates a new TagSelectionDialog.
-	 * @param resource The resource to select a version for.
-	 */
-	public TagSelectionDialog(Shell parentShell, IResource resource) {
-		super(parentShell);
-		this.resource = resource;
-		setShellStyle(getShellStyle() | SWT.RESIZE);
-	}
-	
-	/* (non-Javadoc)
-	 * Method declared on Window.
-	 */
-	protected void configureShell(Shell newShell) {
-		super.configureShell(newShell);
-		newShell.setText(Policy.bind("TagSelectionDialog.Select_a_Tag_1")); //$NON-NLS-1$
-		// set F1 help
-		//WorkbenchHelp.setHelp(newShell, new Object[] {IVCMHelpContextIds.VERSION_SELECTION_DIALOG});
-	}
-	
-	public boolean close() {
-		versionImage.dispose();
-		branchImage.dispose();
-		return super.close();
-	}
-	
-	/**
-	 * Creates this window's widgetry.
-	 * <p>
-	 * The default implementation of this framework method
-	 * creates this window's shell (by calling <code>createShell</code>),
-	 * its control (by calling <code>createContents</code>),
-	 * and initializes this window's shell bounds 
-	 * (by calling <code>initializeBounds</code>).
-	 * This framework method may be overridden; however,
-	 * <code>super.create</code> must be called.
-	 * </p>
-	 */
-	public void create() {
-		super.create();
-		initialize();
-	}
-	
-	/**
-	 * Add buttons to the dialog's button bar.
-	 *
-	 * @param parent the button bar composite
-	 */
-	protected void createButtonsForButtonBar(Composite parent) {
-		// create OK and Cancel buttons by default
-		okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
-		okButton.setEnabled(false);
-		createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
-	}
-	
-	/**
-	 * Creates and returns the contents of the upper part 
-	 * of this dialog (above the button bar).
-	 * <p>
-	 * The default implementation of this framework method
-	 * creates and returns a new <code>Composite</code> with
-	 * standard margins and spacing.
-	 * Subclasses should override.
-	 * </p>
-	 *
-	 * @param the parent composite to contain the dialog area
-	 * @return the dialog area control
-	 */
-	protected Control createDialogArea(Composite parent) {
-		versionImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION).createImage();
-		branchImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_TAG).createImage();
-
-		Composite top = (Composite)super.createDialogArea(parent);
-	
-		useDefinedTagButton = new Button(top, SWT.RADIO);
-		useDefinedTagButton.setText(Policy.bind("TagSelectionDialog.Use_Defined_Tag__2")); //$NON-NLS-1$
-		useDefinedTagButton.addListener(SWT.Selection, new Listener() {
-			public void handleEvent(Event event) {
-				handleRadioSelectionChanged();
-			}
-		});
-		
-		Composite inner = new Composite(top, SWT.NULL);
-		GridData data = new GridData();
-		data.widthHint = SIZING_DIALOG_WIDTH;
-		data.heightHint = SIZING_DIALOG_HEIGHT;
-		inner.setLayoutData(data);
-		GridLayout layout = new GridLayout();
-		layout.marginWidth = 10;
-		inner.setLayout(layout);
-		tagTree = createTree(inner);
-		
-		useSpecifiedTagButton = new Button(top, SWT.RADIO);
-		useSpecifiedTagButton.setText(Policy.bind("TagSelectionDialog.Use_User-Specified_Tag__3")); //$NON-NLS-1$
-		
-		inner = new Composite(top, SWT.NULL);
-		inner.setLayoutData(new GridData());
-		layout = new GridLayout();
-		layout.marginWidth = 10;
-		layout.numColumns = 2;
-		inner.setLayout(layout);
-		createLabel(inner, Policy.bind("TagSelectionDialog.Tag_name__4")); //$NON-NLS-1$
-		tagText = new Text(inner, SWT.SINGLE | SWT.BORDER);
-		tagText.setEnabled(false);
-		tagText.addListener(SWT.Modify, new Listener() {
-			public void handleEvent(Event e) {
-				updateEnablement();
-			}
-		});
-		data = new GridData();
-		data.widthHint = 250;
-		tagText.setLayoutData(data);
-
-		createLabel(inner, Policy.bind("TagSelectionDialog.Tag_type__5")); //$NON-NLS-1$
-		tagTypeCombo = new Combo(inner, SWT.READ_ONLY);
-		tagTypeCombo.setEnabled(false);
-		tagTypeCombo.add(Policy.bind("TagSelectionDialog.Version_6")); //$NON-NLS-1$
-		tagTypeCombo.add(Policy.bind("TagSelectionDialog.Branch_7")); //$NON-NLS-1$
-		
-		messageLine = new Label(top, SWT.NONE);
-		messageLine.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-	
-		useDefinedTagButton.setSelection(true);
-		tagTypeCombo.select(0);
-
-		// initialize the table contents
-		try {
-			CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(resource);
-			tagTree.setInput(new ProjectElement((ICVSRemoteFolder)provider.getRemoteResource(resource)));
-		} catch (TeamException e) {
-			// To do: error dialog
-		}
-
-		return top;
-	}
-	
-	private void handleRadioSelectionChanged() {
-		if (useDefinedTagButton.getSelection()) {
-			// Enable the table, disable the text widget
-			tagTree.getTree().setEnabled(true);
-			tagText.setEnabled(false);
-			tagTypeCombo.setEnabled(false);
-		} else {
-			// Disable the table, enable the text widget
-			tagTree.getTree().setEnabled(false);
-			tagText.setEnabled(true);
-			tagTypeCombo.setEnabled(true);
-		}
-		// update the widget enablement
-		updateEnablement();
-	}
-	
-	/**
-	 * Utility method that creates a label instance
-	 * and sets the default layout data.
-	 *
-	 * @param parent  the parent for the new label
-	 * @param text  the text for the new label
-	 * @return the new label
-	 */
-	protected Label createLabel(Composite parent, String text) {
-		Label label = new Label(parent, SWT.LEFT);
-		label.setText(text);
-		GridData data = new GridData();
-		data.horizontalSpan = 1;
-		data.horizontalAlignment = GridData.FILL;
-		label.setLayoutData(data);
-		return label;
-	}
-	
-	protected TreeViewer createTree(Composite parent) {
-		Tree tree = new Tree(parent, SWT.SINGLE | SWT.BORDER);
-		tree.setLayoutData(new GridData(GridData.FILL_BOTH));	
-		TreeViewer result = new TreeViewer(tree);
-		result.setContentProvider(new WorkbenchContentProvider());
-		result.setLabelProvider(new WorkbenchLabelProvider());
-		result.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				updateEnablement();
-			}
-		});
-		// select and close on double click
-		// To do: use defaultselection instead of double click
-		result.getTree().addMouseListener(new MouseAdapter() {
-			public void mouseDoubleClick(MouseEvent e) {
-				IStructuredSelection selection = (IStructuredSelection)tagTree.getSelection();
-				if (!selection.isEmpty() && (selection.getFirstElement() instanceof TagElement)) {
-					okPressed();
-				}
-			}
-		});
-		result.setSorter(new RepositorySorter());
-		return result;
-	}
-	
-	/**
-	 * Returns the selected tag.
-	 */
-	public CVSTag getResult() {
-		return result;
-	}
-
-	/**
-	 * Initializes the dialog contents.
-	 */
-	protected void initialize() {
-		okButton.setEnabled(false);
-		showError(null);
-	}
-	
-	/**
-	 * Notifies that the ok button of this dialog has been pressed.
-	 * <p>
-	 * The default implementation of this framework method sets
-	 * this dialog's return code to <code>Window.OK</code>
-	 * and closes the dialog. Subclasses may override.
-	 * </p>
-	 */
-	protected void okPressed() {
-		if (useDefinedTagButton.getSelection()) {
-			IStructuredSelection selection = (IStructuredSelection)tagTree.getSelection();
-			Object o = selection.getFirstElement();
-			TagElement element = (TagElement)o;
-			result = element.getTag();
-		} else {
-			String text = tagText.getText();
-			int type;
-			switch (tagTypeCombo.getSelectionIndex()) {
-				case 0:
-					type = CVSTag.VERSION;
-					break;
-				case 1:
-					type = CVSTag.BRANCH;
-					break;
-				default:
-					type = CVSTag.HEAD;
-					break;
-			}
-			result = new CVSTag(text, type);
-		}
-		super.okPressed();
-	}
-
-	/**
-	 * Shows an error message in the message line.
-	 */
-	void showError(String errorMsg) {
-		messageLine.setForeground(messageLine.getDisplay().getSystemColor(SWT.COLOR_RED));
-		messageLine.setText(errorMsg == null ? "" : errorMsg); //$NON-NLS-1$
-	}
-
-	/**
-	 * Updates the dialog enablement.
-	 */
-	protected void updateEnablement() {
-		if (useDefinedTagButton.getSelection()) {
-			IStructuredSelection selection = (IStructuredSelection)tagTree.getSelection();
-			if (selection.isEmpty() || !(selection.getFirstElement() instanceof TagElement)) {
-				okButton.setEnabled(false);
-				showError(Policy.bind("TagSelectionDialog.Please_select_a_tag_9")); //$NON-NLS-1$
-			} else {
-				okButton.setEnabled(true);
-				showError(null);
-			}
-		} else {
-			String tag = tagText.getText();
-			IStatus result = CVSTag.validateTagName(tag);
-			if (result.isOK()) {
-				okButton.setEnabled(true);
-				showError(null);
-			} else {
-				okButton.setEnabled(false);
-				showError(result.getMessage());
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TextViewerAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TextViewerAction.java
deleted file mode 100644
index bc31608..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TextViewerAction.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.ui.texteditor.IUpdate;
-
-public class TextViewerAction extends Action implements IUpdate {
-	private int operationCode = -1;
-	private ITextOperationTarget operationTarget;
-
-	public TextViewerAction(ITextViewer viewer, int operationCode) {
-		this.operationCode = operationCode;
-		operationTarget = viewer.getTextOperationTarget();
-		update();
-	}
-	public void update() {
-		boolean wasEnabled = isEnabled();
-		boolean isEnabled = (operationTarget != null && operationTarget.canDoOperation(operationCode));
-		setEnabled(isEnabled);
-		if (wasEnabled != isEnabled) {
-			firePropertyChange(ENABLED, wasEnabled ? Boolean.TRUE : Boolean.FALSE, isEnabled ? Boolean.TRUE : Boolean.FALSE);
-		}
-	}
-	public void run() {
-		if (operationCode != -1 && operationTarget != null) {
-			operationTarget.doOperation(operationCode);
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java
deleted file mode 100644
index d4e76ae..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.help.WorkbenchHelp;
-
-/**
- * A dialog for prompting for a username and password
- */
-public class UserValidationDialog extends Dialog {
-	// widgets
-	protected Text usernameField;
-	protected Text passwordField;
-
-	protected String domain;
-	protected String defaultUsername;
-	protected String password = null;
-	
-	// whether or not the username can be changed
-	protected boolean isUsernameMutable = true;
-	protected String username = null;
-	protected String message = null;
-
-	/**
-	 * Creates a new UserValidationDialog.
-	 * 
-	 * @param parentShell  the parent shell
-	 * @param location  the location
-	 * @param defaultName  the default user name
-	 * @param message  a mesage to display to the user
-	 */
-	public UserValidationDialog(Shell parentShell, String location, String defaultName, String message) {
-		super(parentShell);
-		this.defaultUsername = defaultName;
-		this.domain = location;
-		this.message = message;
-	}
-	/**
-	 * @see Window#configureShell
-	 */
-	protected void configureShell(Shell newShell) {
-		super.configureShell(newShell);
-		newShell.setText(Policy.bind("UserValidationDialog.required"));
-		// set F1 help
-		//WorkbenchHelp.setHelp(newShell, new Object[] {ICVSHelpContextIds.USER_VALIDATION_DIALOG});	
-	}
-	/**
-	 * @see Window#create
-	 */
-	public void create() {
-		super.create();
-		// add some default values
-		usernameField.setText(defaultUsername);
-	
-		if (isUsernameMutable) {
-			// give focus to username field
-			usernameField.selectAll();
-			usernameField.setFocus();
-		} else {
-			usernameField.setEditable(false);
-			passwordField.setFocus();
-		}
-	}
-	/**
-	 * @see Dialog#createDialogArea
-	 */
-	protected Control createDialogArea(Composite parent) {
-		Composite main = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 3;
-		main.setLayout(layout);
-		main.setLayoutData(new GridData(GridData.FILL_BOTH));
-	
-		if (message != null) {
-			Label messageLabel = new Label(main, SWT.WRAP);
-			messageLabel.setText(message);
-			messageLabel.setForeground(messageLabel.getDisplay().getSystemColor(SWT.COLOR_RED));
-			GridData data = new GridData(GridData.FILL_HORIZONTAL);
-			data.horizontalSpan = 3;
-			messageLabel.setLayoutData(data);
-		}
-		
-		Label label = new Label(main, SWT.WRAP);
-		if (isUsernameMutable) {
-			label.setText(Policy.bind("UserValidationDialog.labelUser", domain));
-		} else {
-			label.setText(Policy.bind("UserValidationDialog.labelPassword", new Object[] {defaultUsername, domain}));
-		}
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		data.horizontalSpan = 3;
-		label.setLayoutData(data);
-		
-		createUsernameFields(main);
-		createPasswordFields(main);
-	
-		return main;
-	}
-	/**
-	 * Creates the three widgets that represent the password entry area.
-	 * 
-	 * @param parent  the parent of the widgets
-	 */
-	protected void createPasswordFields(Composite parent) {
-		new Label(parent, SWT.NONE).setText(Policy.bind("UserValidationDialog.password"));
-		
-		passwordField = new Text(parent, SWT.BORDER);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
-		passwordField.setLayoutData(data);
-		passwordField.setEchoChar('*');
-		
-		// spacer
-		new Label(parent, SWT.NONE);
-	}
-	/**
-	 * Creates the three widgets that represent the user name entry area.
-	 * 
-	 * @param parent  the parent of the widgets
-	 */
-	protected void createUsernameFields(Composite parent) {
-		new Label(parent, SWT.NONE).setText(Policy.bind("UserValidationDialog.user"));
-		
-		usernameField = new Text(parent, SWT.BORDER);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
-		usernameField.setLayoutData(data);
-		
-		// spacer
-		new Label(parent, SWT.NONE);
-	}
-	/**
-	 * Returns the password entered by the user, or null
-	 * if the user canceled.
-	 * 
-	 * @return the entered password
-	 */
-	public String getPassword() {
-		return password;
-	}
-	/**
-	 * Returns the username entered by the user, or null
-	 * if the user canceled.
-	 * 
-	 * @return the entered username
-	 */
-	public String getUsername() {
-		return username;
-	}
-	/**
-	 * Notifies that the ok button of this dialog has been pressed.
-	 * <p>
-	 * The default implementation of this framework method sets
-	 * this dialog's return code to <code>Window.OK</code>
-	 * and closes the dialog. Subclasses may override.
-	 * </p>
-	 */
-	protected void okPressed() {
-		password = passwordField.getText();
-		username = usernameField.getText();
-	
-		super.okPressed();
-	}
-	/**
-	 * Sets whether or not the username field should be mutable.
-	 * This method must be called before create(), otherwise it
-	 * will be ignored.
-	 * 
-	 * @param value  whether the username is mutable
-	 */
-	public void setUsernameMutable(boolean value) {
-		isUsernameMutable = value;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java
deleted file mode 100644
index 1dbf498..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.text.Collator;
-import java.util.Vector;
-
-public class VersionCollator {
-	static final int WORD = 0;
-	static final int NUMBER = 1;
-	
-	public int compare(String version1, String version2) {
-		if (version1 == null && version2 == null) return 0;
-		if (version1 == null) return -1;
-		if (version2 == null) return 1;
-		String[] version1Segments = getStringSegments(version1);
-		String[] version2Segments = getStringSegments(version2);
-		Collator collator = Collator.getInstance();
-		for (int i = 0; i < version1Segments.length && i < version2Segments.length; i++) {
-			int oneType = isNumber(version1Segments[i]) ? NUMBER : WORD;
-			int twoType = isNumber(version2Segments[i]) ? NUMBER : WORD;
-			if (oneType != twoType) {
-				return collator.compare(version1, version2);
-			}
-			if (oneType == NUMBER) {
-				int intOne = Integer.parseInt(version1Segments[i]);
-				int intTwo = Integer.parseInt(version2Segments[i]);
-				if (intOne != intTwo) return (intOne < intTwo) ? -1 : 1;
-			} else {
-				int result = collator.compare(version1Segments[i], version2Segments[i]);
-				if (result != 0) return result;
-			}
-		}
-		if (version1Segments.length != version2Segments.length) {
-			return version1Segments.length < version2Segments.length ? -1 : 1;
-		}
-		return 0;
-	}
-	String[] getStringSegments(String string) {
-		int size = string.length();
-		if (size == 0) return new String[0];
-		StringBuffer buffer = new StringBuffer();
-		Vector vector = new Vector();
-		int current = Character.isDigit(string.charAt(0)) ? NUMBER : WORD;
-		for (int i = 0; i < size; i++) {
-			char ch = string.charAt(i);
-			int newCurrent = Character.isDigit(string.charAt(i)) ? NUMBER : WORD;
-			if (newCurrent != current) {
-				vector.addElement(buffer.toString());
-				buffer = new StringBuffer();
-				current = newCurrent;
-			}
-			buffer.append(ch);
-		}
-		vector.addElement(buffer.toString());
-		String[] result = new String[vector.size()];
-		vector.toArray(result);
-		return result;
-	}
-	boolean isNumber(String string) {
-		return Character.isDigit(string.charAt(0));
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkbenchUserAuthenticator.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkbenchUserAuthenticator.java
deleted file mode 100644
index 388ff8c..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkbenchUserAuthenticator.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.ccvs.core.IUserAuthenticator;
-import org.eclipse.team.ccvs.core.IUserInfo;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-
-/**
- * An authenticator that prompts the user for authentication info,
- * and stores the results in the Platform's authentication keyring.
- */
-public class WorkbenchUserAuthenticator implements IUserAuthenticator {
-
-	/**
-	 * WorkbenchUserAuthenticator constructor.
-	 */
-	public WorkbenchUserAuthenticator() {
-		super();
-	}
-	/**
-	 * @see IUserAuthenticator#authenticateUser
-	 */
-	public void promptForUserInfo(final ICVSRepositoryLocation location, final IUserInfo userinfo, final String message) throws CVSException {
-	
-		// ask the user for a password
-		final String[] result = new String[2];
-		Display display = Display.getCurrent();
-		if (display != null) {
-			promptForPassword(location, userinfo.getUsername(), message, userinfo.isUsernameMutable(), result);
-		} else {
-			// sync exec in default thread
-			Display.getDefault().syncExec(new Runnable() {
-				public void run() {
-					promptForPassword(location, userinfo.getUsername(), message, userinfo.isUsernameMutable(), result);
-				}
-			});
-		}
-			
-		if (result[0] == null) {
-			throw new OperationCanceledException(Policy.bind("WorkbenchUserAuthenticator.cancelled"));
-		}
-		
-		if (userinfo.isUsernameMutable())
-			userinfo.setUsername(result[0]);
-		userinfo.setPassword(result[1]);
-	}
-	
-	/**
-	 * Asks the user to enter a password. Places the
-	 * results in the supplied string[].  result[0] must
-	 * contain the username, result[1] must contain the password.
-	 * If the user canceled, both values must be zero.
-	 * 
-	 * @param location  the location to obtain the password for
-	 * @param username  the username
-	 * @param message  a message to display to the user
-	 * @param userMutable  whether the user can be changed in the dialog
-	 * @param result  a String array of length two in which to put the result
-	 */
-	private void promptForPassword(final ICVSRepositoryLocation location, final String username, final String message, final boolean userMutable, final String[] result) {
-		Display display = Display.getCurrent();
-		Shell shell = new Shell(display);
-		UserValidationDialog dialog = new UserValidationDialog(shell, location.getLocation(), (username==null)?"":username, message);
-		dialog.setUsernameMutable(userMutable);
-		dialog.open();
-		shell.dispose();
-		
-		result[0] = dialog.getUsername();
-		result[1] = dialog.getPassword();
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java
deleted file mode 100644
index 6d97730..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * AddAction performs a 'cvs add' command on the selected resources. If a
- * container is selected, its children are recursively added.
- */
-public class AddAction extends TeamAction {
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {					
-					Hashtable table = getProviderMapping();
-					Set keySet = table.keySet();
-					monitor.beginTask("", keySet.size() * 1000);
-					monitor.setTaskName(Policy.bind("AddAction.adding"));
-					Iterator iterator = keySet.iterator();
-					while (iterator.hasNext()) {
-						IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-						CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-						List list = (List)table.get(provider);
-						IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-						provider.add(providerResources, IResource.DEPTH_INFINITE, subMonitor);
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				} finally {
-					monitor.done();
-				}
-			}
-		}, Policy.bind("AddAction.add"), this.PROGRESS_DIALOG);
-
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (((CVSTeamProvider)provider).isManaged(resources[i])) return false;
-		}
-		return true;
-	}
-
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddToWorkspaceAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddToWorkspaceAction.java
deleted file mode 100644
index b5a89b0..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddToWorkspaceAction.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.client.Checkout;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Add some remote resources to the workspace. Current implementation:
- * -Works only for remote folders
- * -Does not prompt for project name; uses folder name instead
- */
-public class AddToWorkspaceAction extends TeamAction {
-	/**
-	 * Returns the selected remote folders
-	 */
-	protected ICVSRemoteFolder[] getSelectedRemoteFolders() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ICVSRemoteFolder) {
-					if (!Checkout.ALIAS.isElementOf(((ICVSRemoteFolder)next).getLocalOptions())) {
-						resources.add(next);
-					}
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(ICVSRemoteFolder.class);
-					if (adapter instanceof ICVSRemoteFolder) {
-						if (!Checkout.ALIAS.isElementOf(((ICVSRemoteFolder)adapter).getLocalOptions())) {
-							resources.add(adapter);
-						}
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			return (ICVSRemoteFolder[])resources.toArray(new ICVSRemoteFolder[resources.size()]);
-		}
-		return new ICVSRemoteFolder[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					ICVSRemoteFolder[] folders = getSelectedRemoteFolders();
-					boolean yesToAll = false;
-					List targetProjects = new ArrayList();
-					List targetFolders = new ArrayList();
-					for (int i = 0; i < folders.length; i++) {
-						String name = folders[i].getName();
-						IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(name);
-						if (!yesToAll) {
-							switch (confirmOverwrite(project)) {
-								// yes
-								case 0:
-									targetFolders.add(folders[i]);
-									targetProjects.add(project);
-									break;
-								// no
-								case 1:
-									break;
-								// yes to all
-								case 2:
-									yesToAll = true;
-									targetFolders.add(folders[i]);
-									targetProjects.add(project);
-									break;
-								// cancel
-								case 3:
-								default:
-									return;
-							}
-						} else {
-							targetFolders.add(folders[i]);
-							targetProjects.add(project);
-						}
-					}
-					if (targetFolders.size() > 0) {
-						CVSProviderPlugin.getProvider().checkout((ICVSRemoteFolder[]) targetFolders.toArray(new ICVSRemoteFolder[targetFolders.size()]), (IProject[])targetProjects.toArray(new IProject[targetProjects.size()]), monitor);
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("AddToWorkspaceAction.add"), this.PROGRESS_DIALOG);
-	}
-	private int confirmOverwrite(IProject project) {
-		if (!project.exists()) return 0;
-		final MessageDialog dialog = 
-			new MessageDialog(shell, Policy.bind("AddToWorkspaceAction.confirmOverwrite"), null, Policy.bind("AddToWorkspaceAction.thisResourceExists", project.getName()), MessageDialog.QUESTION, 
-				new String[] {
-					IDialogConstants.YES_LABEL, 
-					IDialogConstants.NO_LABEL, 
-					IDialogConstants.YES_TO_ALL_LABEL, 
-					IDialogConstants.CANCEL_LABEL}, 
-				0);
-		final int[] result = new int[1];
-		shell.getDisplay().syncExec(new Runnable() {
-			public void run() {
-				result[0] = dialog.open();
-			}
-		});
-		return result[0];
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		ICVSRemoteFolder[] resources = getSelectedRemoteFolders();
-		if (resources.length == 0) return false;
-		for (int i = 0; i < resources.length; i++) {
-			if (resources[i] instanceof ICVSRepositoryLocation) return false;
-		}
-		return true;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AutoDefineTagsAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AutoDefineTagsAction.java
deleted file mode 100644
index b8cc10b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AutoDefineTagsAction.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.ccvs.core.ILogEntry;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.IRemoteResource;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.RepositoryManager;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-import org.eclipse.team.ui.actions.TeamAction;
-
-public class AutoDefineTagsAction extends TeamAction {
-	/**
-	 * Returns the selected remote files
-	 */
-	protected ICVSRemoteFile[] getSelectedRemoteFiles() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ICVSRemoteFile) {
-					resources.add(next);
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(ICVSRemoteFile.class);
-					if (adapter instanceof ICVSRemoteFile) {
-						resources.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			ICVSRemoteFile[] result = new ICVSRemoteFile[resources.size()];
-			resources.toArray(result);
-			return result;
-		}
-		return new ICVSRemoteFile[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
-				ICVSRemoteFile[] files = getSelectedRemoteFiles();
-				try {
-					manager.autoDefineTags(files, monitor);
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("AutoDefineTagsAction.defineTags"), this.PROGRESS_DIALOG);
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		ICVSRemoteFile[] resources = getSelectedRemoteFiles();
-		if (resources.length == 0) return false;
-		return true;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/BranchAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/BranchAction.java
deleted file mode 100644
index ac429c0..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/BranchAction.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.wizards.BranchWizard;
-import org.eclipse.team.ui.actions.TeamAction;
-
-/**
- * BranchAction tags the selected resources with a branch tag specified by the user,
- * and optionally updates the local resources to point to the new branch.
- */
-public class BranchAction extends TeamAction {
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		final Shell shell = getShell();
-		shell.getDisplay().syncExec(new Runnable() {
-			public void run() {
-				BranchWizard wizard = new BranchWizard();
-				wizard.setResources(getSelectedResources());
-				WizardDialog dialog = new WizardDialog(shell, wizard);
-				dialog.open();
-			}
-		});
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (!((CVSTeamProvider)provider).isManaged(resources[i])) return false;
-		}
-		return true;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAsAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAsAction.java
deleted file mode 100644
index c7fd6d0..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAsAction.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.client.Checkout;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Add a remote resource to the workspace. Current implementation:
- * -Works only for remote folders
- * -Does not prompt for project name; uses folder name instead
- */
-public class CheckoutAsAction extends TeamAction {
-	/**
-	 * Returns the selected remote folders
-	 */
-	protected ICVSRemoteFolder[] getSelectedRemoteFolders() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ICVSRemoteFolder) {
-					if (!Checkout.ALIAS.isElementOf(((ICVSRemoteFolder)next).getLocalOptions())) {
-						resources.add(next);
-					}
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(ICVSRemoteFolder.class);
-					if (adapter instanceof ICVSRemoteFolder) {
-						if (!Checkout.ALIAS.isElementOf(((ICVSRemoteFolder)adapter).getLocalOptions())) {
-							resources.add(adapter);
-						}
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			return (ICVSRemoteFolder[])resources.toArray(new ICVSRemoteFolder[resources.size()]);
-		}
-		return new ICVSRemoteFolder[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					final Shell shell = getShell();
-					ICVSRemoteFolder[] folders = getSelectedRemoteFolders();
-					if (folders.length != 1) return;
-					String name = folders[0].getName();
-					// Prompt for name
-					final int[] result = new int[] { InputDialog.OK };
-					final InputDialog dialog = new InputDialog(shell, Policy.bind("CheckoutAsAction.enterProjectTitle"), Policy.bind("CheckoutAsAction.enterProject"), name, null);
-					shell.getDisplay().syncExec(new Runnable() {
-						public void run() {
-							result[0] = dialog.open();
-						}
-					});
-					if (result[0] != InputDialog.OK) {
-						return;
-					}
-
-					IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(dialog.getValue());
-					if (project.exists()) {
-						// Make sure the user understands they will overwrite the project.
-						final boolean[] confirm = new boolean[] { false };
-						shell.getDisplay().syncExec(new Runnable() {
-							public void run() {
-								confirm[0] = MessageDialog.openConfirm(shell, Policy.bind("confirmOverwriteTitle"), Policy.bind("confirmOverwrite"));
-							}
-						});
-						if (!confirm[0]) return;
-					}
-					CVSProviderPlugin.getProvider().checkout(folders, new IProject[] { project }, monitor);
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("CheckoutAsAction.checkout"), this.PROGRESS_DIALOG);
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		return getSelectedRemoteFolders().length == 1;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java
deleted file mode 100644
index ee609c6..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.RepositoryManager;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Action for checking in files to a CVS provider.
- * Prompts the user for a release comment.
- */
-public class CommitAction extends TeamAction {
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
-					String comment = manager.promptForComment(getShell());
-					if (comment != null) {
-						manager.commit(getSelectedResources(), comment, monitor);
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("CommitAction.commit"), PROGRESS_DIALOG);
-	}
-	
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			CVSTeamProvider cvsProvider = (CVSTeamProvider)provider;
-			if (!cvsProvider.isManaged(resources[i])) return false;
-			if (!cvsProvider.isCheckedOut(resources[i])) return false;
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteResourcesAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteResourcesAction.java
deleted file mode 100644
index cae3956..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteResourcesAction.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.compare.CompareUI;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.ccvs.core.ILogEntry;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSCompareEditorInput;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.ResourceEditionNode;
-import org.eclipse.team.ui.actions.TeamAction;
-
-/**
- * This action is used for comparing two arbitrary resource
- * editions.
- */
-public class CompareRemoteResourcesAction extends TeamAction {
-	/* (non-Javadoc)
-	 * Method declared in IActionDelegate.
-	 */
-	public void run(IAction action) {
-		ICVSRemoteResource[] editions = getSelectedRemoteResources();
-		if (editions == null || editions.length != 2) {
-			MessageDialog.openError(getShell(), Policy.bind("CompareRemoteResourcesAction.unableToCompare"), Policy.bind("CompareRemoteResourcesAction.selectTwoResources"));
-			return;
-		}
-		ResourceEditionNode left = new ResourceEditionNode(editions[0]);
-		ResourceEditionNode right = new ResourceEditionNode(editions[1]);
-		CompareUI.openCompareEditor(new CVSCompareEditorInput(left, right));
-	}
-
-	/**
-	 * Returns the selected remote resources
-	 */
-	protected ICVSRemoteResource[] getSelectedRemoteResources() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection)selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ICVSRemoteResource) {
-					resources.add(next);
-					continue;
-				}
-				if (next instanceof ILogEntry) {
-					resources.add(((ILogEntry)next).getRemoteFile());
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(ICVSRemoteResource.class);
-					if (adapter instanceof ICVSRemoteResource) {
-						resources.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			ICVSRemoteResource[] result = new ICVSRemoteResource[resources.size()];
-			resources.toArray(result);
-			return result;
-		}
-		return new ICVSRemoteResource[0];
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		ICVSRemoteResource[] resources = getSelectedRemoteResources();
-		return resources.length == 2;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java
deleted file mode 100644
index c1d7aa1..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.CompareUI;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;
-import org.eclipse.team.internal.ccvs.core.resources.LocalResource;
-import org.eclipse.team.internal.ccvs.core.syncinfo.*;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.CVSCompareEditorInput;
-import org.eclipse.team.internal.ccvs.ui.CVSResourceNode;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.ResourceEditionNode;
-import org.eclipse.team.ui.actions.TeamAction;
-
-/**
- * Action for container compare with stream.
- */
-public class CompareWithRemoteAction extends TeamAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				String title = Policy.bind("CompareWithRemoteAction.compare");
-				try {
-					IResource[] resources = getSelectedResources();
-					if (resources.length != 1) return;
-					IResource resource = resources[0];
-					
-					CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(resources[0].getProject());
-		
-					LocalResource cvsResource = null;
-					if (resources[0].getType()==IResource.FILE) {
-						cvsResource = new LocalFile(resource.getLocation().toFile());
-					} else {
-						cvsResource = new LocalFolder(resource.getLocation().toFile());
-					}
-					
-					
-					CVSTag tag = null;
-					if (cvsResource.isFolder()) {
-						FolderSyncInfo folderInfo = ((LocalFolder)cvsResource).getFolderSyncInfo();
-						if (folderInfo!=null) {
-							tag = folderInfo.getTag();
-						}
-					} else {
-						ResourceSyncInfo info = cvsResource.getSyncInfo();
-						if (info!=null) {					
-							tag = info.getTag();
-						}
-					}
-					if (tag==null) {
-						if (cvsResource.getParent().isCVSFolder()) {
-							tag = cvsResource.getParent().getFolderSyncInfo().getTag();
-						} else {
-							// XXX: this is wrong :> should return an error
-							tag = CVSTag.DEFAULT;
-						}
-					}
-					
-					ICVSRemoteResource remoteResource = (ICVSRemoteResource)provider.getRemoteTree(resource, tag, new NullProgressMonitor());
-					// Just to be safe...
-					if (remoteResource == null) {
-						MessageDialog.openInformation(getShell(), Policy.bind("CompareWithRemoteAction.noRemote"), Policy.bind("CompareWithRemoteAction.noRemoteLong"));
-						return;
-					}
-					CompareUI.openCompareEditor(new CVSCompareEditorInput(new CVSResourceNode(resource), new ResourceEditionNode(remoteResource)));
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("CompareWithRemoteAction.compare"), PROGRESS_BUSYCURSOR);
-	}
-	
-	protected boolean isEnabled() {
-		IResource[] resources = getSelectedResources();
-		if (resources.length != 1) return false;
-		ITeamProvider provider = TeamPlugin.getManager().getProvider(resources[0].getProject());
-		if (provider == null) return false;
-		return provider.hasRemote(resources[0]);
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRevisionAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRevisionAction.java
deleted file mode 100644
index 228a7c1..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRevisionAction.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.compare.CompareUI;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ILogEntry;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.CVSCompareRevisionsInput;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.HistoryView;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-
-public class CompareWithRevisionAction extends TeamAction {
-	/**
-	 * Returns the selected remote file
-	 */
-	protected ICVSRemoteFile getSelectedRemoteFile() {
-		IResource[] resources = getSelectedResources();
-		if (resources.length != 1) return null;
-		if (!(resources[0] instanceof IFile)) return null;
-		IFile file = (IFile)resources[0];
-		CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(file.getProject());
-		try {
-			return (ICVSRemoteFile)provider.getRemoteResource(file);
-		} catch (TeamException e) {
-			handle(e, null, null);
-			return null;
-		}
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				ICVSRemoteFile file = getSelectedRemoteFile();
-				if (file == null) {
-					// No revisions for selected file
-					MessageDialog.openWarning(getShell(), Policy.bind("CompareWithRevisionAction.noRevisions"), Policy.bind("CompareWithRevisionAction.noRevisionsLong"));
-					return;
-				}
-				ILogEntry[] entries = null;
-				try {
-					entries = file.getLogEntries(new NullProgressMonitor());
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				}
-				CompareUI.openCompareEditor(new CVSCompareRevisionsInput((IFile)getSelectedResources()[0], entries));
-			}
-		}, Policy.bind("CompareWithRevisionAction.compare"), this.PROGRESS_BUSYCURSOR);
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		return resources.length == 1;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java
deleted file mode 100644
index 3a5fbb5..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.compare.CompareUI;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;
-import org.eclipse.team.internal.ccvs.core.resources.LocalResource;
-import org.eclipse.team.internal.ccvs.ui.CVSCompareEditorInput;
-import org.eclipse.team.internal.ccvs.ui.CVSResourceNode;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.ResourceEditionNode;
-import org.eclipse.team.internal.ccvs.ui.TagSelectionDialog;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Action for compare with tag.
- */
-public class CompareWithTagAction extends TeamAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				String title = Policy.bind("CompareWithTagAction.compare");
-				try {
-					IResource[] resources = getSelectedResources();
-					if (resources.length != 1) return;
-					IResource resource = resources[0];
-		
-					CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(resource.getProject());
-					LocalResource cvsResource = null;
-					if (resources[0].getType()==IResource.FILE) {
-						cvsResource = new LocalFile(resource.getLocation().toFile());
-					} else {
-						cvsResource = new LocalFolder(resource.getLocation().toFile());
-					}
-		
-					TagSelectionDialog dialog = new TagSelectionDialog(getShell(), resource);
-					dialog.setBlockOnOpen(true);
-					int result = dialog.open();
-					if (result == Dialog.CANCEL || dialog.getResult() == null) {
-						return;
-					}
-					CVSTag tag = dialog.getResult();
-					ICVSRemoteResource remoteResource = (ICVSRemoteResource)provider.getRemoteTree(resource, tag, new NullProgressMonitor());
-					CompareUI.openCompareEditor(new CVSCompareEditorInput(new CVSResourceNode(resource), new ResourceEditionNode(remoteResource)));
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("CompareWithTagAction.compare"), PROGRESS_BUSYCURSOR);
-			
-	}
-	
-	protected boolean isEnabled() {
-		return getSelectedResources().length == 1;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/DefineBranchAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/DefineBranchAction.java
deleted file mode 100644
index 594a8c2..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/DefineBranchAction.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.model.BranchCategory;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-import org.eclipse.team.ui.actions.TeamAction;
-
-/**
- * DefineTagAction remembers a tag by name
- */
-public class DefineBranchAction extends TeamAction {
-	/**
-	 * Returns the selected remote roots
-	 */
-	protected ICVSRepositoryLocation[] getSelectedRemoteRoots() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ICVSRepositoryLocation) {
-					resources.add(next);
-					continue;
-				}
-				if (next instanceof BranchCategory) {
-					resources.add(((BranchCategory)next).getRepository(next));
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(ICVSRepositoryLocation.class);
-					if (adapter instanceof ICVSRepositoryLocation) {
-						resources.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			ICVSRepositoryLocation[] result = new ICVSRepositoryLocation[resources.size()];
-			resources.toArray(result);
-			return result;
-		}
-		return new ICVSRepositoryLocation[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				final ICVSRepositoryLocation[] roots = getSelectedRemoteRoots();
-				if (roots.length != 1) return;
-				Shell shell = getShell();
-				shell.getDisplay().syncExec(new Runnable() {
-					public void run() {
-						InputDialog dialog = new InputDialog(getShell(), Policy.bind("DefineBranchAction.enterTag"), Policy.bind("DefineBranchAction.enterTagLong"), null, null);
-						if (dialog.open() == InputDialog.OK) {
-							CVSTag tag = new CVSTag(dialog.getValue(), CVSTag.BRANCH);
-							CVSUIPlugin.getPlugin().getRepositoryManager().addBranchTags(roots[0], new BranchTag[] {new BranchTag(tag, roots[0])});
-						}
-					}
-				});
-			}
-		}, Policy.bind("DefineBranchAction.tag"), this.PROGRESS_BUSYCURSOR);
-
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		ICVSRepositoryLocation[] roots = getSelectedRemoteRoots();
-		if (roots.length != 1) return false;
-		return true;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/DefineVersionAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/DefineVersionAction.java
deleted file mode 100644
index 834153f..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/DefineVersionAction.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.model.RemoteModule;
-import org.eclipse.team.ui.actions.TeamAction;
-
-/**
- * DefineTagAction remembers a tag by name.
- * 
- * This action needs to be reworked in order to associate tags with individual
- * projects, rather than define them globally (for all projects).
- * 
- * The selection object for this action is a RemoteModule.
- */
-public class DefineVersionAction extends TeamAction {
-	/**
-	 * Returns the selected remote projects
-	 */
-	protected RemoteModule[] getSelectedRemoteModules() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection)selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof RemoteModule) {
-					resources.add(next);
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(RemoteModule.class);
-					if (adapter instanceof RemoteModule) {
-						resources.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			RemoteModule[] result = new RemoteModule[resources.size()];
-			resources.toArray(result);
-			return result;
-		}
-		return new RemoteModule[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				final RemoteModule[] projects = getSelectedRemoteModules();
-				if (projects.length != 1) return;
-				Shell shell = getShell();
-				shell.getDisplay().syncExec(new Runnable() {
-					public void run() {
-						InputDialog dialog = new InputDialog(getShell(), Policy.bind("DefineVersionAction.enterTag"), Policy.bind("DefineVersionAction.enterTagLong"), null, null);
-						if (dialog.open() == InputDialog.OK) {
-							ICVSRemoteResource resource = projects[0].getCVSResource();
-							CVSTag tag = new CVSTag(dialog.getValue(), CVSTag.VERSION);
-							CVSUIPlugin.getPlugin().getRepositoryManager().addVersionTags(resource, new CVSTag[] {tag});
-						}
-					}
-				});
-			}
-		}, Policy.bind("DefineVersionAction.tag"), this.PROGRESS_DIALOG);
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		RemoteModule[] projects = getSelectedRemoteModules();
-		if (projects.length != 1) return false;
-		return true;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/GenerateDiffFileAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/GenerateDiffFileAction.java
deleted file mode 100644
index 4000a9e..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/GenerateDiffFileAction.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-import java.util.HashSet;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.wizards.GenerateDiffFileWizard;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Action to generate a patch file using the CVS diff command.
- * 
- * NOTE: This is a temporary action and should eventually be replaced
- * by a create patch command in the compare viewer.
- */
-public class GenerateDiffFileAction implements IObjectActionDelegate {
-	private ISelection selection;
-	private IWorkbenchPart part;
-
-	public GenerateDiffFileAction() {
-	}
-	/**
-	 * Makes sure that the projects of all selected resources are shared.
-	 * Returns true if all resources are shared, and false otherwise.
-	 */
-	protected boolean checkSharing(IResource[] resources) throws CoreException {
-		HashSet projects = new HashSet(10);
-
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = TeamPlugin.getManager().getProvider(resources[i]);
-			if (!(provider instanceof CVSTeamProvider))
-				return false;
-		}
-		return true;
-	}
-	/**
-	 * Convenience method: extract all <code>IResources</code> from given selection.
-	 * Never returns null.
-	 */
-	public static IResource[] getResources(ISelection selection) {
-		ArrayList tmp = new ArrayList();
-		if (selection instanceof IStructuredSelection) {
-			Object[] s = ((IStructuredSelection) selection).toArray();
-			for (int i = 0; i < s.length; i++) {
-				Object o = s[i];
-				if (o instanceof IResource) {
-					tmp.add(o);
-					continue;
-				}
-				if (o instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) o;
-					Object adapter = a.getAdapter(IResource.class);
-					if (adapter instanceof IResource)
-						tmp.add(adapter);
-					continue;
-				}
-			}
-		}
-		IResource[] resourceSelection = new IResource[tmp.size()];
-		tmp.toArray(resourceSelection);
-		return resourceSelection;
-	}
-	/**
-	 * Convenience method for getting the current shell.
-	 */
-	protected Shell getShell() {
-		return CVSUIPlugin
-			.getPlugin()
-			.getWorkbench()
-			.getActiveWorkbenchWindow()
-			.getShell();
-	}
-	/** (Non-javadoc)
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		final String title = Policy.bind("GenerateCVSDiff.title");
-		final String message = Policy.bind("GenerateCVSDiff.pageTitle");
-		try {
-			final IResource[] resources = getResources(selection);
-			if (!checkSharing(resources)) {
-				//canceled
-				return;
-			}
-
-			GenerateDiffFileWizard wizard =
-				new GenerateDiffFileWizard(new StructuredSelection(resources), resources);
-			wizard.setWindowTitle(title);
-			WizardDialog dialog = new WizardDialog(getShell(), wizard);
-			dialog.setMinimumPageSize(350, 250);
-			dialog.open();
-		} catch (CoreException e) {
-			ErrorDialog.openError(getShell(), title, null, e.getStatus());
-		}
-	}
-	/** (Non-javadoc)
-	 * Method declared on IActionDelegate.
-	 */
-	public void selectionChanged(IAction action, ISelection s) {
-		selection = s;
-		IResource[] resources = getResources(s);
-		for (int i = 0; i < resources.length; i++) {
-			if (!resources[i].isAccessible()) {
-				action.setEnabled(false);
-				return;
-			}
-		}
-		action.setEnabled(true);
-	}
-	/** (Non-javadoc)
-	 * Method declared on IObjectActionDelegate.
-	 */
-	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
-		this.part = targetPart;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/IgnoreAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/IgnoreAction.java
deleted file mode 100644
index cc9899c..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/IgnoreAction.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-public class IgnoreAction extends TeamAction {
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		for (int i = 0; i < resources.length; i++) {
-			IResource resource = resources[i];
-			ICVSResource cvsResource = null;
-			switch (resource.getType()) {
-				case IResource.FILE:
-					cvsResource = new LocalFile(resource.getLocation().toFile());
-					break;
-				case IResource.FOLDER:
-					cvsResource = new LocalFolder(resource.getLocation().toFile());
-					break;
-				default:
-					return false;
-			}
-			if (cvsResource.isManaged()) return false;
-			if (cvsResource.isIgnored()) return false;
-		}
-		return true;
-	}
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				IResource[] resources = getSelectedResources();
-				for (int i = 0; i < resources.length; i++) {
-					IResource resource = resources[i];
-					ICVSResource cvsResource = null;
-					switch (resource.getType()) {
-						case IResource.FILE:
-							cvsResource = new LocalFile(resource.getLocation().toFile());
-							break;
-						case IResource.FOLDER:
-							cvsResource = new LocalFolder(resource.getLocation().toFile());
-							break;
-					}
-					if (cvsResource != null) {
-						try {
-							cvsResource.setIgnored();
-						} catch (CVSException e) {
-							ErrorDialog.openError(getShell(), null, null, e.getStatus());
-						}
-					}
-				}
-			}
-		}, Policy.bind("IgnoreAction.ignore"), PROGRESS_BUSYCURSOR);
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MergeAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MergeAction.java
deleted file mode 100644
index c5151d2..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MergeAction.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.merge.*;
-import org.eclipse.team.internal.ccvs.ui.merge.MergeWizard;
-import org.eclipse.team.ui.actions.TeamAction;
-
-public class MergeAction extends TeamAction {
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		final Shell shell = getShell();
-		shell.getDisplay().syncExec(new Runnable() {
-			public void run() {
-				MergeWizard wizard = new MergeWizard();
-				wizard.setProject(getSelectedProjects()[0]);
-				WizardDialog dialog = new WizardDialog(shell, wizard);
-				dialog.open();
-			}
-		});
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IProject[] projects = getSelectedProjects();
-		return projects.length == 1;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenLogEntryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenLogEntryAction.java
deleted file mode 100644
index 1ebf516..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenLogEntryAction.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.ILogEntry;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.RemoteFileEditorInput;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-
-public class OpenLogEntryAction extends TeamAction {
-	/**
-	 * Returns the selected remote files
-	 */
-	protected ILogEntry[] getSelectedLogEntries() {
-		ArrayList entries = null;
-		if (!selection.isEmpty()) {
-			entries = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ILogEntry) {
-					entries.add((ILogEntry)next);
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(ILogEntry.class);
-					if (adapter instanceof ILogEntry) {
-						entries.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (entries != null && !entries.isEmpty()) {
-			ILogEntry[] result = new ILogEntry[entries.size()];
-			entries.toArray(result);
-			return result;
-		}
-		return new ILogEntry[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				IWorkbenchPage page = CVSUIPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow().getActivePage();
-				final ILogEntry[] entries = getSelectedLogEntries();
-				for (int i = 0; i < entries.length; i++) {
-					try {
-						if (entries[i].isDeletion()) {
-							MessageDialog.openError(getShell(), Policy.bind("OpenLogEntryAction.deletedTitle"), Policy.bind("OpenLogEntryAction.deleted"));
-						} else {
-							page.openEditor(new RemoteFileEditorInput(entries[i].getRemoteFile()), "org.eclipse.ui.DefaultTextEditor");
-						}
-					} catch (PartInitException e) {
-						throw new InvocationTargetException(e);
-					}
-				}
-			}
-		}, Policy.bind("OpenLogEntryAction.open"), PROGRESS_BUSYCURSOR);
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		ILogEntry[] entries = getSelectedLogEntries();
-		if (entries.length == 0) return false;
-		return true;
-	}
-	/** (Non-javadoc)
-	 * Method declared on IActionDelegate.
-	 */
-	public void selectionChanged(IAction action, ISelection selection) {
-		if (selection instanceof IStructuredSelection) {
-			this.selection = (IStructuredSelection) selection;
-			//this action can be invoked by double-click, in which case
-			//there is no target action
-			if (action != null) {
-				try {
-					action.setEnabled(isEnabled());
-				} catch (TeamException e) {
-					action.setEnabled(false);
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenRemoteFileAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenRemoteFileAction.java
deleted file mode 100644
index 932971e..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenRemoteFileAction.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ILogEntry;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.RemoteFileEditorInput;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-
-public class OpenRemoteFileAction extends TeamAction {
-	/**
-	 * Returns the selected remote files
-	 */
-	protected ICVSRemoteFile[] getSelectedRemoteFiles() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ICVSRemoteFile) {
-					resources.add(next);
-					continue;
-				}
-				if (next instanceof ILogEntry) {
-					resources.add(((ILogEntry)next).getRemoteFile());
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(ICVSRemoteFile.class);
-					if (adapter instanceof ICVSRemoteFile) {
-						resources.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			ICVSRemoteFile[] result = new ICVSRemoteFile[resources.size()];
-			resources.toArray(result);
-			return result;
-		}
-		return new ICVSRemoteFile[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				IWorkbenchPage page = CVSUIPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow().getActivePage();
-				ICVSRemoteFile[] files = getSelectedRemoteFiles();
-				for (int i = 0; i < files.length; i++) {
-					try {
-						page.openEditor(new RemoteFileEditorInput(files[i]), "org.eclipse.ui.DefaultTextEditor");
-					} catch (PartInitException e) {
-						throw new InvocationTargetException(e);
-					}
-				}
-			}
-		}, Policy.bind("OpenRemoteFileAction.open"), this.PROGRESS_BUSYCURSOR);
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		ICVSRemoteFile[] resources = getSelectedRemoteFiles();
-		if (resources.length == 0) return false;
-		return true;
-	}
-	/** (Non-javadoc)
-	 * Method declared on IActionDelegate.
-	 */
-	public void selectionChanged(IAction action, ISelection selection) {
-		if (selection instanceof IStructuredSelection) {
-			this.selection = (IStructuredSelection) selection;
-			//this action can be invoked by double-click, in which case
-			//there is no target action
-			if (action != null) {
-				try {
-					action.setEnabled(isEnabled());
-				} catch (TeamException e) {
-					action.setEnabled(false);
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveBranchTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveBranchTagAction.java
deleted file mode 100644
index dd253c0..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveBranchTagAction.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.RepositoryManager;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-import org.eclipse.team.ui.actions.TeamAction;
-
-/**
- * RemoveBranchTagAction removes a tag.
- */
-public class RemoveBranchTagAction extends TeamAction {
-	/**
-	 * Returns the selected versions
-	 */
-	protected BranchTag[] getSelectedBranchTags() {
-		ArrayList tags = null;
-		if (!selection.isEmpty()) {
-			tags = new ArrayList();
-			Iterator elements = ((IStructuredSelection)selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof BranchTag) {
-					tags.add(next);
-					continue;
-				}
-			}
-		}
-		if (tags != null && !tags.isEmpty()) {
-			BranchTag[] result = new BranchTag[tags.size()];
-			tags.toArray(result);
-			return result;
-		}
-		return new BranchTag[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				BranchTag[] tags = getSelectedBranchTags();
-				if (tags.length == 0) return;
-				RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
-				for (int i = 0; i < tags.length; i++) {
-					BranchTag tag = tags[i];
-					manager.removeBranchTag(tag.getRoot(), new BranchTag[] {tag});
-				}
-			}
-		}, Policy.bind("RemoveBranchTagAction.removeTag"), this.PROGRESS_BUSYCURSOR);
-
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		BranchTag[] tags = getSelectedBranchTags();
-		if (tags.length == 0) return false;
-		for (int i = 0; i < tags.length; i++) {
-			if (tags[i].getTag().getName().equals("HEAD")) return false;
-		}
-		return true;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveModuleVersionAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveModuleVersionAction.java
deleted file mode 100644
index be9c586..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveModuleVersionAction.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.RepositoryManager;
-import org.eclipse.team.ui.actions.TeamAction;
-
-/**
- * RemoveModuleVersionAction removes a tag.
- */
-public class RemoveModuleVersionAction extends TeamAction {
-	/**
-	 * Returns the selected versions
-	 */
-	protected ICVSRemoteFolder[] getSelectedModuleVersions() {
-		ArrayList tags = null;
-		if (!selection.isEmpty()) {
-			tags = new ArrayList();
-			Iterator elements = ((IStructuredSelection)selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ICVSRemoteFolder) {
-					tags.add(next);
-					continue;
-				}
-			}
-		}
-		if (tags != null && !tags.isEmpty()) {
-			ICVSRemoteFolder[] result = new ICVSRemoteFolder[tags.size()];
-			tags.toArray(result);
-			return result;
-		}
-		return new ICVSRemoteFolder[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				ICVSRemoteFolder[] folders = getSelectedModuleVersions();
-				if (folders.length == 0) return;
-				RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
-				for (int i = 0; i < folders.length; i++) {
-					ICVSRemoteFolder folder = folders[i];
-					manager.removeVersionTags(folder, new CVSTag[] {folder.getTag()});
-				}
-			}
-		}, Policy.bind("RemoveModuleVersionAction.removeTag"), this.PROGRESS_BUSYCURSOR);
-
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		ICVSRemoteFolder[] versions = getSelectedModuleVersions();
-		if (versions.length == 0) return false;
-		for (int i = 0; i < versions.length; i++) {
-			CVSTag tag = versions[i].getTag();
-			if (tag == null) return false;
-			if (tag.getType() != CVSTag.VERSION) return false;
-			if (versions[i].getRemoteParent() != null) return false;
-		}
-		return true;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveRootAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveRootAction.java
deleted file mode 100644
index aa2b7b8..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RemoveRootAction.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-
-/**
- * RemoveRootAction removes a repository
- */
-public class RemoveRootAction extends TeamAction {
-	/**
-	 * Returns the selected remote files
-	 */
-	protected ICVSRepositoryLocation[] getSelectedRemoteRoots() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ICVSRepositoryLocation) {
-					resources.add(next);
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(ICVSRepositoryLocation.class);
-					if (adapter instanceof ICVSRemoteFile) {
-						resources.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			ICVSRepositoryLocation[] result = new ICVSRepositoryLocation[resources.size()];
-			resources.toArray(result);
-			return result;
-		}
-		return new ICVSRepositoryLocation[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				ICVSRepositoryLocation[] roots = getSelectedRemoteRoots();
-				if (roots.length == 0) return;
-				ICVSProvider provider = CVSProviderPlugin.getProvider();
-				for (int i = 0; i < roots.length; i++) {
-					try {
-						
-						// Check if any projects are shared with the repository
-						boolean shared = false;
-						IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
-						ITeamManager manager = TeamPlugin.getManager();
-						for (int j = 0; j < projects.length; j++) {
-							ITeamProvider teamProvider = manager.getProvider(projects[j]);
-							if (teamProvider instanceof CVSTeamProvider) {
-								CVSTeamProvider cvsProvider = (CVSTeamProvider)teamProvider;
-								if (cvsProvider.getRemoteRoot().equals(roots[i])) {
-									shared = true;
-									break;
-								}
-							}
-						}
-			
-						// This will notify the RepositoryManager of the removal
-						if (shared) {
-							Shell shell = getShell();
-							final String location = roots[i].getLocation();
-							shell.getDisplay().syncExec(new Runnable() {
-								public void run() {
-									MessageDialog.openInformation(getShell(), "Unable to Discard Location", "Projects in the local workspace are shared with " + location);
-								}
-							});
-						} else {
-							provider.disposeRepository(roots[i]);
-						}
-					} catch (CVSException e) {
-						throw new InvocationTargetException(e);
-					}
-				}
-			}
-		}, Policy.bind("RemoveRootAction.removeRoot"), this.PROGRESS_DIALOG);
-
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		ICVSRepositoryLocation[] roots = getSelectedRemoteRoots();
-		return roots.length > 0;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithAction.java
deleted file mode 100644
index 9ea92bb..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithAction.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceVisitor;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.ui.actions.TeamAction;
-
-public abstract class ReplaceWithAction extends TeamAction {
-	/**
-	 * Copied from CVSDecorationRunnable
-	 */
-	protected boolean isDirty(IResource resource) {
-		final CoreException DECORATOR_EXCEPTION = new CoreException(new Status(IStatus.OK, "id", 1, "", null));
-		try {
-			resource.accept(new IResourceVisitor() {
-				public boolean visit(IResource resource) throws CoreException {
-
-					// a project can't be dirty, continue with its children
-					if (resource.getType() == IResource.PROJECT) {
-						return true;
-					}
-					
-					// if the resource does not exist in the workbench or on the file system, stop searching.
-					if(!resource.exists()) {
-						return false;
-					}
-
-					ICVSResource cvsResource;
-					if (resource.getType() == IResource.FILE) {
-						cvsResource = new LocalFile(resource.getLocation().toFile());
-					} else {
-						cvsResource = new LocalFolder(resource.getLocation().toFile());
-					}
-
-					try {
-						if (!cvsResource.isManaged()) {
-							if (cvsResource.isIgnored()) {
-								return false;
-							} else {
-								// new resource, show as dirty
-								throw DECORATOR_EXCEPTION;
-							}
-						}
-						if (!cvsResource.isFolder()) {
-							if (((ICVSFile) cvsResource).isModified()) {
-								// file has changed, show as dirty
-								throw DECORATOR_EXCEPTION;
-							}
-						}
-					} catch (CVSException e) {
-						return true;
-					}
-					// no change -- keep looking in children
-					return true;
-				}
-			}, IResource.DEPTH_INFINITE, true);
-		} catch (CoreException e) {
-			//if our exception was caught, we know there's a dirty child
-			return e == DECORATOR_EXCEPTION;
-		}
-		return false;
-	}	
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java
deleted file mode 100644
index dc490c5..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-public class ReplaceWithRemoteAction extends ReplaceWithAction {
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					// Check if any resource is dirty.
-					IResource[] resources = getSelectedResources();
-					for (int i = 0; i < resources.length; i++) {
-						IResource resource = resources[i];
-						CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(resource.getProject());
-						if (isDirty(resource)) {
-							// Warn the user they have local changes that will be overwritten
-							final Shell shell = getShell();
-							final boolean[] result = new boolean[] { false };
-							shell.getDisplay().syncExec(new Runnable() {
-								public void run() {
-									result[0] = MessageDialog.openQuestion(getShell(), Policy.bind("question"), Policy.bind("localChanges"));
-								}
-							});
-							if (!result[0]) return;
-						}						
-					}
-					// Do the replace
-					Hashtable table = getProviderMapping();
-					Set keySet = table.keySet();
-					monitor.beginTask("", keySet.size() * 1000);
-					monitor.setTaskName(Policy.bind("ReplaceWithRemoteAction.replacing"));
-					Iterator iterator = keySet.iterator();
-					while (iterator.hasNext()) {
-						IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-						ITeamProvider provider = (ITeamProvider)iterator.next();
-						List list = (List)table.get(provider);
-						IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-						provider.get(providerResources, IResource.DEPTH_INFINITE, subMonitor);
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				} finally {
-					monitor.done();
-				}
-			}
-		}, Policy.bind("ReplaceWithRemoteAction.problemMessage"), PROGRESS_DIALOG);
-	}
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (!provider.hasRemote(resources[i])) return false;
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithTagAction.java
deleted file mode 100644
index fa77398..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithTagAction.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.TagSelectionDialog;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Action for replace with tag.
- */
-public class ReplaceWithTagAction extends ReplaceWithAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					IResource[] resources = getSelectedResources();
-					if (resources.length != 1) return;
-					IResource resource = resources[0];
-		
-					CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(resource.getProject());
-					if (isDirty(resource)) {
-						final Shell shell = getShell();
-						final boolean[] result = new boolean[] { false };
-						shell.getDisplay().syncExec(new Runnable() {
-							public void run() {
-								result[0] = MessageDialog.openQuestion(getShell(), Policy.bind("question"), Policy.bind("localChanges"));
-							}
-						});
-						if (!result[0]) return;
-					}
-					
-					TagSelectionDialog dialog = new TagSelectionDialog(getShell(), resource);
-					dialog.setBlockOnOpen(true);
-					if (dialog.open() == Dialog.CANCEL) {
-						return;
-					}
-					CVSTag tag = dialog.getResult();
-					if (tag == null) {
-						return;
-					}
-					provider.get(new IResource[] { resource }, IResource.DEPTH_INFINITE, tag, monitor);
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("ReplaceWithTagAction.replace"), this.PROGRESS_BUSYCURSOR);			
-	}
-	
-	protected boolean isEnabled() {
-		return getSelectedResources().length == 1;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowHistoryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowHistoryAction.java
deleted file mode 100644
index 9797267..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowHistoryAction.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.HistoryView;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-
-public class ShowHistoryAction extends TeamAction {
-	/**
-	 * Returns the selected remote files
-	 */
-	protected ICVSRemoteFile[] getSelectedRemoteFiles() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof ICVSRemoteFile) {
-					resources.add(next);
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable)next;
-					Object adapter = a.getAdapter(ICVSRemoteFile.class);
-					if (adapter instanceof ICVSRemoteFile) {
-						resources.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			ICVSRemoteFile[] result = new ICVSRemoteFile[resources.size()];
-			resources.toArray(result);
-			return result;
-		}
-		return new ICVSRemoteFile[0];
-	}
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				ICVSRemoteFile[] files = getSelectedRemoteFiles();
-				HistoryView view = HistoryView.openInActivePerspective();
-				if (view != null) {
-					view.showHistory(files[0]);
-				}
-			}
-		}, Policy.bind("ShowHistoryAction.showHistory"), this.PROGRESS_BUSYCURSOR);
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		ICVSRemoteFile[] resources = getSelectedRemoteFiles();
-		return resources.length == 1;
-	}
-	/** (Non-javadoc)
-	 * Method declared on IActionDelegate.
-	 */
-	public void selectionChanged(IAction action, ISelection selection) {
-		if (selection instanceof IStructuredSelection) {
-			this.selection = (IStructuredSelection) selection;
-			//this action can be invoked by double-click, in which case
-			//there is no target action
-			if (action != null) {
-				try {
-					action.setEnabled(isEnabled());
-				} catch (TeamException e) {
-					action.setEnabled(false);
-					handle(e, null, null);
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java
deleted file mode 100644
index 13fd0c6..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.HistoryView;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-
-public class ShowResourceInHistoryAction extends TeamAction {
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				IResource[] resources = getSelectedResources();
-				if (resources.length != 1) return;
-				HistoryView view = HistoryView.openInActivePerspective();
-				if (view != null) {
-					view.showHistory(resources[0]);
-				}
-			}
-		}, Policy.bind("ShowHistoryAction.showHistory"), this.PROGRESS_BUSYCURSOR);
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		return resources.length == 1;
-	}
-	/** (Non-javadoc)
-	 * Method declared on IActionDelegate.
-	 */
-	public void selectionChanged(IAction action, ISelection selection) {
-		if (selection instanceof IStructuredSelection) {
-			this.selection = (IStructuredSelection) selection;
-			//this action can be invoked by double-click, in which case
-			//there is no target action
-			if (action != null) {
-				try {
-					action.setEnabled(isEnabled());
-				} catch (TeamException e) {
-					action.setEnabled(false);
-					handle(e, null, null);
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java
deleted file mode 100644
index f8365e1..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.util.ArrayList;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.sync.CVSSyncCompareInput;
-import org.eclipse.team.ui.TeamUIPlugin;
-import org.eclipse.team.ui.sync.SyncView;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-
-/**
- * Action for catchup/release in popup menus.
- */
-public class SyncAction implements IObjectActionDelegate {
-	private ISelection selection;
-	
-	/**
-	 * Convenience method: extract all <code>IResources</code> from given selection.
-	 * Never returns null.
-	 */
-	public static IResource[] getResources(ISelection selection) {
-		ArrayList tmp = new ArrayList();
-		if (selection instanceof IStructuredSelection) {
-			Object[] s = ((IStructuredSelection) selection).toArray();
-			for (int i = 0; i < s.length; i++) {
-				Object o = s[i];
-				if (o instanceof IResource) {
-					tmp.add(o);
-					continue;
-				}
-				if (o instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) o;
-					Object adapter = a.getAdapter(IResource.class);
-					if (adapter instanceof IResource)
-						tmp.add(adapter);
-					continue;
-				}
-			}
-		}
-		IResource[] resourceSelection = new IResource[tmp.size()];
-		tmp.toArray(resourceSelection);
-		return resourceSelection;
-	}
-	
-	/**
-	 * Convenience method for getting the current shell.
-	 */
-	protected Shell getShell() {
-		return TeamUIPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell();
-	}
-
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		String title = Policy.bind("SyncAction.sync");
-		IResource[] resources = getResources(selection);
-		SyncView view = (SyncView)CVSUIPlugin.getActivePage().findView(SyncView.VIEW_ID);
-		if (view == null) {
-			view = SyncView.findInActivePerspective();
-		}
-		if (view != null) {
-			try {
-				CVSUIPlugin.getActivePage().showView(SyncView.VIEW_ID);
-			} catch (PartInitException e) {
-				CVSUIPlugin.log(e.getStatus());
-			}
-			// What happens when resources from the same project are selected?
-			view.showSync(new CVSSyncCompareInput(resources));
-		}
-	}
-	
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void selectionChanged(IAction action, ISelection s) {
-		selection = s;
-		IResource[] resources = getResources(s);
-		for (int i = 0; i < resources.length; i++) {
-			if (!resources[i].isAccessible()) {
-				action.setEnabled(false);
-				return;
-			}
-			ITeamProvider provider = TeamPlugin.getManager().getProvider(resources[i].getProject());
-			if (provider == null) {
-				action.setEnabled(false);
-				return;
-			}
-			if (!(provider instanceof CVSTeamProvider)) {
-				action.setEnabled(false);
-				return;
-			}
-		}
-		action.setEnabled(true);
-	}
-	
-	/*
-	 * Method declared on IObjectActionDelegate.
-	 */
-	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java
deleted file mode 100644
index 470550b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.IInputValidator;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-
-/**
- * TagAction tags the selected resources with a version tag specified by the user.
- */
-public class TagAction extends TeamAction {
-	// The previously remembered tag
-	private static String previousTag = "";
-	
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException {
-				try {
-					final Shell s = getShell();
-					final String[] result = new String[1];
-					s.getDisplay().syncExec(new Runnable() {
-						public void run() {
-							// Prompt for the tag
-							IInputValidator validator = new IInputValidator() {
-								public String isValid(String tagName) {
-									IStatus status = CVSTag.validateTagName(tagName);
-									if (status.isOK()) {
-										return null;
-									} else {
-										return status.getMessage();
-									}
-								}
-							};
-							InputDialog dialog = new InputDialog(s, Policy.bind("TagAction.tagResources"), Policy.bind("TagAction.enterTag"), previousTag, validator);
-							if (dialog.open() != InputDialog.OK) return;
-							result[0] = dialog.getValue();
-						}
-					});
-					if (result[0] == null) return;
-					Hashtable table = getProviderMapping();
-					Set keySet = table.keySet();
-					monitor.beginTask("", keySet.size() * 1000);
-					Iterator iterator = keySet.iterator();
-					while (iterator.hasNext()) {
-						IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-						CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-						List list = (List)table.get(provider);
-						IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-						provider.tag(providerResources, IResource.DEPTH_INFINITE, new CVSTag(result[0], CVSTag.VERSION), subMonitor);
-					}	
-					previousTag = result[0];							
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("TagAction.tag"), this.PROGRESS_DIALOG);
-
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (!((CVSTeamProvider)provider).isManaged(resources[i])) return false;
-		}
-		return true;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java
deleted file mode 100644
index a078d7c..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;
-import org.eclipse.team.internal.ccvs.ui.CVSDecorator;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * UpdateAction performs a 'cvs update' command on the selected resources.
- * If conflicts are present (file has been changed both remotely and locally),
- * the changes will be merged into the local file such that the user must
- * resolve the conflicts. This action is temporary code; it will be removed
- * when a functional synchronize view has been implemented.
- */
-public class UnmanageAction extends TeamAction {
-	
-	static class DeleteProjectDialog extends MessageDialog {
-
-		private IProject[] projects;
-		private boolean deleteContent = false;
-		private Button radio1;
-		private Button radio2;
-		
-		DeleteProjectDialog(Shell parentShell, IProject[] projects) {
-			super(
-				parentShell, 
-				getTitle(projects), 
-				null,	// accept the default window icon
-				getMessage(projects),
-				MessageDialog.QUESTION, 
-				new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL},
-				0); 	// yes is the default
-			this.projects = projects;
-		}
-		
-		static String getTitle(IProject[] projects) {
-			if (projects.length == 1)
-				return Policy.bind("Unmanage.title");  //$NON-NLS-1$
-			else
-				return Policy.bind("Unmanage.titleN");  //$NON-NLS-1$
-		}
-		
-		static String getMessage(IProject[] projects) {
-			if (projects.length == 1) {
-				IProject project = projects[0];
-				return Policy.bind("Unmanage.message", project.getName());  //$NON-NLS-1$
-			}
-			else {
-				return Policy.bind("Unmanage.messageN", new Integer(projects.length).toString());  //$NON-NLS-1$
-			}
-		}
-		
-		protected Control createCustomArea(Composite parent) {
-			Composite composite = new Composite(parent, SWT.NONE);
-			composite.setLayout(new GridLayout());
-			radio1 = new Button(composite, SWT.RADIO);
-			radio1.addSelectionListener(selectionListener);
-			
-			radio1.setText(Policy.bind("Unmanage.option2"));
-
-			radio2 = new Button(composite, SWT.RADIO);
-			radio2.addSelectionListener(selectionListener);
-
-			radio2.setText(Policy.bind("Unmanage.option1"));
-			
-			// set initial state
-			radio1.setSelection(deleteContent);
-			radio2.setSelection(!deleteContent);
-			
-			return composite;
-		}
-		
-		private SelectionListener selectionListener = new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				Button button = (Button) e.widget;
-				if (button.getSelection()) {
-					deleteContent = (button == radio1);
-				}
-			}
-		};
-		
-		public boolean getDeleteContent() {
-			return deleteContent;
-		}
-	}
-	
-	private boolean deleteContent = false;
-	
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		final List unmanagedProjects = new ArrayList();
-		
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {					
-					if(confirmDeleteProjects()) {		
-						Hashtable table = getProviderMapping();
-						Set keySet = table.keySet();
-						monitor.beginTask("", keySet.size() * 1000);
-						monitor.setTaskName(Policy.bind("Unmanage.unmanaging"));
-						Iterator iterator = keySet.iterator();
-						while (iterator.hasNext()) {
-							IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-							subMonitor.beginTask(null, 100);
-							CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-							List list = (List)table.get(provider);
-							IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-							for (int i = 0; i < providerResources.length; i++) {
-								IResource resource = providerResources[i];
-								LocalFolder folder = new LocalFolder(resource.getLocation().toFile());
-								if(deleteContent) {
-									folder.unmanage();
-									CVSProviderPlugin.getSynchronizer().reload(folder.getLocalFile(), Policy.subMonitorFor(subMonitor, 90));
-								}
-								TeamPlugin.getManager().removeProvider((IProject)resource, Policy.subMonitorFor(subMonitor, 10));							
-								CVSDecorator.refresh(resource);
-							}											
-						}										
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				} finally {
-					monitor.done();
-				}
-			}
-		}, Policy.bind("Unmanage.unmanaging"), this.PROGRESS_DIALOG);
-	}
-
-	boolean confirmDeleteProjects() {
-		final int[] result = new int[] { MessageDialog.OK };
-		IProject[] projects = getSelectedProjects();
-		final DeleteProjectDialog dialog = new DeleteProjectDialog(shell, projects);
-		shell.getDisplay().syncExec(new Runnable() {
-			public void run() {
-				result[0] = dialog.open();
-			}
-		});		
-		deleteContent = dialog.getDeleteContent();
-		return result[0] == 0;  // YES
-	}
-	
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			if(resources[i].getType()!=IResource.PROJECT) return false;
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (!((CVSTeamProvider)provider).isManaged(resources[i])) return false;
-		}
-		return true;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateAction.java
deleted file mode 100644
index e496786..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateAction.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.actions.TeamAction;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * UpdateAction performs a 'cvs update' command on the selected resources.
- * If conflicts are present (file has been changed both remotely and locally),
- * the changes will be merged into the local file such that the user must
- * resolve the conflicts. This action is temporary code; it will be removed
- * when a functional synchronize view has been implemented.
- */
-public class UpdateAction extends TeamAction {
-	/*
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {					
-					Hashtable table = getProviderMapping();
-					Set keySet = table.keySet();
-					monitor.beginTask("", keySet.size() * 1000);
-					monitor.setTaskName(Policy.bind("UpdateAction.updating"));
-					Iterator iterator = keySet.iterator();
-					while (iterator.hasNext()) {
-						IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-						CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-						List list = (List)table.get(provider);
-						IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-						provider.update(providerResources, Command.NO_LOCAL_OPTIONS, null, null, subMonitor);
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				} finally {
-					monitor.done();
-				}
-			}
-		}, Policy.bind("UpdateAction.update"), this.PROGRESS_DIALOG);
-
-	}
-	/*
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (!((CVSTeamProvider)provider).isManaged(resources[i])) return false;
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/BranchesElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/BranchesElement.java
deleted file mode 100644
index 5ede48b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/BranchesElement.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.merge;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class BranchesElement implements IWorkbenchAdapter, IAdaptable {
-	ICVSRemoteFolder remote;
-	public BranchesElement(ICVSRemoteFolder remote) {
-		this.remote = remote;
-	}
-	public Object[] getChildren(Object o) {
-		BranchTag[] tags = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownBranchTags(remote.getRepository());
-		TagElement[] result = new TagElement[tags.length];
-		for (int i = 0; i < tags.length; i++) {
-			result[i] = new TagElement(tags[i].getTag());
-		}
-		return result;
-	}
-	public Object getAdapter(Class adapter) {
-		if (adapter == IWorkbenchAdapter.class) return this;
-		return null;
-	}
-	public ImageDescriptor getImageDescriptor(Object object) {
-		return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_BRANCHES_CATEGORY);
-	}
-	public String getLabel(Object o) {
-		return Policy.bind("MergeWizardEndPage.branches");
-	}
-	public Object getParent(Object o) {
-		return null;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeEditorInput.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeEditorInput.java
deleted file mode 100644
index d590304..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeEditorInput.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.merge;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.compare.structuremergeviewer.ICompareInput;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.core.sync.IRemoteResource;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.core.resources.CVSRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.sync.CVSSyncCompareInput;
-import org.eclipse.team.ui.sync.CatchupReleaseViewer;
-import org.eclipse.team.ui.sync.SyncView;
-import org.eclipse.team.ui.sync.TeamFile;
-
-public class MergeEditorInput extends CVSSyncCompareInput {
-	IProject project;
-	CVSTag start;
-	CVSTag end;
-	
-	public MergeEditorInput(IProject project, CVSTag start, CVSTag end) {
-		super(new IResource[] {project});
-		this.project = project;
-		this.start = start;
-		this.end = end;
-	}
-	public Viewer createDiffViewer(Composite parent) {
-		Viewer viewer = super.createDiffViewer(parent);
-		getViewer().syncModeChanged(SyncView.SYNC_MERGE);
-		return viewer;
-	}
-	protected IRemoteSyncElement[] createSyncElements(IProgressMonitor monitor) throws TeamException {
-		monitor.beginTask(null, 100);
-		try {
-			CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(project);
-			IRemoteResource base = provider.getRemoteTree(project, start, Policy.subMonitorFor(monitor, 50));
-			IRemoteResource remote = provider.getRemoteTree(project, end, Policy.subMonitorFor(monitor, 50));
-			return new IRemoteSyncElement[] {new CVSRemoteSyncElement(false, project, base, remote)};
-		} finally {
-			monitor.done();
-		}
-	}
-	public CVSTag getStartTag() {
-		return start;
-	}
-	public CVSTag getEndTag() {
-		return end;
-	}
-	public String getTitle() {
-		return Policy.bind("MergeEditorInput.title", start.getName(), end.getName());
-	}
-	public boolean isSaveNeeded() {
-		return false;
-	}
-	protected void contentsChanged(ICompareInput source) {
-	}
-	/*
-	 * @see SyncCompareInput#getSyncGranularity()
-	 */
-	protected int getSyncGranularity() {
-		// we have to perform content comparison since files in different branches
-		// may have different revisions but the same contents. Consider these files
-		// for merge purposes as equal.
-		return IRemoteSyncElement.GRANULARITY_CONTENTS;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizard.java
deleted file mode 100644
index 2367ff9..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizard.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.merge;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.compare.CompareUI;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.wizards.*;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class MergeWizard extends Wizard {
-	MergeWizardStartPage startPage;
-	MergeWizardEndPage endPage;
-	IProject project;
-
-	public void addPages() {
-		ImageDescriptor mergeImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_MERGE);
-		startPage = new MergeWizardStartPage("startPage", Policy.bind("MergeWizard.start"), mergeImage);
-		startPage.setProject(project);
-		addPage(startPage);
-		endPage = new MergeWizardEndPage("endPage", Policy.bind("MergeWizard.end"), mergeImage);
-		endPage.setProject(project);
-		addPage(endPage);
-	}
-
-	/*
-	 * @see IWizard#performFinish()
-	 */
-	public boolean performFinish() {
-		CVSTag startTag = startPage.getTag();
-		CVSTag endTag = endPage.getTag();
-		CompareUI.openCompareEditor(new MergeEditorInput(project, startTag, endTag));
-		return true;
-	}
-	public void setProject(IProject project) {
-		this.project = project;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardEndPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardEndPage.java
deleted file mode 100644
index 35a1f88..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardEndPage.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.merge;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-import org.eclipse.team.internal.ccvs.ui.wizards.CVSWizardPage;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-public class MergeWizardEndPage extends CVSWizardPage {
-	IProject project;
-	TreeViewer tree;
-	CVSTag result;
-	ICVSRemoteFolder remote;
-	CVSTeamProvider provider;
-	
-	/**
-	 * MergeWizardEndPage constructor.
-	 * 
-	 * @param pageName  the name of the page
-	 * @param title  the title of the page
-	 * @param titleImage  the image for the page
-	 */
-	public MergeWizardEndPage(String pageName, String title, ImageDescriptor titleImage) {
-		super(pageName, title, titleImage);
-	}
-	/*
-	 * @see IDialogPage#createControl(Composite)
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = createComposite(parent, 2);
-		// set F1 help
-		// WorkbenchHelp.setHelp(composite, new DialogPageContextComputer (this, ITeamHelpContextIds.REPO_CONNECTION_MAIN_PAGE));
-		
-		Label description = new Label(composite, SWT.WRAP);
-		GridData data = new GridData();
-		data.horizontalSpan = 2;
-		data.widthHint = 350;
-		description.setLayoutData(data);
-		description.setText(Policy.bind("MergeWizardEndPage.description"));
-		
-		tree = createTree(composite);
-		tree.setContentProvider(new WorkbenchContentProvider());
-		tree.setLabelProvider(new WorkbenchLabelProvider());
-		tree.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				Object selected = ((IStructuredSelection)tree.getSelection()).getFirstElement();
-				if (selected instanceof TagElement) {
-					result = ((TagElement)selected).getTag();
-					setPageComplete(true);
-				} else {
-					result = null;
-					setPageComplete(false);
-				}
-			}
-		});
-		setControl(composite);
-		tree.setInput(new ProjectElement(remote));
-	}
-	protected TreeViewer createTree(Composite parent) {
-		Tree tree = new Tree(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.SINGLE);
-		tree.setLayoutData(new GridData(GridData.FILL_BOTH));
-		return new TreeViewer(tree);
-	}
-	public void setProject(IProject project) {
-		this.project = project;
-		try {
-			this.provider = ((CVSTeamProvider)TeamPlugin.getManager().getProvider(project));
-			this.remote = (ICVSRemoteFolder)provider.getRemoteResource(project);
-		} catch (TeamException e) {
-			// To do
-		}
-	}
-	public CVSTag getTag() {
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardStartPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardStartPage.java
deleted file mode 100644
index 3bfe9f1..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardStartPage.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.merge;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.model.RemoteModule;
-import org.eclipse.team.internal.ccvs.ui.wizards.*;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-public class MergeWizardStartPage extends CVSWizardPage {
-	TableViewer table;
-	CVSTag result;
-	IProject project;
-	
-	/**
-	 * MergeWizardStartPage constructor.
-	 * 
-	 * @param pageName  the name of the page
-	 * @param title  the title of the page
-	 * @param titleImage  the image for the page
-	 */
-	public MergeWizardStartPage(String pageName, String title, ImageDescriptor titleImage) {
-		super(pageName, title, titleImage);
-	}
-	protected TableViewer createTable(Composite parent) {
-		Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);
-		table.setLayoutData(new GridData(GridData.FILL_BOTH));
-		TableLayout layout = new TableLayout();
-		layout.addColumnData(new ColumnWeightData(100, true));
-		table.setLayout(layout);
-		TableColumn col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-	
-		return new TableViewer(table);
-	}
-	/*
-	 * @see IDialogPage#createControl(Composite)
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = createComposite(parent, 2);
-		// set F1 help
-		// WorkbenchHelp.setHelp(composite, new DialogPageContextComputer (this, ITeamHelpContextIds.REPO_CONNECTION_MAIN_PAGE));
-		
-		Label description = new Label(composite, SWT.WRAP);
-		GridData data = new GridData();
-		data.horizontalSpan = 2;
-		data.widthHint = 350;
-		description.setLayoutData(data);
-		description.setText(Policy.bind("MergeWizardStartPage.description"));
-		
-		table = createTable(composite);
-		table.setContentProvider(new WorkbenchContentProvider());
-		table.setLabelProvider(new WorkbenchLabelProvider());
-		table.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				TagElement element = (TagElement)((IStructuredSelection)table.getSelection()).getFirstElement();
-				result = element.getTag();
-				setPageComplete(true);
-			}
-		});
-		table.addDoubleClickListener(new IDoubleClickListener() {
-			public void doubleClick(DoubleClickEvent event) {
-				getContainer().showPage(getNextPage());
-			}
-		});
-
-		setControl(composite);
-
-		initialize();
-	}
-	private void initialize() {
-		ITeamProvider provider = TeamPlugin.getManager().getProvider(project);
-		if (!(provider instanceof CVSTeamProvider)) return;
-		try {
-			ICVSRemoteFolder remoteResource = (ICVSRemoteFolder)((CVSTeamProvider)provider).getRemoteResource(project);
-			table.setInput(new VersionsElement(remoteResource));
-		} catch (TeamException e) {
-			// To do
-		}
-	}
-	public void setProject(IProject project) {
-		this.project = project;
-	}
-	public CVSTag getTag() {
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/ProjectElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/ProjectElement.java
deleted file mode 100644
index 8773572..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/ProjectElement.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.merge;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class ProjectElement implements IAdaptable, IWorkbenchAdapter {
-	ICVSRemoteFolder remote;
-	public ProjectElement(ICVSRemoteFolder remote) {
-		this.remote = remote;
-	}
-	public Object[] getChildren(Object o) {
-		return new Object[] {
-			new BranchesElement(remote),
-			new TagElement(CVSTag.DEFAULT),
-			new VersionsElement(remote)
-		};
-	}
-	public Object getAdapter(Class adapter) {
-		if (adapter == IWorkbenchAdapter.class) return this;
-		return null;
-	}
-	public ImageDescriptor getImageDescriptor(Object object) {
-		return null;
-	}
-	public String getLabel(Object o) {
-		return null;
-	}
-	public Object getParent(Object o) {
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/TagElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/TagElement.java
deleted file mode 100644
index efc1e5c..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/TagElement.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.merge;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class TagElement implements IWorkbenchAdapter, IAdaptable {
-	CVSTag tag;
-	public TagElement(CVSTag tag) {
-		this.tag = tag;
-	}
-	public Object[] getChildren(Object o) {
-		return new Object[0];
-	}
-	public Object getAdapter(Class adapter) {
-		if (adapter == IWorkbenchAdapter.class) return this;
-		return null;
-	}
-	public ImageDescriptor getImageDescriptor(Object object) {
-		if (tag.getType() == CVSTag.BRANCH || tag == CVSTag.DEFAULT) {
-			return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_TAG);
-		} else {
-			return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION);
-		}
-	}
-	public String getLabel(Object o) {
-		return tag.getName();
-	}
-	public Object getParent(Object o) {
-		return null;
-	}
-	public CVSTag getTag() {
-		return tag;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/UpdateMergeAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/UpdateMergeAction.java
deleted file mode 100644
index 5f918f5..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/UpdateMergeAction.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.merge;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Update;
-import org.eclipse.team.internal.ccvs.ui.sync.CVSSyncCompareInput;
-import org.eclipse.team.internal.ccvs.ui.sync.UpdateSyncAction;
-
-public class UpdateMergeAction extends UpdateSyncAction {
-	public UpdateMergeAction(CVSSyncCompareInput model, ISelectionProvider sp, String label, Shell shell) {
-		super(model, sp, label, shell);
-	}
-	protected Command.LocalOption[] getLocalOptions(Command.LocalOption[] baseOptions) {
-		List list = new ArrayList();
-		list.addAll(Arrays.asList(baseOptions));
-		CVSTag startTag = ((MergeEditorInput)getDiffModel()).getStartTag();
-		CVSTag endTag = ((MergeEditorInput)getDiffModel()).getEndTag();
-
-		if(!Update.IGNORE_LOCAL_CHANGES.isElementOf(baseOptions)) {
-			list.add(Update.makeArgumentOption(Update.JOIN, startTag.getName()));
-			list.add(Update.makeArgumentOption(Update.JOIN, endTag.getName()));
-		} else {
-			//list.add(Update.makeTagOption(endTag));
-			list.add(Update.makeArgumentOption(Update.JOIN, endTag.getName()));
-		}
-		return (Command.LocalOption[]) list.toArray(new Command.LocalOption[list.size()]);
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/VersionsElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/VersionsElement.java
deleted file mode 100644
index 480fffa..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/VersionsElement.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.merge;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class VersionsElement implements IWorkbenchAdapter, IAdaptable {
-	ICVSRemoteFolder remote;
-	public VersionsElement(ICVSRemoteFolder remote) {
-		this.remote = remote;
-	}
-	public Object[] getChildren(Object o) {
-		final Object[][] result = new Object[1][];
-		BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
-			// This is inefficient; need API to get remote resource for a given tag
-			public void run() {
-				try {
-					CVSTag[] tags = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownVersionTags(remote, new NullProgressMonitor());
-					TagElement[] elements = new TagElement[tags.length];
-					for (int i = 0; i < elements.length; i++) {
-						elements[i] = new TagElement(tags[i]);
-					}
-					result[0] = elements;
-				} catch (TeamException e) {
-					// To do
-				}
-			}
-		});
-		return result[0];
-	}
-	public Object getAdapter(Class adapter) {
-		if (adapter == IWorkbenchAdapter.class) return this;
-		return null;
-	}
-	public ImageDescriptor getImageDescriptor(Object object) {
-		return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_VERSIONS_CATEGORY);
-	}
-	public String getLabel(Object o) {
-		return Policy.bind("VersionsElement.versions");
-	}
-	public Object getParent(Object o) {
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
deleted file mode 100644
index 223c91f..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
+++ /dev/null
@@ -1,394 +0,0 @@
-details=Press the details button for more information.
-simpleInternal=Internal error
-internal=An internal error has occurred, consult the error log for details.
-yes=Yes
-no=No
-information=Server Information
-exception=Server Exception
-confirmOverwriteTitle=Confirm Overwrite Project
-confirmOverwrite=The project already exists in the workspace. Its contents will be overwritten.
-question=Question
-localChanges=You have local changes which you are about to overwrite. Do you wish to continue?
-
-AddAction.add=Add
-AddAction.adding=Adding...
-
-AddToWorkspaceAction.add=Checkout
-AddToWorkspaceAction.thisResourceExists=The resource "{0}" already exists in the workspace.  Overwrite?
-AddToWorkspaceAction.confirmOverwrite=Confirm Overwrite
-
-AutoDefineTagsAction.defineTags = Auto-discover tags
-
-BranchWizard.createABranch=Create a Branch
-BranchWizard.errorTagging=Error Tagging Resources
-
-BranchWizardPage.description=Enter the name of the branch tag to create, and specify whether you wish to begin working in the branch.\n\nIf you choose to begin working in the branch, your selected workspace resources will be updated to point to the new branch.
-BranchWizardPage.branchName=Branch Name:
-BranchWizardPage.startWorking=Start working in the branch
-BranchWizardPage.specifyVersion=Version the project before creating the branch
-BranchWizardPage.versionName=Version Name:
-
-CVSCatchupReleaseViewer.commit=&Commit
-CVSCatchupReleaseViewer.update=&Update
-CVSCatchupReleaseViewer.ignore=&Ignore
-CVSCatchupReleaseViewer.commonFile=Common file: {0}
-CVSCatchupReleaseViewer.commonFileRevision=Common file: {0} {1}
-CVSCatchupReleaseViewer.noCommonFile=No common file
-CVSCatchupReleaseViewer.noRepositoryFile=No repository file
-CVSCatchupReleaseViewer.repositoryFile=Repository file: {0}
-CVSCatchupReleaseViewer.repositoryFileRevision=Repository file: {0} {1}
-CVSCatchupReleaseViewer.workspaceFile=Workspace file: {0}
-CVSCatchupReleaseViewer.showInHistory=Show in Resource History
-
-CVSCompareEditorInput.branchLabel=<branch-{0}>
-CVSCompareEditorInput.headLabel=<HEAD>
-CVSCompareEditorInput.comparing=Comparing... 
-CVSCompareEditorInput.different=Cannot compare resources of different kind.
-CVSCompareEditorInput.inBranch={0} in {1}
-CVSCompareEditorInput.inHead={0} in HEAD
-CVSCompareEditorInput.repository=Repository: {0} {1}
-CVSCompareEditorInput.titleAncestor=Compare {0} {1}-{2} and {3}
-CVSCompareEditorInput.titleNoAncestor=Compare {0} {1} and {2}
-CVSCompareEditorInput.titleNoAncestorDifferent=Compare {0} {1} and {2} {3}
-CVSCompareEditorInput.workspace=Workspace: {0}
-CVSCompareEditorInput.workspaceLabel=<workspace>
-
-CVSCompareRevisionsInput.addToWorkspace=Get
-CVSCompareRevisionsInput.compareResourceAndVersions=Compare {0} <workspace> and versions
-CVSCompareRevisionsInput.errorReplacingTitle=Unable to Replace
-CVSCompareRevisionsInput.errorReplacingMessage=Resource(s) could not be loaded.  A communication error may have occured, or \
-    the resource(s) may not exist on the server, or you may \
-	not have permission to access them.
-CVSCompareRevisionsInput.repository=Repository file: {0}
-CVSCompareRevisionsInput.structureCompare=Structure Compare
-CVSCompareRevisionsInput.workspace=Workspace file: {0}
-
-CVSDecorator.projectDecoration={0} [{1}] 
-CVSDecorator.projectDecorationWithTag={0} [{1} {2}]
-CVSDecorator.fileDecorationWithTag={0} [{1}:{2}] 
-CVSDecorator.fileDecorationNoTag={0} [{1}]
-CVSDecorator.folderDecoration={0} [{1}]
-
-CVSFilePropertiesPage.ignored=The file is ignored by CVS.
-CVSFilePropertiesPage.notManaged=The file is not managed by CVS.
-CVSFilePropertiesPage.baseRevision=Base Revision:
-CVSFilePropertiesPage.baseTimestamp=Base Timestamp:
-CVSFilePropertiesPage.dirty=Dirty:
-CVSFilePropertiesPage.modified=Modified:
-CVSFilePropertiesPage.keywordMode=Keyword Mode:
-CVSFilePropertiesPage.binary=Binary
-CVSFilePropertiesPage.textNoKeyword=Text with no keyword expansion
-CVSFilePropertiesPage.text=Text
-CVSFilePropertiesPage.tag=Tag:
-CVSFilePropertiesPage.none=(none)
-CVSFilePropertiesPage.version={0} (Version)
-CVSFilePropertiesPage.branch={0} (Branch)
-CVSFilePropertiesPage.date={0} (Date)
-CVSFilePropertiesPage.error=An error occurred while creating this page.
-CVSFilePropertiesPage.permissions=Permissions:
-CVSFilePropertiesPage.notAvailable=Not Available
-
-CVSOperationCancelledException.operationCancelled=Operation Cancelled
-
-CVSPropertiesPage.connectionType=Connection type:
-CVSPropertiesPage.user=User:
-CVSPropertiesPage.password=Password:
-CVSPropertiesPage.host=Host:
-CVSPropertiesPage.port=Port:
-CVSPropertiesPage.path=Repository path:
-CVSPropertiesPage.module=Module:
-CVSPropertiesPage.defaultPort=Default
-
-CVSPreferencePage.pruneEmptyDirectories=&Prune empty directories
-CVSPreferencePage.timeoutValue=&Communication timeout value (in seconds)
-CVSPreferencePage.quietness=&Quietness level
-CVSPreferencePage.notquiet=Verbose
-CVSPreferencePage.somewhatquiet=Somewhat quiet
-CVSPreferencePage.reallyquiet=Very quiet
-CVSPreferencePage.showModules=&Show modules from CVSROOT/modules in repository view 
-CVSPreferencePage.historyTracksSelection=Link &History view to current selection
-
-CheckoutAsAction.checkout=Checkout
-CheckoutAsAction.enterProjectTitle=Enter Project Name
-CheckoutAsAction.enterProject=Enter the name of the project to checkout as:
-
-CommitAction.commit=Commit
-CommitAction.committing=Committing...
-
-CommitSyncAction.questionRelease=You have changes that conflict with the server. Release those changes?
-CommitSyncAction.titleRelease=Release Conflicts?
-CommitSyncAction.releaseAll=Release all changes, overriding any conflicting changes on the server.
-CommitSyncAction.releasePart=Only release the changes that don't conflict with changes on the server.
-CommitSyncAction.cancelRelease=Cancel the release operation.
-
-CompareWithRemoteAction.compare=Compare
-CompareWithRemoteAction.noRemote=No Remote Resource
-CompareWithRemoteAction.noRemoteLong=The selected resource has no remote resource to compare with.
-
-CompareWithRevisionAction.compare=Compare
-CompareWithRevisionAction.noRevisions=No Revisions
-CompareWithRevisionAction.noRevisionsLong=The selected resource has no revisions to compare with.
-
-CompareWithTagAction.replace=Error Comparing With Tag
-
-ConfigurationWizardAutoconnectPage.description=Your project already has CVS/ directories. It was probably previously shared, or checked out using another tool. It will be automatically shared using the following information.
-ConfigurationWizardAutoconnectPage.user=User:
-ConfigurationWizardAutoconnectPage.host=Host:
-ConfigurationWizardAutoconnectPage.port=Port:
-ConfigurationWizardAutoconnectPage.default=Default
-ConfigurationWizardAutoconnectPage.connectionType=Connection type:
-ConfigurationWizardAutoconnectPage.repositoryPath=Repository path:
-ConfigurationWizardAutoconnectPage.module=Module:
-ConfigurationWizardAutoconnectPage.validate=Validate Connection on Finish
-ConfigurationWizardAutoconnectPage.noSyncInfo=Could not get folder information
-ConfigurationWizardAutoconnectPage.noCVSDirectory=Could not find CVS/ directory
-
-RepositorySelectionPage.description=This wizard will help you to share your files with the repository for the first time. Your local files will automatically be imported into the repository.
-RepositorySelectionPage.useExisting=Use existing repository location:
-RepositorySelectionPage.useNew=Create a new repository location
-
-ConfigurationWizardMainPage.connection=Connection type:
-ConfigurationWizardMainPage.userName=User name:
-ConfigurationWizardMainPage.password=Password:
-ConfigurationWizardMainPage.host=Host:
-ConfigurationWizardMainPage.useDefaultPort=Use Default Port
-ConfigurationWizardMainPage.usePort=Use Port:
-ConfigurationWizardMainPage.repositoryPath=Repository path:
-ConfigurationWizardMainPage.invalidUserName=Invalid User Name
-ConfigurationWizardMainPage.invalidHostName=Invalid Host Name
-ConfigurationWizardMainPage.invalidPort=Invalid Port
-
-Console.copy=Copy
-Console.selectAll=Select All
-Console.clearOutput=Clear Output
-
-DefineVersionAction.enterTag=Enter Version Tag
-DefineVersionAction.enterTagLong=Enter the name of the version:
-
-DefineBranchAction.enterTag=Enter Branch Tag
-DefineBranchAction.enterTagLong=Enter the name of the branch:
-
-DiffAction.diff=Diff
-
-FixTypeAction.fix=Fix Types
-
-GenerateCVSDiff.title=Create Patch
-GenerateCVSDiff.pageTitle=Run and save CVS diff results in a file
-GenerateCVSDiff.pageDescription=The results of the CVS diff command can be used as an input file for the Compare with Patch wizard.
-GenerateCVSDiff.overwriteTitle=Confirm Overwrite
-GenerateCVSDiff.overwriteMsg=A file with that name already exists. Overwrite?
-GenerateCVSDiff.error=Error running the CVS diff command
-GenerateCVSDiff.working=Running CVS diff...
-GenerateCVSDiff.noDiffsFoundMsg=No differences found.
-GenerateCVSDiff.noDiffsFoundTitle=CVS diff
-
-GetSyncAction.questionCatchup=You have local changes which you are about to overwrite. Should the conflicting changes be added?
-GetSyncAction.titleCatchup=Catch up Over Conflicts?
-GetSyncAction.catchupAll=Catch up to all incoming changes, overriding any conflicting local changes.
-GetSyncAction.catchupPart=Only catch up to the changes that don't conflict with local changes.
-GetSyncAction.cancelCatchup=Cancel the catch up operation.
-
-HistoryView.addToWorkspace=&Get
-HistoryView.copy=&Copy
-HistoryView.revision=Revision
-HistoryView.tags=Tags
-HistoryView.date=Date
-HistoryView.author=Author
-HistoryView.comment=Comment
-HistoryView.refresh=Refresh View
-HistoryView.selectAll=Select &All
-HistoryView.showComment=Show Comment Viewer
-HistoryView.showTags=Show Tag Viewer
-HistoryView.title=Resource History
-HistoryView.titleWithArgument=Resource History - {0}
-
-IgnoreAction.ignore=Error Ignoring Resource
-
-MergeAction.problemsDuringSync=Problems During Synchronization
-
-MergeEditorInput.title=Merge {0} with {1}
-
-MergeWizardEndPage.branches=Branches
-MergeWizardEndPage.description=Select the end point of the merge. This is the version or branch that contains the work you would like to merge.
-
-MergeWizardStartPage.description=Select the starting point of the merge. This is the version you created when you branched.
-
-MergeWizard.start=Select the Merge Start Point
-MergeWizard.end=Select the Merge End Point
-
-ModuleSelectionPage.moduleIsProject=Use project name as module name
-ModuleSelectionPage.specifyModule=Use specified module name:
-
-NewLocationWizard.title=Add a new CVS Repository
-NewLocationWizard.description=Add a new CVS Repository to the Repositories View
-NewLocationWizard.validationFailedText={0}. Keep location anyway?
-NewLocationWizard.validationFailedTitle=Unable to Validate
-NewLocationWizard.exception=Unable to create repository location
-
-OpenLogEntryAction.open=Open
-OpenLogEntryAction.deletedTitle=Resource is Deleted
-OpenLogEntryAction.deleted=The selected revision represents a deletion. It cannot be opened.
-
-OpenRemoteFileAction.open=Open
-
-ReleaseCommentDialog.title=Commit Comment
-ReleaseCommentDialog.enterComment=Please enter a comment.
-
-RemoveRootAction.removeRoot=Discard Location
-
-RemoveBranchTagAction.removeTag=Discard Branch
-RemoveModuleVersionAction.removeTag=Discard Version
-
-ReplaceWithTagAction.replace=Error Replacing With Tag
-
-ReplaceWithRemoteAction.replacing=Replacing
-ReplaceWithRemoteAction.problemMessage=Error Replacing With Remote
-
-RepositoryDialog.getRepository=Select a repository
-RepositoryDialog.description=Select a repository to connect your project to
-
-RepositoryManager.getting=Getting
-RepositoryManager.committing=Committing
-RepositoryManager.updating=Updating
-RepositoryManager.deleting=Deleting
-RepositoryManager.adding=Adding
-RepositoryManager.rename=An IO Exception occurred while renaming the state file
-RepositoryManager.save=An IO Exception occurred while saving the state file
-RepositoryManager.ioException=An IO Exception occurred while reading the state file
-
-RepositoriesView.refresh=&Refresh View
-RepositoriesView.new=&CVS Repository Location...
-RepositoriesView.newSubmenu=&New
-
-ResourcePropertiesPage.status=Status
-ResourcePropertiesPage.notManaged=Not managed by CVS
-ResourcePropertiesPage.versioned=versioned
-ResourcePropertiesPage.notVersioned=not versioned
-ResourcePropertiesPage.state=State
-ResourcePropertiesPage.checkedOut=Checked Out
-ResourcePropertiesPage.checkedIn=Checked In
-#ResourcePropertiesPage.baseRevision=Base Revision
-#ResourcePropertiesPage.none=none
-ResourcePropertiesPage.error=Error
-
-SharingWizard.autoConnectTitle=Connect Project to Repository
-SharingWizard.couldNotImport=Could Not Import
-SharingWizard.couldNotImportLong=Your resources could not be imported into the repository because a module with that name already exists.
-SharingWizard.description=Configure a Project to Use CVS
-SharingWizard.importTitle=Share Project with Repository
-SharingWizard.title=Configure a Project to Use CVS
-SharingWizard.enterInformation=Enter Repository Location Information
-SharingWizard.enterModuleName=Enter Module Name
-
-SharingWizard.validationFailedText={0}. Set project sharing anyway?
-SharingWizard.validationFailedTitle=Unable to Validate
-
-SharingWizardFinishPage.message=The wizard has all the information necessary to share your project with the CVS repository. When you click \"Finish\", the wizard will import your project into the repository and open the Synchronize view to allow you to release your resources.
-
-ShowHistoryAction.showHistory=Show in Resource History
-ShowHistoryAction.noHistory=No History Available
-ShowHistoryAction.noHistoryLong=No resource history available for selected resources.
-
-SyncAction.sync=Synchronize
-
-TagAction.tag=Tag
-TagAction.tagResources=Tag Resources
-TagAction.enterTag=Please enter a version tag:
-
-UpdateAction.update=Update
-UpdateAction.updating=Updating...
-
-UserValidationDialog.required=Password Required
-UserValidationDialog.labelUser=Enter a user name and password for the following repository:\n{0}
-UserValidationDialog.labelPassword=Enter a password for {0} in the following repository:\n{1}
-UserValidationDialog.password=Password:
-UserValidationDialog.user=User name:
-
-VersionsElement.versions=Versions
-
-WorkbenchUserAuthenticator.cancelled=Operation cancelled because login cancelled
-WorkbenchUserAuthenticator.errorFlushing=Error occurred while flushing password for {0}
-WorkbenchUserAuthenticator.errorSaving=Error occurred while saving password for {0}
-
-Unmanage.unmanaging=Disconnecting from CVS...
-Unmanage.unmanage=Disconnect from CVS
-Unmanage.title=Confirm Disconnect from CVS
-Unmanage.titleN=Confirm Multiple Project Disconnect from CVS
-Unmanage.message=Are you sure you want to disconnect CVS from ''{0}''?
-Unmanage.messageN=Are you sure you want to disconnect CVS from these {0} projects?
-Unmanage.option1=Do not delete the CVS meta information (e.g. CVS sub-directories).
-Unmanage.option2=Also delete the CVS meta information from the file system.
-
-Enter_a_valid_file_name_or_select_the_clipboard_option_1=Enter a valid file name or select the clipboard option
-Save_To_Clipboard_2=Save To Clipboard
-Save_In_File_System_3=Save In File System
-Browse..._4=Browse...
-Save_Patch_As_5=Save Patch As
-patch.txt_6=patch.txt
-Save_In_Workspace_7=Save In Workspace
-Select_a_folder_then_type_in_the_file_name__8=Select a folder then type in the file name:
-Fi&le_name__9=Fi&le name:
-Do_not_recurse_into_sub-folders_10=Do not recurse into sub-folders
-Do_not_include_new_files_in_patch_11=Do not include new files in patch
-Diff_output_format_12=Diff output format
-Unified_(format_required_by_Compare_With_Patch_feature)_13=Unified (format required by Compare With Patch feature)
-Context_14=Context
-Standard_15=Standard
-Advanced_options_19=Advanced options
-Configure_the_options_used_for_the_CVS_diff_command_20=Configure the options used for the CVS diff command
-
-After_configuring_the_project__1=After configuring the project:
-Open_the_Synchronize_view_on_the_project_2=Open the Synchronize view on the project
-Automatically_import_the_local_resources_into_the_repository_3=Automatically import the local resources into the repository
-Run_update_4=Run update
-Do_nothing_5=Do nothing
-Validate_Connection_on_Finish_7=Validate Location on Finish
-
-TagSelectionDialog.Select_a_Tag_1=Select a Tag
-TagSelectionDialog.Use_Defined_Tag__2=Use Defined Tag:
-TagSelectionDialog.Use_User-Specified_Tag__3=Use User-Specified Tag:
-TagSelectionDialog.Tag_name__4=Tag name:
-TagSelectionDialog.Tag_type__5=Tag type:
-TagSelectionDialog.Version_6=Version
-TagSelectionDialog.Branch_7=Branch
-TagSelectionDialog.Please_select_a_tag_9=Please select a tag
-
-UpdateSyncAction.Conflicting_changes_found_1=Conflicting changes found
-UpdateSyncAction.You_have_local_changes_you_are_about_to_overwrite_2=You have local changes you are about to overwrite
-UpdateSyncAction.Only_update_resources_that_can_be_automatically_merged_3=Only update resources that can be automatically merged
-UpdateSyncAction.Update_all_resources,_overwriting_local_changes_with_remote_contents_4=Update all resources, overwriting local changes with remote contents
-UpdateSyncAction.Overwrite_local_changes__5=Overwrite local changes?
-UpdateSyncAction.You_have_local_changes_you_are_about_to_overwrite._Do_you_wish_to_continue__6=You have local changes you are about to overwrite. Do you wish to continue?
-
-Example__1=Example:
-Text_Labels_12=Text Labels
-Select_the_format_for_file,_folders,_and_project_text_labels__13=Select the format for file, folders, and project text labels:
-&File_Format__14=&File Format:
-Add_&Variables_15=Add &Variables
-F&older_Format__16=F&older Format:
-Add_Varia&bles_17=Add Varia&bles
-&Project_Format__18=&Project Format:
-Add_Variable&s_19=Add Variable&s
-&Label_decoration_for_outgoing__20=&Label decoration for outgoing:
-Label_decorat&ion_for_added__22=Label decorat&ion for added:
-Icon_Overlays_24=Icon Overlays
-Sho&w_outgoing_25=Sho&w outgoing
-Show_has_&remote_26=Show has &remote
-S&how_is_added_27=S&how is added
-&Compute_deep_outgoing_state_for_folders_(disabling_this_will_improve_decorator_performance)_28=&Compute deep outgoing state for folders (disabling this will improve decorator performance)
-Select_the_&variables_to_add_to_the_decoration_format__30=Select the &variables to add to the decoration format:
-Add_Variables_31=Add Variables
-name_of_the_resource_being_decorated_34=name of the resource being decorated
-the_tag_applied_to_the_resource_(version,_branch,_or_date)_35=the tag applied to the resource (version, branch, or date)
-the_repository_location__s_hostname_36=the repository location\'s hostname
-the_connection_method_(e.g._pserver,_ssh)_37=the connection method (e.g. pserver, ssh)
-user_name_for_the_connection_38=user name for the connection
-repository_home_directory_on_server_39=repository home directory on server
-root_relative_directory_40=root relative directory
-flag_indicating_that_the_folder_has_a_child_resource_with_outgoing_changes_41=flag indicating that the folder has a child resource with outgoing changes
-name_of_the_resource_being_decorated_42=name of the resource being decorated
-the_tag_applied_to_the_resource_43=the tag applied to the resource
-keyword_subsitution_rule_for_the_resource_44=keyword subsitution rule for the resource
-last_revision_loaded_into_workspace_45=last revision loaded into workspace
-flag_indicating_that_the_file_has_outgoing_changes_46=flag indicating that the file has outgoing changes
-flag_indicating_that_the_file_has_been_added_to_the_server_47=flag indicating that the file has been added to the server
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/AllRootsElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/AllRootsElement.java
deleted file mode 100644
index bcebf58..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/AllRootsElement.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * AllRootsElement is the model element for the repositories view.
- * Its children are the array of all known repository roots.
- */
-public class AllRootsElement extends CVSModelElement implements IAdaptable {
-	public ImageDescriptor getImageDescriptor(Object object) {
-		return null;
-	}
-	public Object[] getChildren(Object o) {
-		return CVSUIPlugin.getPlugin().getRepositoryManager().getKnownRoots();
-	}
-	public String getLabel(Object o) {
-		return null;
-	}
-	public Object getAdapter(Class adapter) {
-		if (adapter == IWorkbenchAdapter.class) return this;
-		return null;
-	}
-	public Object getParent(Object o) {
-		return null;
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchCategory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchCategory.java
deleted file mode 100644
index 19d501b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchCategory.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchTag.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchTag.java
deleted file mode 100644
index 1b66511..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchTag.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class BranchTag extends CVSModelElement implements IAdaptable {
-	CVSTag tag;
-	ICVSRepositoryLocation root;
-	
-	/**
-	 * Create a branch tag
-	 */
-	public BranchTag(CVSTag tag, ICVSRepositoryLocation root) {
-		this.tag = tag;
-		this.root = root;
-	}
-	public ICVSRepositoryLocation getRoot() {
-		return root;
-	}
-	public Object getAdapter(Class adapter) {
-		if (adapter == IWorkbenchAdapter.class) return this;
-		return null;
-	}
-	public CVSTag getTag() {
-		return tag;
-	}
-	public boolean equals(Object o) {
-		if (!(o instanceof BranchTag)) return false;
-		BranchTag t = (BranchTag)o;
-		if (!tag.equals(t.tag)) return false;
-		return root.equals(t.root);
-	}
-	public int hashCode() {
-		return root.hashCode() ^ tag.hashCode();
-	}
-	/**
-	 * Return children of the root with this tag.
-	 */
-	public Object[] getChildren(Object o) {
-		// Return the remote elements for the tag
-		final Object[][] result = new Object[1][];
-		BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
-			public void run() {
-				try {
-					IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
-					result[0] = root.members(tag, store.getBoolean(ICVSUIConstants.PREF_SHOW_MODULES), new NullProgressMonitor());
-				} catch (TeamException e) {
-					handle(e);
-				}
-			}
-		});
-		return result[0];
-	}
-	public ImageDescriptor getImageDescriptor(Object object) {
-		if (!(object instanceof BranchTag)) return null;
-		return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_TAG);
-	}
-	public String getLabel(Object o) {
-		if (!(o instanceof BranchTag)) return null;
-		return ((BranchTag)o).tag.getName();
-	}
-	public Object getParent(Object o) {
-		if (!(o instanceof BranchTag)) return null;
-		return ((BranchTag)o).root;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSAdapterFactory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSAdapterFactory.java
deleted file mode 100644
index 07af074..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSAdapterFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class CVSAdapterFactory implements IAdapterFactory {
-	private Object fileAdapter = new RemoteFileElement();
-	private Object folderAdapter = new RemoteFolderElement();
-	private Object rootAdapter = new CVSRepositoryRootElement();
-
-	/** (Non-javadoc)
-	 * Method declared on IAdapterFactory.
-	 */
-	public Object getAdapter(Object adaptableObject, Class adapterType) {
-		if (IWorkbenchAdapter.class == adapterType) {
-			if (adaptableObject instanceof ICVSRemoteFile) {
-				return fileAdapter;
-			} else if (adaptableObject instanceof ICVSRepositoryLocation) {
-				return rootAdapter;
-			} else if (adaptableObject instanceof ICVSRemoteFolder) {
-				return folderAdapter;
-			}
-			return null;
-		}
-		return null;
-	}
-	/** (Non-javadoc)
-	 * Method declared on IAdapterFactory.
-	 */
-	public Class[] getAdapterList() {
-		return new Class[] {IWorkbenchAdapter.class};
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSModelElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSModelElement.java
deleted file mode 100644
index e8b32ea..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSModelElement.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public abstract class CVSModelElement implements IWorkbenchAdapter {
-	/**
-	 * Handles exceptions that occur in CVS model elements.
-	 */
-	protected void handle(Throwable t) {
-		IStatus error = null;
-		if (t instanceof CoreException) {
-			error = ((CoreException)t).getStatus();
-		} else if (t instanceof TeamException) {
-			error = ((TeamException)t).getStatus();
-		} else {
-			error = new Status(IStatus.ERROR, CVSUIPlugin.ID, 1, Policy.bind("simpleInternal"), t);
-		}
-	
-		Shell shell = new Shell(Display.getDefault());
-	
-		if (error.getSeverity() == IStatus.INFO) {
-			MessageDialog.openInformation(shell, Policy.bind("information"), error.getMessage());
-		} else {
-			ErrorDialog.openError(shell, Policy.bind("exception"), null, error);
-		}
-		shell.dispose();
-		// Let's log non-team exceptions
-		if (!(t instanceof TeamException)) {
-			CVSUIPlugin.log(error);
-		}
-	}
-}
-
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryRootElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryRootElement.java
deleted file mode 100644
index ba9eb87..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryRootElement.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-
-/**
- * RemoteRootElement is the model element for a repository that
- * appears in the repositories view. Its children are:
- * a) HEAD
- * b) Branch tags category
- * c) Version tags category
- */
-public class CVSRepositoryRootElement extends CVSModelElement {
-	public ImageDescriptor getImageDescriptor(Object object) {
-		if (!(object instanceof ICVSRepositoryLocation)) return null;
-		return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_REPOSITORY);
-	}
-	public String getLabel(Object o) {
-		if (!(o instanceof ICVSRepositoryLocation)) return null;
-		ICVSRepositoryLocation root = (ICVSRepositoryLocation)o;
-		return root.getLocation();
-	}
-	public Object getParent(Object o) {
-		return null;
-	}
-	public Object[] getChildren(Object o) {
-		if (!(o instanceof ICVSRepositoryLocation)) return null;
-		return new Object[] {
-			new BranchTag(CVSTag.DEFAULT, (ICVSRepositoryLocation)o),
-			new BranchCategory((ICVSRepositoryLocation)o),
-			new VersionCategory((ICVSRepositoryLocation)o)
-		};
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
deleted file mode 100644
index d96a121..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-
-/**
- * Extension to the generic workbench content provider mechanism
- * to lazily determine whether an element has children.  That is,
- * children for an element aren't fetched until the user clicks
- * on the tree expansion box.
- */
-public class RemoteContentProvider extends WorkbenchContentProvider {
-	/* (non-Javadoc)
-	 * Method declared on WorkbenchContentProvider.
-	 */
-	public boolean hasChildren(Object element) {
-		if (element == null) {
-			return false;
-		}
-		// the + box will always appear, but then disappear
-		// if not needed after you first click on it.
-		if (element instanceof ICVSRemoteResource) {
-			return ((ICVSRemoteResource)element).isContainer();
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFileElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFileElement.java
deleted file mode 100644
index 0f052c6..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFileElement.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.ui.PlatformUI;
-
-public class RemoteFileElement extends RemoteResourceElement {
-	/**
-	 * Initial implementation: return null;
-	 */
-	public Object[] getChildren(Object o) {
-		return null;
-	}
-	/**
-	 * Initial implementation: return null.
-	 */
-	public ImageDescriptor getImageDescriptor(Object object) {
-		if (!(object instanceof ICVSRemoteFile)) return null;
-		return PlatformUI.getWorkbench().getEditorRegistry().getImageDescriptor(((ICVSRemoteFile)object).getName());
-	}
-	/**
-	 * Initial implementation: return the file's name and version
-	 */
-	public String getLabel(Object o) {
-		if (!(o instanceof ICVSRemoteFile)) return null;
-		ICVSRemoteFile file = (ICVSRemoteFile)o;
-		try {
-			return file.getName() + " " + file.getRevision();
-		} catch (TeamException e) {
-			handle(e);
-			return null;
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
deleted file mode 100644
index 414835f..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-
-public class RemoteFolderElement extends RemoteResourceElement {
-	public Object[] getChildren(final Object o) {
-		if (!(o instanceof ICVSRemoteFolder)) return null;
-		final Object[][] result = new Object[1][];
-		BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
-			public void run() {
-				try {
-					result[0] = ((ICVSRemoteFolder)o).members(new NullProgressMonitor());
-				} catch (TeamException e) {
-					handle(e);
-				}
-			}
-		});
-		return result[0];
-	}
-	/**
-	 * Overridden to append the version name to remote folders which
-	 * have version tags and are top-level folders.
-	 */
-	public String getLabel(Object o) {
-		if (!(o instanceof ICVSRemoteFolder)) return null;
-		ICVSRemoteFolder folder = (ICVSRemoteFolder)o;
-		CVSTag tag = folder.getTag();
-		if (tag != null && tag.getType() == CVSTag.VERSION) {
-			if (folder.getRemoteParent() == null) {
-				return folder.getName() + " " + tag.getName();
-			}
-		}
-		return folder.getName();
-	}
-	public ImageDescriptor getImageDescriptor(Object object) {
-		if (!(object instanceof ICVSRemoteFolder)) return null;
-		return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
deleted file mode 100644
index d395802..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * This class represents an IProject resource in a repository.  The
- * children of a RemoteModule are its versions. A RemoteModule is
- * a child of the VersionsCategory.
- */
-public class RemoteModule extends CVSModelElement implements IAdaptable {
-	ICVSRemoteFolder folder;
-	VersionCategory parent;
-	
-	/**
-	 * RemoteProject constructor.
-	 */
-	public RemoteModule(ICVSRemoteFolder folder, VersionCategory parent) {
-		this.folder = folder;
-		this.parent = parent;
-	}
-	
-	/**
-	 * Returns an object which is an instance of the given class
-	 * associated with this object. Returns <code>null</code> if
-	 * no such object can be found.
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapter == IWorkbenchAdapter.class) return this;
-		return null;
-	}
-	
-	/**
-	 * Returns the children of this object.  When this object
-	 * is displayed in a tree, the returned objects will be this
-	 * element's children.  Returns an empty enumeration if this
-	 * object has no children. The children of the RemoteModule
-	 * are the versions for that module.
-	 */
-	public Object[] getChildren(Object o) {
-		final Object[][] result = new Object[1][];
-		BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
-			// This is inefficient; need API to get remote resource for a given tag
-			public void run() {
-				try {
-					CVSTag[] tags = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownVersionTags(folder, new NullProgressMonitor());
-					Object[] versions = new Object[tags.length];
-					for (int i = 0; i < versions.length; i++) {
-						versions[i] = folder.getRepository().getRemoteFolder(folder.getRepositoryRelativePath(), tags[i]);
-					}
-					result[0] = versions;
-				} catch (TeamException e) {
-					handle(e);
-				}
-			}
-		});
-		return result[0];
-	}
-	
-	/**
-	 * Returns an image to be used for displaying an object in the desktop.
-	 * @param object The object to get an image for.
-	 * @param owner The viewer that the image will be used in.  The image will
-	 * be disposed when this viewer is closed.  If the owner is null, a new 
-	 * image is returned, and the caller is responsible for disposing it.
-	 */
-	public ImageDescriptor getImageDescriptor(Object object) {
-		return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION);
-	}
-	
-	/**
-	 * Returns the name of this element.  This will typically
-	 * be used to assign a label to this object when displayed
-	 * in the UI.
-	 */
-	public String getLabel(Object o) {
-		return folder.getName();
-	}
-	
-	/**
-	 * Returns the logical parent of the given object in its tree.
-	 */
-	public Object getParent(Object o) {
-		return parent;
-	}
-
-	/**
-	 * Return the repository the given element belongs to.
-	 */
-	public ICVSRepositoryLocation getRepository(Object o) {
-		return folder.getRepository();
-	}
-	
-	/** (Non-javadoc)
-	 * For debugging purposes only.
-	 */
-	public String toString() {
-		return "RemoteModule(" + folder.getName() + ")";
-	}
-	
-	public ICVSRemoteResource getCVSResource() {
-		return folder;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteResourceElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteResourceElement.java
deleted file mode 100644
index dab8450..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteResourceElement.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-
-public abstract class RemoteResourceElement extends CVSModelElement {
-	/**
-	 * Initial implementation: return the resource's name
-	 */
-	public String getLabel(Object o) {
-		if (!(o instanceof ICVSRemoteResource)) return null;
-		return ((ICVSRemoteResource)o).getName();
-	}
-	/**
-	 * Return null.
-	 */
-	public Object getParent(Object o) {
-		if (!(o instanceof ICVSRemoteResource)) return null;
-		return null;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
deleted file mode 100644
index 4ffb301..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.model;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class VersionCategory extends CVSModelElement implements IAdaptable {
-	private ICVSRepositoryLocation repository;
-	
-	/**
-	 * ProjectVersionsCategory constructor.
-	 */
-	public VersionCategory(ICVSRepositoryLocation repo) {
-		super();
-		this.repository = repo;
-	}
-	
-	/**
-	 * Returns an object which is an instance of the given class
-	 * associated with this object. Returns <code>null</code> if
-	 * no such object can be found.
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapter == IWorkbenchAdapter.class) return this;
-		return null;
-	}
-	
-	/**
-	 * Returns the children of this object.  When this object
-	 * is displayed in a tree, the returned objects will be this
-	 * element's children.  Returns an empty enumeration if this
-	 * object has no children.
-	 */
-	public Object[] getChildren(Object o) {
-		final Object[][] result = new Object[1][];
-		BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
-			public void run() {
-				try {
-					IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
-					ICVSRemoteResource[] resources = repository.members(CVSTag.DEFAULT, store.getBoolean(ICVSUIConstants.PREF_SHOW_MODULES), new NullProgressMonitor());
-					Object[] modules = new Object[resources.length];
-					for (int i = 0; i < resources.length; i++) {
-						modules[i] = new RemoteModule((ICVSRemoteFolder)resources[i], VersionCategory.this);
-					}
-					result[0] = modules;
-				} catch (TeamException e) {
-					handle(e);
-				}
-			}
-		});
-		return result[0];
-	}
-
-	/**
-	 * Returns an image descriptor to be used for displaying an object in the workbench.
-	 * Returns null if there is no appropriate image.
-	 *
-	 * @param object The object to get an image descriptor for.
-	 */
-	public ImageDescriptor getImageDescriptor(Object object) {
-		return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_VERSIONS_CATEGORY);
-	}
-
-	/**
-	 * Returns the name of this element.  This will typically
-	 * be used to assign a label to this object when displayed
-	 * in the UI.  Returns an empty string if there is no appropriate
-	 * name for this object.
-	 *
-	 * @param object The object to get a label for.
-	 */
-	public String getLabel(Object o) {
-		return "Versions";
-	}
-
-	/**
-	 * Returns the logical parent of the given object in its tree.
-	 * Returns null if there is no parent, or if this object doesn't
-	 * belong to a tree.
-	 *
-	 * @param object The object to get the parent for.
-	 */
-	public Object getParent(Object o) {
-		return repository;
-	}
-	
-	/**
-	 * Return the repository the given element belongs to.
-	 */
-	public ICVSRepositoryLocation getRepository(Object o) {
-		return repository;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSCatchupReleaseViewer.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSCatchupReleaseViewer.java
deleted file mode 100644
index 6e1afe4..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSCatchupReleaseViewer.java
+++ /dev/null
@@ -1,263 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.sync;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2002.

- * All Rights Reserved.

- */

- 

-import org.eclipse.compare.CompareConfiguration;

-import org.eclipse.core.resources.IFile;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.jface.action.Action;

-import org.eclipse.jface.action.IMenuManager;

-import org.eclipse.jface.action.Separator;

-import org.eclipse.jface.dialogs.ErrorDialog;

-import org.eclipse.jface.resource.CompositeImageDescriptor;

-import org.eclipse.jface.resource.ImageDescriptor;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.ISelectionChangedListener;

-import org.eclipse.jface.viewers.IStructuredSelection;

-import org.eclipse.jface.viewers.LabelProvider;

-import org.eclipse.jface.viewers.SelectionChangedEvent;

-import org.eclipse.swt.graphics.Image;

-import org.eclipse.swt.graphics.ImageData;

-import org.eclipse.swt.graphics.Point;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.team.ccvs.core.ICVSRemoteFile;

-import org.eclipse.team.core.TeamException;

-import org.eclipse.team.core.sync.IRemoteResource;

-import org.eclipse.team.core.sync.IRemoteSyncElement;

-import org.eclipse.team.internal.ccvs.core.CVSException;

-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;

-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;

-import org.eclipse.team.internal.ccvs.ui.CVSDecorator;

-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;

-import org.eclipse.team.internal.ccvs.ui.HistoryView;

-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;

-import org.eclipse.team.internal.ccvs.ui.Policy;

-import org.eclipse.team.internal.ccvs.ui.merge.UpdateMergeAction;

-import org.eclipse.team.ui.sync.CatchupReleaseViewer;

-import org.eclipse.team.ui.sync.ITeamNode;

-import org.eclipse.team.ui.sync.MergeResource;

-import org.eclipse.team.ui.sync.SyncView;

-import org.eclipse.team.ui.sync.TeamFile;

-

-public class CVSCatchupReleaseViewer extends CatchupReleaseViewer {

-	// Actions

-	private UpdateSyncAction updateAction;

-	private CommitSyncAction commitAction;

-	private UpdateMergeAction updateMergeAction;

-	private IgnoreAction ignoreAction;

-	private HistoryAction showInHistory;

-	

-	class DiffImage extends CompositeImageDescriptor {

-		private static final int HEIGHT= 16;

-		private static final int WIDTH= 22;

-		

-		Image baseImage;

-		ImageDescriptor overlay;

-		

-		public DiffImage(Image baseImage, ImageDescriptor overlay) {

-			this.baseImage = baseImage;

-			this.overlay = overlay;

-		}

-		

-		/*

-		 * @see CompositeImageDescriptor#drawCompositeImage(int, int)

-		 */

-		protected void drawCompositeImage(int width, int height) {

-			drawImage(baseImage.getImageData(), 0, 0);

-			ImageData overlayData = overlay.getImageData();

-			drawImage(overlayData, WIDTH - overlayData.width, (HEIGHT - overlayData.height) / 2);

-		}

-

-		/*

-		 * @see CompositeImageDescriptor#getSize()

-		 */

-		protected Point getSize() {

-			return new Point(WIDTH, HEIGHT);

-		}

-	}

-	class HistoryAction extends Action implements ISelectionChangedListener {

-		IStructuredSelection selection;

-		public HistoryAction(String label) {

-			super(label);

-		}

-		public void run() {

-			if (selection.isEmpty()) return;

-			ITeamNode node = (ITeamNode)selection.getFirstElement();

-			ICVSRemoteFile remoteFile = (ICVSRemoteFile)((TeamFile)node).getMergeResource().getSyncElement().getRemote();

-			HistoryView view = HistoryView.openInActivePerspective();

-			if (view != null) {

-				view.showHistory(remoteFile);

-			}

-		}

-		public void selectionChanged(SelectionChangedEvent event) {

-			ISelection selection = event.getSelection();

-			if (!(selection instanceof IStructuredSelection)) {

-				setEnabled(false);

-				return;

-			}

-			IStructuredSelection ss = (IStructuredSelection)selection;

-			if (ss.size() != 1) {

-				setEnabled(false);

-				return;

-			}

-			ITeamNode first = (ITeamNode)ss.getFirstElement();

-			if (first instanceof TeamFile) {

-				this.selection = ss;

-				setEnabled(true);

-			} else {

-				this.selection = null;

-				setEnabled(false);

-			}

-		}

-	}

-	

-	public CVSCatchupReleaseViewer(Composite parent, CVSSyncCompareInput model) {

-		super(parent, model);

-		initializeActions(model);

-		initializeLabelProvider();

-	}

-	

-	private void initializeLabelProvider() {

-		final ImageDescriptor conflictDescriptor = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_MERGEABLE_CONFLICT);

-		final ImageDescriptor questionableDescriptor = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_QUESTIONABLE);

-		final LabelProvider oldProvider = (LabelProvider)getLabelProvider();

-		setLabelProvider(new LabelProvider() {

-			public Image getImage(Object element) {

-				Image image = oldProvider.getImage(element);

-				if (element instanceof ITeamNode) {

-					ITeamNode node = (ITeamNode)element;

-					int kind = node.getKind();

-					if ((kind & IRemoteSyncElement.AUTOMERGE_CONFLICT) != 0) {

-						DiffImage diffImage = new DiffImage(image, conflictDescriptor);

-						return diffImage.createImage();

-					}

-					if (kind == (IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION)) {

-						IResource resource = node.getResource();

-						if (resource.getType() == IResource.FILE) {

-							try {

-								if (new LocalFile(((IFile)resource).getLocation().toFile()).getSyncInfo() == null) {

-									DiffImage diffImage = new DiffImage(image, questionableDescriptor);

-									return diffImage.createImage();

-								}

-							} catch (TeamException e) {

-								ErrorDialog.openError(getControl().getShell(), null, null, e.getStatus());

-								// Fall through and return the default image

-							}

-						}

-					}

-				}

-				return image;

-			}

-			public String getText(Object element) {

-				StringBuffer postfix = new StringBuffer();

-				if (element instanceof ITeamNode) {					

-					ITeamNode node = (ITeamNode)element;

-					IResource resource = node.getResource();

-					if (resource.exists() && resource.getType() == IResource.FILE) {

-						try {

-							ResourceSyncInfo info = new LocalFile(((IFile)resource).getLocation().toFile()).getSyncInfo();

-							String kw;

-							if (info!=null) {

-								kw = CVSDecorator.getFileTypeString(resource.getName(), info.getKeywordMode());

-							} else {

-								kw = CVSDecorator.getFileTypeString(resource.getName(), null);

-							}

-							postfix.append("(" + kw + ")");

-						} catch(CVSException e) {

-							ErrorDialog.openError(getControl().getShell(), null, null, e.getStatus());

-						}

-					}

-				}								

-				return oldProvider.getText(element) + " " + postfix.toString() ;

-			}

-		});

-	}

-	

-	protected void fillContextMenu(IMenuManager manager) {

-		super.fillContextMenu(manager);

-		if (showInHistory != null) {

-			manager.add(showInHistory);

-		}

-		manager.add(new Separator());

-		switch (getSyncMode()) {

-			case SyncView.SYNC_INCOMING:

-				updateAction.update(SyncView.SYNC_INCOMING);

-				manager.add(updateAction);

-				break;

-			case SyncView.SYNC_OUTGOING:

-				commitAction.update(SyncView.SYNC_OUTGOING);

-				manager.add(commitAction);

-				ignoreAction.update();

-				manager.add(ignoreAction);

-				manager.add(new Separator());

-				updateAction.update(SyncView.SYNC_OUTGOING);

-				manager.add(updateAction);

-				break;

-			case SyncView.SYNC_BOTH:

-				commitAction.update(SyncView.SYNC_BOTH);

-				manager.add(commitAction);

-				manager.add(new Separator());

-				updateAction.update(SyncView.SYNC_BOTH);

-				manager.add(updateAction);

-				break;

-			case SyncView.SYNC_MERGE:

-				updateMergeAction.update(SyncView.SYNC_INCOMING);

-				manager.add(updateMergeAction);

-				break;

-		}

-	}

-	

-	/**

-	 * Creates the actions for this viewer.

-	 */

-	private void initializeActions(final CVSSyncCompareInput diffModel) {

-		Shell shell = getControl().getShell();

-		commitAction = new CommitSyncAction(diffModel, this, Policy.bind("CVSCatchupReleaseViewer.commit"), shell);

-		updateAction = new UpdateSyncAction(diffModel, this, Policy.bind("CVSCatchupReleaseViewer.update"), shell);

-		updateMergeAction = new UpdateMergeAction(diffModel, this, Policy.bind("CVSCatchupReleaseViewer.update"), shell);

-		ignoreAction = new IgnoreAction(diffModel, this, Policy.bind("CVSCatchupReleaseViewer.ignore"), shell);

-		// Show in history view

-		showInHistory = new HistoryAction(Policy.bind("CVSCatchupReleaseViewer.showInHistory"));

-		addSelectionChangedListener(showInHistory);	

-	}

-	

-	/**

-	 * Provide CVS-specific labels for the editors.

-	 */

-	protected void updateLabels(MergeResource resource) {

-		CompareConfiguration config = getCompareConfiguration();

-		String name = resource.getName();

-		config.setLeftLabel(Policy.bind("CVSCatchupReleaseViewer.workspaceFile", name));

-	

-		IRemoteSyncElement syncTree = resource.getSyncElement();

-		IRemoteResource remote = syncTree.getRemote();

-		if (remote != null) {

-			try {

-				String revision = ((ICVSRemoteFile)remote).getRevision();

-				config.setRightLabel(Policy.bind("CVSCatchupReleaseViewer.repositoryFileRevision", new Object[] {name, revision}));

-			} catch (TeamException e) {

-				ErrorDialog.openError(getControl().getShell(), null, null, e.getStatus());

-				config.setRightLabel(Policy.bind("CVSCatchupReleaseViewer.repositoryFile", name));

-			}

-		} else {

-			config.setRightLabel(Policy.bind("CVSCatchupReleaseViewer.noRepositoryFile"));

-		}

-	

-		IRemoteResource base = syncTree.getBase();

-		if (base != null) {

-			try {

-				String revision = ((ICVSRemoteFile)base).getRevision();

-				config.setAncestorLabel(Policy.bind("CVSCatchupReleaseViewer.commonFileRevision", new Object[] {name, revision} ));

-			} catch (TeamException e) {

-				ErrorDialog.openError(getControl().getShell(), null, null, e.getStatus());

-				config.setRightLabel(Policy.bind("CVSCatchupReleaseViewer.commonFile", name));

-			}

-		} else {

-			config.setAncestorLabel(Policy.bind("CVSCatchupReleaseViewer.noCommonFile"));

-		}

-	}

-}

diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSSyncCompareInput.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSSyncCompareInput.java
deleted file mode 100644
index 3277b05..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSSyncCompareInput.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.sync;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

- 

-import java.lang.reflect.InvocationTargetException;

-

-import org.eclipse.compare.structuremergeviewer.ICompareInput;

-import org.eclipse.compare.structuremergeviewer.IDiffContainer;

-import org.eclipse.compare.structuremergeviewer.IDiffElement;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.NullProgressMonitor;

-import org.eclipse.jface.dialogs.ErrorDialog;

-import org.eclipse.jface.viewers.Viewer;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.team.ccvs.core.CVSTeamProvider;

-import org.eclipse.team.core.ITeamProvider;

-import org.eclipse.team.core.TeamException;

-import org.eclipse.team.core.TeamPlugin;

-import org.eclipse.team.core.sync.IRemoteSyncElement;

-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;

-import org.eclipse.team.internal.ccvs.ui.Policy;

-import org.eclipse.team.ui.sync.CatchupReleaseViewer;

-import org.eclipse.team.ui.sync.ChangedTeamContainer;

-import org.eclipse.team.ui.sync.ITeamNode;

-import org.eclipse.team.ui.sync.SyncCompareInput;

-import org.eclipse.team.ui.sync.SyncSet;

-import org.eclipse.team.ui.sync.TeamFile;

-import org.eclipse.team.ui.sync.UnchangedTeamContainer;

-import org.eclipse.ui.actions.WorkspaceModifyOperation;

-

-public class CVSSyncCompareInput extends SyncCompareInput {

-	IResource[] resources;

-	/**

-	 * Creates a new catchup or release operation.

-	 */

-	public CVSSyncCompareInput(IResource[] resources) {

-		super();

-		this.resources = resources;

-	}

-	/**

-	 * Overridden to create a custom DiffTreeViewer in the top left pane of the CompareProvider.

-	 * 

-	 * Subclasses must create and return a new CatchupReleaseViewer, and set the viewer

-	 * using setViewer().

-	 */

-	public Viewer createDiffViewer(Composite parent) {

-		CatchupReleaseViewer catchupReleaseViewer = new CVSCatchupReleaseViewer(parent, this);

-		setViewer(catchupReleaseViewer);

-		return catchupReleaseViewer;

-	}

-

-	protected IRemoteSyncElement[] createSyncElements(IProgressMonitor monitor) throws TeamException {

-		IRemoteSyncElement[] trees = new IRemoteSyncElement[resources.length];

-		int work = 1000 * resources.length;

-		monitor.beginTask(null, work);

-		try {

-			for (int i = 0; i < trees.length; i++) {

-				CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(resources[i].getProject());

-				trees[i] = provider.getRemoteSyncTree(resources[i], null, Policy.subMonitorFor(monitor, 1000));

-			}

-		} finally {

-			monitor.done();

-		}

-		return trees;

-	}

-

-	protected void updateView() {

-		// Update the view

-		if (getDiffRoot().hasChildren()) {

-			getViewer().refresh();

-		} else {

-			getViewer().setInput(null);

-		}

-		

-		// Update the status line

-		updateStatusLine();

-	}

-	

-	/**

-	 * Overridden to mark the source as merged.

-	 */

-	protected void compareInputChanged(ICompareInput source) {

-		super.compareInputChanged(source);

-		contentsChanged(source);

-	}

-	protected void contentsChanged(ICompareInput source) {

-		// Mark the source as merged.

-		if (source instanceof TeamFile) {

-			IRemoteSyncElement element = ((TeamFile)source).getMergeResource().getSyncElement();

-			try {

-				CVSUIPlugin.getPlugin().getRepositoryManager().merged(new IRemoteSyncElement[] {element});

-			} catch (TeamException e) {

-				ErrorDialog.openError(getShell(), null, null, e.getStatus());

-			}

-		}

-	}

-	/*

-	 * @see SyncCompareInput#getSyncGranularity()

-	 */

-	protected int getSyncGranularity() {

-		// assuming that sync is always performed relative to the current branch. In

-		// these cases the server will perform the content comparison for us.

-		return IRemoteSyncElement.GRANULARITY_TIMESTAMP;

-	}

-}

diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CommitSyncAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CommitSyncAction.java
deleted file mode 100644
index baf0eae..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CommitSyncAction.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.core.resources.CVSRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.RepositoryManager;
-import org.eclipse.team.ui.sync.ChangedTeamContainer;
-import org.eclipse.team.ui.sync.ITeamNode;
-import org.eclipse.team.ui.sync.SyncSet;
-import org.eclipse.team.ui.sync.TeamFile;
-
-public class CommitSyncAction extends MergeAction {
-	public CommitSyncAction(CVSSyncCompareInput model, ISelectionProvider sp, String label, Shell shell) {
-		super(model, sp, label, shell);
-	}
-
-	protected SyncSet run(SyncSet syncSet, IProgressMonitor monitor) {
-		// If there is a conflict in the syncSet, we need to prompt the user before proceeding.
-		if (syncSet.hasConflicts() || syncSet.hasIncomingChanges()) {
-			String[] buttons = new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL};
-			String question = Policy.bind("CommitSyncAction.questionRelease");
-			String title = Policy.bind("CommitSyncAction.titleRelease");
-			String[] tips = new String[] {
-				Policy.bind("CommitSyncAction.releaseAll"),
-				Policy.bind("CommitSyncAction.releasePart"),
-				Policy.bind("CommitSyncAction.cancelRelease")
-			};
-			Shell shell = getShell();
-			final ToolTipMessageDialog dialog = new ToolTipMessageDialog(shell, title, null, question, MessageDialog.QUESTION, buttons, tips, 0);
-			shell.getDisplay().syncExec(new Runnable() {
-				public void run() {
-					dialog.open();
-				}
-			});
-			switch (dialog.getReturnCode()) {
-				case 0:
-					// Yes, synchronize conflicts as well
-					break;
-				case 1:
-					// No, only synchronize non-conflicting changes.
-					syncSet.removeConflictingNodes();
-					syncSet.removeIncomingNodes();
-					break;
-				case 2:
-				default:
-					// Cancel
-					return null;
-			}	
-		}
-		ITeamNode[] changed = syncSet.getChangedNodes();
-		if (changed.length == 0) {
-			return syncSet;
-		}
-		IResource[] changedResources = new IResource[changed.length];
-		List additions = new ArrayList();
-		List deletions = new ArrayList();
-		List toMerge = new ArrayList();
-		List incoming = new ArrayList();
-
-		// A list of diff elements in the sync set which are incoming folder additions
-		List parentCreationElements = new ArrayList();
-		// A list of diff elements in the sync set which are folder conflicts
-		List parentConflictElements = new ArrayList();
-		
-		for (int i = 0; i < changed.length; i++) {
-			changedResources[i] = changed[i].getResource();
-			int kind = changed[i].getKind();
-			IResource resource = changed[i].getResource();
-			IDiffContainer parent = changed[i].getParent();
-			if (parent != null) {
-				int parentKind = changed[i].getParent().getKind();
-				if (((parentKind & Differencer.CHANGE_TYPE_MASK) == Differencer.ADDITION) &&
-					((parentKind & Differencer.DIRECTION_MASK) == ITeamNode.INCOMING)) {
-					parentCreationElements.add(parent);
-				} else if ((parentKind & Differencer.DIRECTION_MASK) == ITeamNode.CONFLICTING) {
-					parentConflictElements.add(parent);
-				}
-			}
-			switch (kind & Differencer.DIRECTION_MASK) {
-				case ITeamNode.INCOMING:
-					// Incoming change. Make it outgoing before committing.
-					incoming.add(changed[i]);
-					break;
-				case ITeamNode.OUTGOING:
-					switch (kind & Differencer.CHANGE_TYPE_MASK) {
-						case Differencer.ADDITION:
-							// Outgoing addition. 'add' it before committing.
-							additions.add(resource);
-							break;
-						case Differencer.DELETION:
-							// Outgoing deletion. 'delete' it before committing.
-							deletions.add(resource);
-							break;
-						case Differencer.CHANGE:
-							// Outgoing change. Just commit it.
-							break;
-					}
-					break;
-				case ITeamNode.CONFLICTING:
-					if (changed[i] instanceof TeamFile) {
-						toMerge.add(((TeamFile)changed[i]).getMergeResource().getSyncElement());
-					}
-					break;
-			}
-		}
-		try {
-			RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
-			String comment = manager.promptForComment(getShell());
-			if (comment == null) {
-				// User cancelled. Remove the nodes from the sync set.
-				return null;
-			}
-			if (parentCreationElements.size() > 0) {
-				// If a node has a parent that is an incoming folder creation, we have to 
-				// create that folder locally and set its sync info before we can get the
-				// node itself. We must do this for all incoming folder creations (recursively)
-				// in the case where there are multiple levels of incoming folder creations.
-				Iterator it = parentCreationElements.iterator();
-				while (it.hasNext()) {
-					makeInSync((IDiffElement)it.next());
-				}				
-			}
-			if (parentConflictElements.size() > 0) {
-				// If a node has a parent that is a folder conflict, that means that the folder
-				// exists locally but has no sync info. In order to get the node, we have to 
-				// create the sync info for the folder (and any applicable parents) before we
-				// get the node itself.
-				Iterator it = parentConflictElements.iterator();
-				while (it.hasNext()) {
-					makeInSync((IDiffElement)it.next());
-				}				
-			}
-
-			// Make any incoming file changes or deletions into outgoing changes before committing.
-			Iterator it = incoming.iterator();
-			while (it.hasNext()) {
-				ITeamNode node = (ITeamNode)it.next();
-				if (node instanceof TeamFile) {
-					CVSRemoteSyncElement element = (CVSRemoteSyncElement)((TeamFile)node).getMergeResource().getSyncElement();
-					element.makeOutgoing(monitor);
-				}
-			}
-			
-			if (additions.size() != 0) {
-				manager.add((IResource[])additions.toArray(new IResource[0]), monitor);
-			}
-			if (deletions.size() != 0) {
-				manager.delete((IResource[])deletions.toArray(new IResource[0]), monitor);
-			}
-			if (toMerge.size() != 0) {
-				manager.merged((IRemoteSyncElement[])toMerge.toArray(new IRemoteSyncElement[0]));
-			}
-			manager.commit(changedResources, comment, monitor);
-			
-			it = incoming.iterator();
-			while (it.hasNext()) {
-				ITeamNode node = (ITeamNode)it.next();
-				if (node instanceof ChangedTeamContainer) {
-					CVSRemoteSyncElement element = (CVSRemoteSyncElement)((ChangedTeamContainer)node).getMergeResource().getSyncElement();
-					element.makeIncoming(monitor);
-					element.getLocal().delete(true, monitor);
-				}
-			}
-			
-		} catch (final TeamException e) {
-			getShell().getDisplay().syncExec(new Runnable() {
-				public void run() {
-					ErrorDialog.openError(getShell(), null, null, e.getStatus());
-				}
-			});
-			return null;
-		} catch (final CoreException e) {
-			getShell().getDisplay().syncExec(new Runnable() {
-				public void run() {
-					ErrorDialog.openError(getShell(), Policy.bind("simpleInternal"), Policy.bind("internal"), e.getStatus());
-					CVSUIPlugin.log(e.getStatus());
-				}
-			});
-			return null;
-		}
-		return syncSet;
-	}
-	
-	protected void makeInSync(IDiffElement parentElement) throws TeamException {
-		// Recursively make the parent element (and its parents) in sync.
-		// Walk up and find the parents which need to be made in sync too. (For
-		// each parent that doesn't already have sync info).
-		Vector v = new Vector();
-		int parentKind = parentElement.getKind();
-		while (((parentKind & Differencer.CHANGE_TYPE_MASK) == Differencer.ADDITION) &&
-			((parentKind & Differencer.DIRECTION_MASK) == ITeamNode.INCOMING) ||
-			 ((parentKind & Differencer.DIRECTION_MASK) == ITeamNode.CONFLICTING)) {
-			v.add(0, parentElement);
-			parentElement = parentElement.getParent();
-			parentKind = parentElement == null ? 0 : parentElement.getKind();
-		}
-		Iterator parentIt = v.iterator();
-		while (parentIt.hasNext()) {
-			IDiffElement next = (IDiffElement)parentIt.next();
-			if (next instanceof ChangedTeamContainer) {
-				CVSRemoteSyncElement syncElement = (CVSRemoteSyncElement)((ChangedTeamContainer)next).getMergeResource().getSyncElement();
-				// Create the sync info
-				syncElement.makeInSync(new NullProgressMonitor());
-			}
-		}
-	}
-
-	protected boolean isEnabled(ITeamNode node) {
-		return true;
-	}	
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/IgnoreAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/IgnoreAction.java
deleted file mode 100644
index 033ac5b..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/IgnoreAction.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;
-import org.eclipse.team.ui.sync.ChangedTeamContainer;
-import org.eclipse.team.ui.sync.ITeamNode;
-import org.eclipse.team.ui.sync.SyncSet;
-import org.eclipse.team.ui.sync.TeamFile;
-import org.eclipse.team.ui.sync.UnchangedTeamContainer;
-
-public class IgnoreAction extends Action {
-	Shell shell;
-	private CVSSyncCompareInput diffModel;
-	private ISelectionProvider selectionProvider;
-
-	public IgnoreAction(CVSSyncCompareInput model, ISelectionProvider sp, String label, Shell shell) {
-		super(label);
-		this.shell = shell;
-		this.diffModel = model;
-		this.selectionProvider = sp;
-	}
-	public void run() {
-		IStructuredSelection selection = (IStructuredSelection)selectionProvider.getSelection();
-		if (selection.isEmpty()) return;
-		// Do the update
-		Object first = selection.getFirstElement();
-		ICVSResource cvsResource = null;
-		if (first instanceof TeamFile) {
-			IResource resource = ((TeamFile)first).getMergeResource().getResource();
-			cvsResource = new LocalFile(resource.getLocation().toFile());
-		} else if (first instanceof ChangedTeamContainer) {
-			IResource resource = ((ChangedTeamContainer)first).getMergeResource().getResource();
-			cvsResource = new LocalFolder(resource.getLocation().toFile());
-		}
-		if (cvsResource != null) {
-			try {
-				cvsResource.setIgnored();
-			} catch (CVSException e) {
-				ErrorDialog.openError(shell, null, null, e.getStatus());
-				return;
-			}
-			removeNodes(new SyncSet(selection).getChangedNodes());
-			diffModel.updateView();
-		}
-	}
-	/**
-	 * Enabled if only one item is selected and it is an outgoing addition.
-	 * 
-	 * This may be a folder or a single file, which will be handled differently.
-	 */
-	protected boolean isEnabled(Object[] nodes) {
-		if (nodes.length != 1) return false;
-		if (!(nodes[0] instanceof ITeamNode)) return false;
-		ITeamNode node = (ITeamNode)nodes[0];
-		return node.getKind() == (ITeamNode.OUTGOING | IRemoteSyncElement.ADDITION);
-	}
-	public void update() {
-		IStructuredSelection selection = (IStructuredSelection)selectionProvider.getSelection();
-		setEnabled(isEnabled(selection.toArray()));
-	}
-	/**
-	 * The given nodes have been synchronized.  Remove them from
-	 * the sync set.
-	 */
-	private void removeNodes(final ITeamNode[] nodes) {
-		// Update the model
-		for (int i = 0; i < nodes.length; i++) {
-			if (nodes[i].getClass() == UnchangedTeamContainer.class) {
-				// Unchanged containers get removed automatically when all
-				// children are removed
-				continue;
-			}
-			if (nodes[i].getClass() == ChangedTeamContainer.class) {
-				// If this node still has children, convert to an
-				// unchanged container, then it will disappear when
-				// all children have been removed.
-				ChangedTeamContainer container = (ChangedTeamContainer)nodes[i];
-				IDiffElement[] children = container.getChildren();
-				if (children.length > 0) {
-					IDiffContainer parent = container.getParent();
-					UnchangedTeamContainer unchanged = new UnchangedTeamContainer(parent, container.getResource());
-					for (int j = 0; j < children.length; j++) {
-						unchanged.add(children[j]);
-					}
-					parent.removeToRoot(container);
-					continue;
-				}
-				// No children, it will get removed below.
-			}
-			nodes[i].getParent().removeToRoot(nodes[i]);	
-		}
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/MergeAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/MergeAction.java
deleted file mode 100644
index 3e222c9..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/MergeAction.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.ui.sync.ChangedTeamContainer;
-import org.eclipse.team.ui.sync.ITeamNode;
-import org.eclipse.team.ui.sync.SyncSet;
-import org.eclipse.team.ui.sync.SyncView;
-import org.eclipse.team.ui.sync.UnchangedTeamContainer;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Applies merge related actions to the selected ITeamNodes.
- */
-abstract class MergeAction extends Action {
-	public static final int CHECKIN = 0;
-	public static final int GET = 1;
-	public static final int DELETE_REMOTE = 2;
-	public static final int DELETE_LOCAL = 3;
-
-	private CVSSyncCompareInput diffModel;
-	private ISelectionProvider selectionProvider;
-
-	// direction can be INCOMING or OUTGOING
-	private int direction;
-
-	private Shell shell;
-	
-	/**
-	 * Creates a MergeAction which works on selection and doesn't commit changes.
-	 */
-	public MergeAction(CVSSyncCompareInput model, ISelectionProvider sp, String label, Shell shell) {
-		super(label);
-		this.diffModel = model;
-		this.selectionProvider = sp;
-		this.shell = shell;
-	}
-	
-	protected Shell getShell() {
-		return shell;
-	}
-	
-	protected CVSSyncCompareInput getDiffModel() {
-		return diffModel;
-	}
-	
-	/**
-	 * Returns true if at least one node can perform the specified action.
-	 */
-	private boolean isEnabled(Object[] nodes) {
-		for (int i = 0; i < nodes.length; i++) {
-			if (nodes[i] instanceof ITeamNode) {
-				ITeamNode node = (ITeamNode)nodes[i];
-				if (isEnabled(node)) {
-					return true;
-				}
-			} else {
-				if (nodes[i] instanceof IDiffContainer)
-					if (isEnabled(((IDiffContainer)nodes[i]).getChildren()))
-						return true;
-			}
-		}
-		return false;
-	}
-
-	protected abstract boolean isEnabled(ITeamNode node);
-	
-	/**
-	 * Perform the sychronization operation.
-	 */
-	public void run() {
-		ISelection s = selectionProvider.getSelection();
-		if (!(s instanceof IStructuredSelection) || s.isEmpty()) {
-			return;
-		}
-		final SyncSet set = new SyncSet((IStructuredSelection)s);
-		if (direction != 0) {
-			set.removeNonApplicableNodes(direction);
-		}
-		final SyncSet[] result = new SyncSet[1];
-		WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-				result[0] = run(set, monitor);
-			}
-		};
-		try {
-			run(op, Policy.bind("MergeAction.problemsDuringSync"));
-		} catch (InterruptedException e) {
-		}
-		if (result[0] != null) {
-			removeNodes(result[0].getChangedNodes());
-			diffModel.updateView();
-		}
-	}
-	
-	/**
-	 * The given nodes have been synchronized.  Remove them from
-	 * the sync set.
-	 */
-	private void removeNodes(final ITeamNode[] nodes) {
-		// Update the model
-		for (int i = 0; i < nodes.length; i++) {
-			if (nodes[i].getClass() == UnchangedTeamContainer.class) {
-				// Unchanged containers get removed automatically when all
-				// children are removed
-				continue;
-			}
-			if (nodes[i].getClass() == ChangedTeamContainer.class) {
-				// If this node still has children, convert to an
-				// unchanged container, then it will disappear when
-				// all children have been removed.
-				ChangedTeamContainer container = (ChangedTeamContainer)nodes[i];
-				IDiffElement[] children = container.getChildren();
-				if (children.length > 0) {
-					IDiffContainer parent = container.getParent();
-					UnchangedTeamContainer unchanged = new UnchangedTeamContainer(parent, container.getResource());
-					for (int j = 0; j < children.length; j++) {
-						unchanged.add(children[j]);
-					}
-					parent.removeToRoot(container);
-					continue;
-				}
-				// No children, it will get removed below.
-			}
-			nodes[i].getParent().removeToRoot(nodes[i]);	
-		}
-	}
-
-	/**
-	 * Updates the action with the latest selection, setting enablement
-	 * as necessary.
-	 */
-	public void update(int syncMode) {
-		switch (syncMode) {
-			case SyncView.SYNC_INCOMING:
-			case SyncView.SYNC_MERGE:
-				direction = IRemoteSyncElement.INCOMING;
-				break;
-			case SyncView.SYNC_OUTGOING:
-				direction = IRemoteSyncElement.OUTGOING;
-				break;
-			default:
-				direction = 0;
-				break;
-		}
-		IStructuredSelection selection = (IStructuredSelection)selectionProvider.getSelection();
-		setEnabled(isEnabled(selection.toArray()));
-	}
-	
-	/**
-	 * Subclasses must implement this method, which performs action-specific code.
-	 * 
-	 * It may return the sync set which was passed in, or null.
-	 */
-	protected abstract SyncSet run(SyncSet syncSet, IProgressMonitor monitor);
-
-	/**
-	 * Helper method to run a runnable in a progress monitor dialog, and display any errors.
-	 */
-	protected void run(IRunnableWithProgress op, String problemMessage) throws InterruptedException {
-		ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell());
-		try {
-			dialog.run(true, true, op);
-		} catch (InvocationTargetException e) {
-			Throwable throwable = e.getTargetException();
-			IStatus error = null;
-			if (throwable instanceof CoreException) {
-				error = ((CoreException)throwable).getStatus();
-			} else {
-				error = new Status(IStatus.ERROR, CVSUIPlugin.ID, 1, Policy.bind("simpleInternal") , throwable);
-			}
-			ErrorDialog.openError(shell, problemMessage, error.getMessage(), error);
-			CVSUIPlugin.log(error);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ToolTipMessageDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ToolTipMessageDialog.java
deleted file mode 100644
index aa8df4e..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ToolTipMessageDialog.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/UpdateSyncAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/UpdateSyncAction.java
deleted file mode 100644
index f794ee1..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/UpdateSyncAction.java
+++ /dev/null
@@ -1,325 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.Vector;
-
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Update;
-import org.eclipse.team.internal.ccvs.core.resources.CVSRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.RepositoryManager;
-import org.eclipse.team.ui.sync.ChangedTeamContainer;
-import org.eclipse.team.ui.sync.ITeamNode;
-import org.eclipse.team.ui.sync.SyncSet;
-import org.eclipse.team.ui.sync.TeamFile;
-
-/**
- * UpdateSyncAction is run on a set of sync nodes when the "Update" menu item is performed
- * in the Synchronize view.
- */
-public class UpdateSyncAction extends MergeAction {
-	public static class ConfirmDialog extends MessageDialog {
-
-		private boolean autoMerge = true;
-		private Button radio1;
-		private Button radio2;
-		
-		public ConfirmDialog(Shell parentShell) {
-			super(
-				parentShell, 
-				Policy.bind("UpdateSyncAction.Conflicting_changes_found_1"),  //$NON-NLS-1$
-				null,	// accept the default window icon
-				Policy.bind("UpdateSyncAction.You_have_local_changes_you_are_about_to_overwrite_2"), //$NON-NLS-1$
-				MessageDialog.QUESTION, 
-				new String[] {IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL},
-				0); 	// yes is the default
-		}
-		
-		protected Control createCustomArea(Composite parent) {
-			Composite composite = new Composite(parent, SWT.NONE);
-			composite.setLayout(new GridLayout());
-			radio1 = new Button(composite, SWT.RADIO);
-			radio1.addSelectionListener(selectionListener);
-			
-			radio1.setText(Policy.bind("UpdateSyncAction.Only_update_resources_that_can_be_automatically_merged_3")); //$NON-NLS-1$
-
-			radio2 = new Button(composite, SWT.RADIO);
-			radio2.addSelectionListener(selectionListener);
-
-			radio2.setText(Policy.bind("UpdateSyncAction.Update_all_resources,_overwriting_local_changes_with_remote_contents_4")); //$NON-NLS-1$
-			
-			// set initial state
-			radio1.setSelection(autoMerge);
-			radio2.setSelection(!autoMerge);
-			
-			return composite;
-		}
-		
-		private SelectionListener selectionListener = new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				Button button = (Button)e.widget;
-				if (button.getSelection()) {
-					autoMerge = (button == radio1);
-				}
-			}
-		};
-		
-		public boolean getAutomerge() {
-			return autoMerge;
-		}
-	}
-
-	public UpdateSyncAction(CVSSyncCompareInput model, ISelectionProvider sp, String label, Shell shell) {
-		super(model, sp, label, shell);
-	}
-
-	protected SyncSet run(final SyncSet syncSet, IProgressMonitor monitor) {
-		// If there are conflicts or outgoing changes in the syncSet, we need to warn the user.
-		final boolean doAutomerge[] = new boolean[] {false};
-		if (syncSet.hasConflicts() || syncSet.hasOutgoingChanges()) {
-			final Shell shell = getShell();
-			if (syncSet.hasAutoMergeableConflicts()) {
-				final int[] result = new int[] {Dialog.CANCEL};
-				shell.getDisplay().syncExec(new Runnable() {
-					public void run() {
-						ConfirmDialog dialog = new ConfirmDialog(shell);
-						result[0] = dialog.open();
-						doAutomerge[0] = dialog.getAutomerge();
-					}
-				});
-				if (result[0] == Dialog.CANCEL) return null;
-				if (doAutomerge[0]) {
-					syncSet.removeNonMergeableNodes();
-				}	
-			} else {
-				final boolean[] result = new boolean[] { false };
-				shell.getDisplay().syncExec(new Runnable() {
-					public void run() {
-						result[0] = MessageDialog.openQuestion(shell, Policy.bind("UpdateSyncAction.Overwrite_local_changes__5"), Policy.bind("UpdateSyncAction.You_have_local_changes_you_are_about_to_overwrite._Do_you_wish_to_continue__6")); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-				});
-				if (!result[0]) {
-					return null;
-				}
-			}
-		}
-		
-		ITeamNode[] changed = syncSet.getChangedNodes();
-		if (changed.length == 0) {
-			return syncSet;
-		}
-		
-		List updateIgnoreLocalShallow = new ArrayList();
-		List updateDeep = new ArrayList();
-		List updateShallow = new ArrayList();
-
-		// A list of diff elements in the sync set which are incoming folder additions
-		Set parentCreationElements = new HashSet();
-		// A list of diff elements in the sync set which are folder conflicts
-		Set parentConflictElements = new HashSet();
-		// A list of the team nodes that we need to perform makeIncoming on
-		List makeIncoming = new ArrayList();
-		// A list of diff elements that need to be unmanaged and locally deleted
-		List deletions = new ArrayList();
-		
-		for (int i = 0; i < changed.length; i++) {
-			IDiffContainer parent = changed[i].getParent();
-			if (parent != null) {
-				int parentKind = changed[i].getParent().getKind();
-				if (((parentKind & Differencer.CHANGE_TYPE_MASK) == Differencer.ADDITION) &&
-					((parentKind & Differencer.DIRECTION_MASK) == ITeamNode.INCOMING)) {
-					parentCreationElements.add(parent);
-				} else if ((parentKind & Differencer.DIRECTION_MASK) == ITeamNode.CONFLICTING) {
-					parentConflictElements.add(parent);
-				}
-			}
-			int kind = changed[i].getKind();
-			IResource resource = changed[i].getResource();
-			switch (kind & Differencer.DIRECTION_MASK) {
-				case ITeamNode.INCOMING:
-					switch (kind & Differencer.CHANGE_TYPE_MASK) {
-						case Differencer.ADDITION:
-							updateIgnoreLocalShallow.add(resource);
-							break;
-						case Differencer.DELETION:
-						case Differencer.CHANGE:
-							updateDeep.add(resource);
-							break;
-					}
-					break;
-				case ITeamNode.OUTGOING:
-					switch (kind & Differencer.CHANGE_TYPE_MASK) {
-						case Differencer.ADDITION:
-							// Unmanage the file if necessary and delete it.
-							deletions.add(changed[i]);
-							break;
-						case Differencer.DELETION:
-							makeIncoming.add(changed[i]);
-							updateDeep.add(resource);
-							break;
-						case Differencer.CHANGE:
-							updateIgnoreLocalShallow.add(resource);
-							break;
-					}
-					break;
-				case ITeamNode.CONFLICTING:
-					switch (kind & Differencer.CHANGE_TYPE_MASK) {
-						case Differencer.ADDITION:
-							// To do: conflicting addition: must make incoming first
-							makeIncoming.add(changed[i]);
-							updateIgnoreLocalShallow.add(resource);
-							break;
-						case Differencer.DELETION:
-							// Doesn't happen, these nodes don't appear in the tree.
-							break;
-						case Differencer.CHANGE:
-							// Depends on the flag.
-							if (doAutomerge[0] && (changed[i].getKind() & IRemoteSyncElement.AUTOMERGE_CONFLICT) != 0) {
-								updateShallow.add(resource);
-							} else {
-								updateIgnoreLocalShallow.add(resource);
-							}
-							break;
-					}
-					break;
-			}
-		}
-		try {
-			RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
-			if (parentCreationElements.size() > 0) {
-				// If a node has a parent that is an incoming folder creation, we have to 
-				// create that folder locally and set its sync info before we can get the
-				// node itself. We must do this for all incoming folder creations (recursively)
-				// in the case where there are multiple levels of incoming folder creations.
-				Iterator it = parentCreationElements.iterator();
-				while (it.hasNext()) {
-					makeInSync((IDiffElement)it.next());
-				}				
-			}
-			if (parentConflictElements.size() > 0) {
-				// If a node has a parent that is a folder conflict, that means that the folder
-				// exists locally but has no sync info. In order to get the node, we have to 
-				// create the sync info for the folder (and any applicable parents) before we
-				// get the node itself.
-				Iterator it = parentConflictElements.iterator();
-				while (it.hasNext()) {
-					makeInSync((IDiffElement)it.next());
-				}				
-			}
-			// Make any outgoing changes or deletions into incoming changes before updating.
-			Iterator it = makeIncoming.iterator();
-			while (it.hasNext()) {
-				ITeamNode node = (ITeamNode)it.next();
-				if (node instanceof TeamFile) {
-					CVSRemoteSyncElement element = (CVSRemoteSyncElement)((TeamFile)node).getMergeResource().getSyncElement();
-					element.makeIncoming(monitor);
-				} else if (node instanceof ChangedTeamContainer) {
-					CVSRemoteSyncElement element = (CVSRemoteSyncElement)((ChangedTeamContainer)node).getMergeResource().getSyncElement();
-					element.makeIncoming(monitor);
-				}
-			}
-			// Outgoing additions must be unmanaged (if necessary) and locally deleted.
-			it = deletions.iterator();
-			while (it.hasNext()) {
-				ITeamNode node = (ITeamNode)it.next();
-				if (node instanceof TeamFile) {
-					CVSRemoteSyncElement element = (CVSRemoteSyncElement)((TeamFile)node).getMergeResource().getSyncElement();
-					element.makeIncoming(monitor);
-					element.getLocal().delete(true, monitor);
-				} else if (node instanceof ChangedTeamContainer) {
-					CVSRemoteSyncElement element = (CVSRemoteSyncElement)((ChangedTeamContainer)node).getMergeResource().getSyncElement();
-					element.makeIncoming(monitor);
-					element.getLocal().delete(true, monitor);
-				}
-			}
-			
-			if (updateShallow.size() > 0) {
-				manager.update((IResource[])updateShallow.toArray(new IResource[0]), getLocalOptions(new Command.LocalOption[] { Command.DO_NOT_RECURSE }), false, monitor);
-			}
-			if (updateIgnoreLocalShallow.size() > 0) {
-				manager.update((IResource[])updateIgnoreLocalShallow.toArray(new IResource[0]), getLocalOptions(new Command.LocalOption[] { Update.IGNORE_LOCAL_CHANGES, Command.DO_NOT_RECURSE }), false, monitor);
-			}
-			if (updateDeep.size() > 0) {
-				manager.update((IResource[])updateDeep.toArray(new IResource[0]), getLocalOptions(Command.NO_LOCAL_OPTIONS), false, monitor);
-			}
-		} catch (final TeamException e) {
-			getShell().getDisplay().syncExec(new Runnable() {
-				public void run() {
-					ErrorDialog.openError(getShell(), null, null, e.getStatus());
-				}
-			});
-			return null;
-		} catch (final CoreException e) {
-			getShell().getDisplay().syncExec(new Runnable() {
-				public void run() {
-					ErrorDialog.openError(getShell(), Policy.bind("simpleInternal"), Policy.bind("internal"), e.getStatus()); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			});
-			CVSUIPlugin.log(e.getStatus());
-			return null;
-		}
-		return syncSet;
-	}
-	protected Command.LocalOption[] getLocalOptions(Command.LocalOption[] baseOptions) {
-		return baseOptions;
-	}
-	
-	protected void makeInSync(IDiffElement parentElement) throws TeamException {
-		// Recursively make the parent element (and its parents) in sync.
-		// Walk up and find the parents which need to be made in sync too. (For
-		// each parent that doesn't already have sync info).
-		Vector v = new Vector();
-		int parentKind = parentElement.getKind();
-		while (((parentKind & Differencer.CHANGE_TYPE_MASK) == Differencer.ADDITION) &&
-			((parentKind & Differencer.DIRECTION_MASK) == ITeamNode.INCOMING)) {
-			v.add(0, parentElement);
-			parentElement = parentElement.getParent();
-			parentKind = parentElement == null ? 0 : parentElement.getKind();
-		}
-		Iterator parentIt = v.iterator();
-		while (parentIt.hasNext()) {
-			IDiffElement next = (IDiffElement)parentIt.next();
-			if (next instanceof ChangedTeamContainer) {
-				CVSRemoteSyncElement syncElement = (CVSRemoteSyncElement)((ChangedTeamContainer)next).getMergeResource().getSyncElement();
-				// Create the sync info
-				syncElement.makeInSync(new NullProgressMonitor());
-			}
-		}
-	}
-	protected boolean isEnabled(ITeamNode node) {
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/BranchWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/BranchWizard.java
deleted file mode 100644
index 46ae9a0..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/BranchWizard.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.RepositoryManager;
-import org.eclipse.team.internal.ccvs.ui.model.BranchTag;
-
-public class BranchWizard extends Wizard {
-	BranchWizardPage mainPage;
-	IResource[] resources;
-	
-	public BranchWizard() {
-		setNeedsProgressMonitor(true);
-	}
-	
-	public void addPages() {
-		mainPage = new BranchWizardPage("branchPage", Policy.bind("BranchWizard.createABranch"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_BRANCH));
-		addPage(mainPage);
-	}
-	public boolean performFinish() {
-		final boolean[] result = new boolean[] {false};
-		try {
-			getContainer().run(false, false, new IRunnableWithProgress() {
-				public void run(IProgressMonitor monitor) throws InvocationTargetException {
-					try {
-						String tagString = mainPage.getBranchTag();
-						boolean update = mainPage.getUpdate();
-						String versionString = mainPage.getVersionTag();
-						CVSTag versionTag = null;
-						if (versionString != null) {
-							versionTag = new CVSTag(versionString, CVSTag.VERSION);
-						}
-						
-						// To do: use the wizard's progress monitor
-						RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
-						Hashtable table = getProviderMapping(resources);
-						Set keySet = table.keySet();
-						monitor.beginTask("", keySet.size() * 1000);
-						MultiStatus status = new MultiStatus(CVSUIPlugin.ID, IStatus.INFO, Policy.bind("BranchWizard.errorTagging"), null);
-						Iterator iterator = keySet.iterator();
-						while (iterator.hasNext()) {
-							IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-							CVSTeamProvider provider = (CVSTeamProvider)iterator.next();
-							List list = (List)table.get(provider);
-							IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-							ICVSRepositoryLocation root = provider.getRemoteRoot();
-							CVSTag tag = new CVSTag(tagString, CVSTag.BRANCH);
-							try {
-								if (versionTag != null) {
-									provider.tag(providerResources, IResource.DEPTH_INFINITE, versionTag, subMonitor);
-									for (int i = 0; i < providerResources.length; i++) {
-										ICVSRemoteFolder remoteResource = (ICVSRemoteFolder)provider.getRemoteResource(providerResources[i]);
-										manager.addVersionTags(remoteResource, new CVSTag[] { versionTag });
-									}
-								}
-								provider.tag(providerResources, IResource.DEPTH_INFINITE, tag, subMonitor);
-								if (update) {
-									provider.update(providerResources, Command.NO_LOCAL_OPTIONS, tag, null, subMonitor);
-									manager.addBranchTags(root, new BranchTag[] { new BranchTag(tag, root) });
-								}
-							} catch (TeamException e) {
-								status.merge(e.getStatus());
-							}
-						}
-						if (!status.isOK()) {
-							ErrorDialog.openError(getShell(), null, null, status);
-						}
-						result[0] = true;
-					} catch (CVSException e) {
-						throw new InvocationTargetException(e);
-					} finally {
-						monitor.done();
-					}
-				}
-			});
-		} catch (InterruptedException e) {
-			return true;
-		} catch (InvocationTargetException e) {
-			Throwable target = e.getTargetException();
-			if (target instanceof CVSException) {
-				ErrorDialog.openError(getShell(), null, null, ((CVSException)target).getStatus());
-				return false;
-			}
-			if (target instanceof RuntimeException) {
-				throw (RuntimeException)target;
-			}
-			if (target instanceof Error) {
-				throw (Error)target;
-			}
-		}
-		return result[0];
-	}
-	public void setResources(IResource[] resources) {
-		this.resources = resources;
-	}
-	private Hashtable getProviderMapping(IResource[] resources) {
-		Hashtable result = new Hashtable();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = TeamPlugin.getManager().getProvider(resources[i].getProject());
-			List list = (List)result.get(provider);
-			if (list == null) {
-				list = new ArrayList();
-				result.put(provider, list);
-			}
-			list.add(resources[i]);
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/BranchWizardPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/BranchWizardPage.java
deleted file mode 100644
index d9066a3..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/BranchWizardPage.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-public class BranchWizardPage extends CVSWizardPage {
-	boolean update;
-	String branchTag;
-	String versionTag;
-	boolean doVersion;
-	
-	Text versionText;
-	Text branchText;
-	
-	public BranchWizardPage(String pageName, String title, ImageDescriptor titleImage) {
-		super(pageName, title, titleImage);
-	}
-	/*
-	 * @see IDialogPage#createControl(Composite)
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = createComposite(parent, 2);
-		
-		Label label = new Label(composite, SWT.WRAP);
-		label.setText(Policy.bind("BranchWizardPage.description"));
-		GridData data = new GridData();
-		data.horizontalSpan = 2;
-		data.widthHint = 350;
-		label.setLayoutData(data);
-		
-		createLabel(composite, "");
-		createLabel(composite, "");
-		
-		createLabel(composite, Policy.bind("BranchWizardPage.branchName"));
-		branchText = createTextField(composite);
-		branchText.addListener(SWT.Modify, new Listener() {
-			public void handleEvent(Event event) {
-				branchTag = branchText.getText();
-				updateEnablement();
-			}
-		});
-
-		createLabel(composite, "");
-		createLabel(composite, "");
-
-		final Button check = new Button(composite, SWT.CHECK);
-		data = new GridData();
-		data.horizontalSpan = 2;
-		check.setLayoutData(data);
-		check.setText(Policy.bind("BranchWizardPage.startWorking"));
-		check.addListener(SWT.Selection, new Listener() {
-			public void handleEvent(Event event) {
-				update = check.getSelection();
-			}
-		});
-		check.setSelection(true);		
-		update = true;
-		
-		createLabel(composite, "");
-		createLabel(composite, "");
-
-		final Button specifyVersion = new Button(composite, SWT.CHECK);
-		data = new GridData();
-		data.horizontalSpan = 2;
-		specifyVersion.setLayoutData(data);
-		specifyVersion.setText(Policy.bind("BranchWizardPage.specifyVersion"));
-		specifyVersion.setSelection(true);
-		doVersion = true;
-		
-		createLabel(composite, Policy.bind("BranchWizardPage.versionName"));
-		versionText = createTextField(composite);
-		versionText.addListener(SWT.Modify, new Listener() {
-			public void handleEvent(Event event) {
-				versionTag = versionText.getText();
-				updateEnablement();
-			}
-		});
-		specifyVersion.addListener(SWT.Selection, new Listener() {
-			public void handleEvent(Event event) {
-				doVersion = specifyVersion.getSelection();
-				versionText.setEnabled(doVersion);
-				updateEnablement();
-			}
-		});
-		
-		setControl(composite);
-	}
-	public String getBranchTag() {
-		return branchTag;
-	}
-	public boolean getUpdate() {
-		return update;
-	}
-	public String getVersionTag() {
-		if (doVersion) {
-			return versionTag;
-		} else {
-			return null;
-		}
-	}
-	private void updateEnablement() {
-		IStatus status = CVSTag.validateTagName(branchText.getText());
-		if (status.isOK()) {
-			setErrorMessage(null);
-		} else {
-			setErrorMessage(status.getMessage());
-			setPageComplete(false);
-			return;
-		}
-		
-		if (doVersion) {
-			status = CVSTag.validateTagName(versionText.getText());
-			if (status.isOK()) {
-				setErrorMessage(null);
-			} else {
-				setErrorMessage(status.getMessage());
-				setPageComplete(false);
-				return;
-			}
-		}
-		setPageComplete(true);
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSWizardPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSWizardPage.java
deleted file mode 100644
index 7ee3f15..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSWizardPage.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.internal.ccvs.ui.*;
-
-/**
- * Common superclass for CVS wizard pages. Provides convenience methods
- * for widget creation.
- */
-public abstract class CVSWizardPage extends WizardPage {
-	/**
-	 * CVSWizardPage constructor comment.
-	 * @param pageName  the name of the page
-	 */
-	public CVSWizardPage(String pageName) {
-		super(pageName);
-	}
-	/**
-	 * CVSWizardPage constructor comment.
-	 * @param pageName  the name of the page
-	 * @param title  the title of the page
-	 * @param titleImage  the image for the page
-	 */
-	public CVSWizardPage(String pageName, String title, ImageDescriptor titleImage) {
-		super(pageName, title, titleImage);
-	}
-	/**
-	 * Creates a new checkbox instance and sets the default layout data.
-	 *
-	 * @param group  the composite in which to create the checkbox
-	 * @param label  the string to set into the checkbox
-	 * @return the new checkbox
-	 */ 
-	protected Button createCheckBox(Composite group, String label) {
-		Button button = new Button(group, SWT.CHECK | SWT.LEFT);
-		button.setText(label);
-		GridData data = new GridData();
-		data.horizontalSpan = 2;
-		button.setLayoutData(data);
-		return button;
-	}
-	/**
-	 * Utility method that creates a combo box
-	 *
-	 * @param parent  the parent for the new label
-	 * @return the new widget
-	 */
-	protected Combo createCombo(Composite parent) {
-		Combo combo = new Combo(parent, SWT.READ_ONLY);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
-		combo.setLayoutData(data);
-		return combo;
-	}
-	/**
-	 * Creates composite control and sets the default layout data.
-	 *
-	 * @param parent  the parent of the new composite
-	 * @param numColumns  the number of columns for the new composite
-	 * @return the newly-created coposite
-	 */
-	protected Composite createComposite(Composite parent, int numColumns) {
-		Composite composite = new Composite(parent, SWT.NULL);
-	
-		// GridLayout
-		GridLayout layout = new GridLayout();
-		layout.numColumns = numColumns;
-		composite.setLayout(layout);
-	
-		// GridData
-		GridData data = new GridData();
-		data.verticalAlignment = GridData.FILL;
-		data.horizontalAlignment = GridData.FILL;
-		composite.setLayoutData(data);
-		return composite;
-	}
-	/**
-	 * Utility method that creates a label instance
-	 * and sets the default layout data.
-	 *
-	 * @param parent  the parent for the new label
-	 * @param text  the text for the new label
-	 * @return the new label
-	 */
-	protected Label createLabel(Composite parent, String text) {
-		Label label = new Label(parent, SWT.LEFT);
-		label.setText(text);
-		GridData data = new GridData();
-		data.horizontalSpan = 1;
-		data.horizontalAlignment = GridData.FILL;
-		label.setLayoutData(data);
-		return label;
-	}
-	/**
-	 * Create a text field specific for this application
-	 *
-	 * @param parent  the parent of the new text field
-	 * @return the new text field
-	 */
-	protected Text createTextField(Composite parent) {
-		Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		data.verticalAlignment = GridData.CENTER;
-		data.grabExcessVerticalSpace = false;
-		data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
-		text.setLayoutData(data);
-		return text;
-	}
-	/**
-	 * Utility method to create a radio button
-	 * 
-	 * @param parent  the parent of the radio button
-	 * @param label  the label of the radio button
-	 * @param span  the number of columns to span
-	 * @return the created radio button
-	 */
-	protected Button createRadioButton(Composite parent, String label, int span) {
-		Button button = new Button(parent, SWT.RADIO);
-		button.setText(label);
-		GridData data = new GridData();
-		data.horizontalSpan = span;
-		button.setLayoutData(data);
-		return button;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardAutoconnectPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardAutoconnectPage.java
deleted file mode 100644
index c082f21..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardAutoconnectPage.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * This configuration page explains to the user that CVS/ directories already exists and
- * it will attach the selected project to the repository that is specified in the CVS/ files.
- * 
- * This is useful for people who have checked out a project using command-line tools.
- */
-public class ConfigurationWizardAutoconnectPage extends CVSWizardPage {
-	private boolean validate = true;
-	private FolderSyncInfo info;
-	ICVSRepositoryLocation location;
-
-	public ConfigurationWizardAutoconnectPage(String pageName, String title, ImageDescriptor titleImage) {
-		super(pageName, title, titleImage);
-	}
-
-	/*
-	 * @see IDialogPage#createControl(Composite)
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = createComposite(parent, 2);
-		setControl(composite);
-		
-		Label description = new Label(composite, SWT.WRAP);
-		GridData data = new GridData();
-		data.horizontalSpan = 2;
-		data.widthHint = 350;
-		description.setLayoutData(data);
-		description.setText(Policy.bind("ConfigurationWizardAutoconnectPage.description"));
-		
-		if (location == null) return;
-
-		// Spacer
-		createLabel(composite, "");
-		createLabel(composite, "");
-		
-		createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.user"));
-		createLabel(composite, location.getUsername());
-		createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.host"));
-		createLabel(composite, location.getHost());
-		createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.port"));
-		int port = location.getPort();
-		if (port == location.USE_DEFAULT_PORT) {
-			createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.default"));
-		} else {
-			createLabel(composite, "" + port);
-		}
-		createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.connectionType"));
-		createLabel(composite, location.getMethod().getName());
-		createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.repositoryPath"));
-		createLabel(composite, location.getRootDirectory());
-		createLabel(composite, Policy.bind("ConfigurationWizardAutoconnectPage.module"));
-		createLabel(composite, info.getRepository());
-		
-		// Spacer
-		createLabel(composite, "");
-		createLabel(composite, "");
-		
-		final Button check = new Button(composite, SWT.CHECK);
-		data = new GridData();
-		data.horizontalSpan = 2;
-		check.setText(Policy.bind("ConfigurationWizardAutoconnectPage.validate"));
-		check.addListener(SWT.Selection, new Listener() {
-			public void handleEvent(Event event) {
-				validate = check.getSelection();
-			}
-		});
-		check.setSelection(true);		
-	}
-	
-	public FolderSyncInfo getFolderSyncInfo() {
-		return info;
-	}
-	public boolean getValidate() {
-		return validate;
-	}
-	public void setProject(IProject project) {
-		try {
-			ICVSFolder folder = (ICVSFolder)Session.getManagedResource(project);
-			info = folder.getFolderSyncInfo();
-			if (info == null) {
-				// This should never happen
-				ErrorDialog.openError(getContainer().getShell(), Policy.bind("ConfigurationWizardAutoconnectPage.noSyncInfo"), Policy.bind("ConfigurationWizardAutoconnectPage.noCVSDirectory"), null);
-				return;
-			}
-			location = CVSRepositoryLocation.fromString(info.getRoot());
-		} catch (TeamException e) {
-			Shell shell = new Shell(Display.getDefault());
-			ErrorDialog.openError(shell, null, null, e.getStatus());
-			shell.dispose();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java
deleted file mode 100644
index ec151b2..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java
+++ /dev/null
@@ -1,405 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * Wizard page for entering information about a CVS repository location.
- */
-public class ConfigurationWizardMainPage extends CVSWizardPage {
-	private boolean showValidate;
-	private boolean validate;
-	
-	// Widgets
-	
-	// Connection Method
-	private Combo connectionMethodCombo;
-	// User
-	private Combo userCombo;
-	// Password
-	private Text passwordText;
-	// Port
-	private Text portText;
-	private Button useDefaultPort;
-	private Button useCustomPort;
-	// Host
-	private Combo hostCombo;
-	// Repository Path
-	private Combo repositoryPathCombo;
-	// Validation
-	private Button validateButton;
-	
-	private static final int COMBO_HISTORY_LENGTH = 5;
-	
-	private Properties properties = new Properties();
-	
-	// Dialog store id constants
-	private static final String STORE_USERNAME_ID =
-		"ConfigurationWizardMainPage.STORE_USERNAME_ID";//$NON-NLS-1$
-	private static final String STORE_HOSTNAME_ID =
-		"ConfigurationWizardMainPage.STORE_HOSTNAME_ID";//$NON-NLS-1$
-	private static final String STORE_PATH_ID =
-		"ConfigurationWizardMainPage.STORE_PATH_ID";//$NON-NLS-1$
-	private static final String STORE_DONT_VALIDATE_ID =
-		"ConfigurationWizardMainPage.STORE_DONT_VALIDATE_ID";//$NON-NLS-1$
-	
-	// In case the page was launched from a different wizard	
-	private IDialogSettings settings;
-	
-	/**
-	 * ConfigurationWizardMainPage constructor.
-	 * 
-	 * @param pageName  the name of the page
-	 * @param title  the title of the page
-	 * @param titleImage  the image for the page
-	 */
-	public ConfigurationWizardMainPage(String pageName, String title, ImageDescriptor titleImage) {
-		super(pageName, title, titleImage);
-	}
-	/**
-	 * Adds an entry to a history, while taking care of duplicate history items
-	 * and excessively long histories.  The assumption is made that all histories
-	 * should be of length <code>ConfigurationWizardMainPage.COMBO_HISTORY_LENGTH</code>.
-	 *
-	 * @param history the current history
-	 * @param newEntry the entry to add to the history
-	 * @return the history with the new entry appended
-	 */
-	private String[] addToHistory(String[] history, String newEntry) {
-		ArrayList l = new ArrayList(Arrays.asList(history));
-		addToHistory(l, newEntry);
-		String[] r = new String[l.size()];
-		l.toArray(r);
-		return r;
-	}
-	protected IDialogSettings getDialogSettings() {
-		return settings;
-	}
-	protected void setDialogSettings(IDialogSettings settings) {
-		this.settings = settings;
-	}
-	/**
-	 * Adds an entry to a history, while taking care of duplicate history items
-	 * and excessively long histories.  The assumption is made that all histories
-	 * should be of length <code>ConfigurationWizardMainPage.COMBO_HISTORY_LENGTH</code>.
-	 *
-	 * @param history the current history
-	 * @param newEntry the entry to add to the history
-	 */
-	private void addToHistory(List history, String newEntry) {
-		history.remove(newEntry);
-		history.add(0,newEntry);
-	
-		// since only one new item was added, we can be over the limit
-		// by at most one item
-		if (history.size() > COMBO_HISTORY_LENGTH)
-			history.remove(COMBO_HISTORY_LENGTH);
-	}
-	/**
-	 * Creates the UI part of the page.
-	 * 
-	 * @param parent  the parent of the created widgets
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = createComposite(parent, 2);
-		// set F1 help
-		// WorkbenchHelp.setHelp(composite, new DialogPageContextComputer (this, ITeamHelpContextIds.REPO_CONNECTION_MAIN_PAGE));
-
-		Listener listener = new Listener() {
-			public void handleEvent(Event event) {
-				updateWidgetEnablements();
-			}
-		};
-		
-		createLabel(composite, Policy.bind("ConfigurationWizardMainPage.connection"));
-		connectionMethodCombo = createCombo(composite);
-
-		createLabel(composite, Policy.bind("ConfigurationWizardMainPage.userName"));
-		userCombo = createEditableCombo(composite);
-		userCombo.addListener(SWT.Selection, listener);
-		userCombo.addListener(SWT.Modify, listener);
-		
-		createLabel(composite, Policy.bind("ConfigurationWizardMainPage.password"));
-		passwordText = createTextField(composite);
-		passwordText.setEchoChar('*');
-
-		createLabel(composite, Policy.bind("ConfigurationWizardMainPage.host"));
-		hostCombo = createEditableCombo(composite);
-		hostCombo.addListener(SWT.Selection, listener);
-		hostCombo.addListener(SWT.Modify, listener);
-		
-		useDefaultPort = createRadioButton(composite, Policy.bind("ConfigurationWizardMainPage.useDefaultPort"), 2);
-		useCustomPort = createRadioButton(composite, Policy.bind("ConfigurationWizardMainPage.usePort"), 1);
-		useCustomPort.addListener(SWT.Selection, listener);
-		portText = createTextField(composite);
-		portText.addListener(SWT.Selection, listener);
-		
-		createLabel(composite, Policy.bind("ConfigurationWizardMainPage.repositoryPath"));
-		repositoryPathCombo = createEditableCombo(composite);
-		repositoryPathCombo.addListener(SWT.Selection, listener);
-		repositoryPathCombo.addListener(SWT.Modify, listener);
-		
-		if (showValidate) {
-			validateButton = new Button(composite, SWT.CHECK);
-			GridData data = new GridData();
-			data.horizontalSpan = 2;
-			validateButton.setLayoutData(data);
-			validateButton.setText(Policy.bind("ConfigurationWizardAutoconnectPage.validate"));
-			validateButton.addListener(SWT.Selection, new Listener() {
-				public void handleEvent(Event e) {
-					validate = validateButton.getSelection();
-				}
-			});
-		}
-		
-		initializeValues();
-		updateWidgetEnablements();
-		if (userCombo != null) {
-			userCombo.setFocus();
-		}
-		
-		setControl(composite);
-	}
-	/**
-	 * Utility method to create an editable combo box
-	 * 
-	 * @param parent  the parent of the combo box
-	 * @return the created combo
-	 */
-	protected Combo createEditableCombo(Composite parent) {
-		Combo combo = new Combo(parent, SWT.NULL);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
-		combo.setLayoutData(data);
-		return combo;
-	}
-	/**
-	 * @see CVSWizardPage#finish
-	 */
-	public boolean finish(IProgressMonitor monitor) {
-		// Set the result to be the current values
-		Properties result = new Properties();
-		result.setProperty("connection", connectionMethodCombo.getText());
-		result.setProperty("user", userCombo.getText());
-		result.setProperty("password", passwordText.getText());
-		result.setProperty("host", hostCombo.getText());
-		if (useCustomPort.getSelection()) {
-			result.setProperty("port", portText.getText());
-		}
-		result.setProperty("root", repositoryPathCombo.getText());
-		this.properties = result;
-		
-		saveWidgetValues();
-		
-		return true;
-	}
-	/**
-	 * Returns the properties for the repository connection
-	 * 
-	 * @return the properties or null
-	 */
-	public Properties getProperties() {
-		return properties;
-	}
-	/**
-	 * Initializes states of the controls.
-	 */
-	private void initializeValues() {
-		// Set remembered values
-		IDialogSettings settings = getDialogSettings();
-		if (settings != null) {
-			String[] hostNames = settings.getArray(STORE_HOSTNAME_ID);
-			if (hostNames != null) {
-				for (int i = 0; i < hostNames.length; i++) {
-					hostCombo.add(hostNames[i]);
-				}
-			}
-			String[] paths = settings.getArray(STORE_PATH_ID);
-			if (paths != null) {
-				for (int i = 0; i < paths.length; i++) {
-					repositoryPathCombo.add(paths[i]);
-				}
-			}
-			String[] userNames = settings.getArray(STORE_USERNAME_ID);
-			if (userNames != null) {
-				for (int i = 0; i < userNames.length; i++) {
-					userCombo.add(userNames[i]);
-				}
-			}
-			if (showValidate) {
-				validate = !settings.getBoolean(STORE_DONT_VALIDATE_ID);
-				validateButton.setSelection(validate);
-			}
-		}
-		
-		// Initialize other values and widget states
-		String[] methods = CVSProviderPlugin.getProvider().getSupportedConnectionMethods();
-		for (int i = 0; i < methods.length; i++) {
-			connectionMethodCombo.add(methods[i]);
-		}
-		String method = (String)properties.getProperty("connection");
-		if (method == null) {
-			connectionMethodCombo.select(0);
-		} else {
-			connectionMethodCombo.select(connectionMethodCombo.indexOf(method));
-		}
-
-		String user = (String)properties.getProperty("user");
-		if (user != null) {
-			userCombo.setText(user);
-		}
-
-		String password = (String)properties.getProperty("password");
-		if (password != null) {
-			passwordText.setText(password);
-		}
-
-		String host = (String)properties.getProperty("host");
-		if (host != null) {
-			hostCombo.setText(host);
-		}
-
-		String port = (String)properties.getProperty("port");
-		if (port == null) {
-			useDefaultPort.setSelection(true);
-		} else {
-			useCustomPort.setSelection(true);
-			portText.setText(port);
-		}
-
-		String repositoryPath = (String)properties.getProperty("root");
-		if (repositoryPath != null) {
-			repositoryPathCombo.setText(repositoryPath);
-		}
-	}
-	/**
-	 * Saves the widget values
-	 */
-	private void saveWidgetValues() {
-		// Update history
-		IDialogSettings settings = getDialogSettings();
-		if (settings != null) {
-			String[] userNames = settings.getArray(STORE_USERNAME_ID);
-			if (userNames == null) userNames = new String[0];
-			userNames = addToHistory(userNames, userCombo.getText());
-			settings.put(STORE_USERNAME_ID, userNames);
-
-			String[] hostNames = settings.getArray(STORE_HOSTNAME_ID);
-			if (hostNames == null) hostNames = new String[0];
-			hostNames = addToHistory(hostNames, hostCombo.getText());
-			settings.put(STORE_HOSTNAME_ID, hostNames);
-
-			String[] paths = settings.getArray(STORE_PATH_ID);
-			if (paths == null) paths = new String[0];
-			paths = addToHistory(paths, repositoryPathCombo.getText());
-			settings.put(STORE_PATH_ID, paths);
-
-			if (showValidate) {
-				settings.put(STORE_DONT_VALIDATE_ID, !validate);
-			}
-		}
-	}
-
-	public void setShowValidate(boolean showValidate) {
-		this.showValidate = showValidate;
-	}
-	
-	/**
-	 * Sets the properties for the repository connection
-	 * 
-	 * @param properties  the properties or null
-	 */
-	public void setProperties(Properties properties) {
-		this.properties = properties;
-	}
-	/**
-	 * Updates widget enablements and sets error message if appropriate.
-	 */
-	protected void updateWidgetEnablements() {
-		if (useDefaultPort.getSelection()) {
-			portText.setEnabled(false);
-		} else {
-			portText.setEnabled(true);
-		}
-
-		validateFields();
-	}
-	/**
-	 * Validates the contents of the editable fields and set page completion 
-	 * and error messages appropriately.
-	 */
-	private void validateFields() {
-		String user = userCombo.getText();
-		if (user.length() == 0) {
-			setErrorMessage(null);
-			setPageComplete(false);
-			return;
-		}
-		if ((user.indexOf('@') != -1) || (user.indexOf(':') != -1)) {
-			setErrorMessage(Policy.bind("ConfigurationWizardMainPage.invalidUserName"));
-			setPageComplete(false);
-			return;
-		}
-
-		String host = hostCombo.getText();
-		if (host.length() == 0) {
-			setErrorMessage(null);
-			setPageComplete(false);
-			return;
-		}
-		if (host.indexOf(':') != -1) {
-			setErrorMessage(Policy.bind("ConfigurationWizardMainPage.invalidHostName"));
-			setPageComplete(false);
-			return;
-		}
-
-		if (portText.isEnabled()) {
-			if (portText.getText().length() == 0) {
-				setErrorMessage(null);
-				setPageComplete(false);
-				return;
-			}
-			try {
-				Integer.parseInt(portText.getText());
-			} catch (NumberFormatException e) {
-				setErrorMessage(Policy.bind("ConfigurationWizardMainPage.invalidPort"));
-				setPageComplete(false);
-				return;
-			}
-		}
-
-		if (repositoryPathCombo.getText().length() == 0) {
-			setErrorMessage(null);
-			setPageComplete(false);
-			return;
-		}
-		setErrorMessage(null);
-		setPageComplete(true);
-	}
-	
-	public boolean getValidate() {
-		return validate;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileOperation.java
deleted file mode 100644
index b1933da..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileOperation.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-/**
- * An operation to run the CVS diff operation on a set of resources. The result
- * of the diff is written to a file. If there are no differences found, the
- * user is notified and the output file is not created.
- */
-public class GenerateDiffFileOperation implements IRunnableWithProgress {
-
-	private File outputFile;
-	private IResource[] resources;
-	private Shell shell;
-	private LocalOption[] options;
-	private boolean toClipboard;
-
-	GenerateDiffFileOperation(IResource[] resources, File file, boolean toClipboard, LocalOption[] options, Shell shell) {
-		this.resources = resources;
-		this.outputFile = file;
-		this.shell = shell;
-		this.options = options;
-		this.toClipboard = toClipboard;
-	}
-
-	/**
-	 * @see IRunnableWithProgress#run(IProgressMonitor)
-	 */
-	public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-		MultiStatus result = new MultiStatus(CVSUIPlugin.ID, 1, Policy.bind("GenerateCVSDiff.error"), null);
-		try {
-			if (resources == null)
-				return;
-
-			monitor.beginTask("", resources.length * 500);
-			monitor.setTaskName(
-			Policy.bind("GenerateCVSDiff.working"));
-			
-			OutputStream os;
-			if(toClipboard) {
-				os = new ByteArrayOutputStream();
-			} else {
-				os = new FileOutputStream(outputFile);
-			}
-			try {
-				for (int i = 0; i < resources.length; i++) {
-					IResource resource = resources[i];
-					CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(resource);
-					provider.diff(new IResource[] {resource}, options, new PrintStream(os), new SubProgressMonitor(monitor, 500));
-				}
-			} finally {
-				os.close();
-			}
-
-			boolean emptyDiff = false;
-			
-			if(toClipboard) {				
-				ByteArrayOutputStream baos = (ByteArrayOutputStream)os;
-				if(baos.size() == 0) {
-					emptyDiff = true;
-				} else {
-					TextTransfer plainTextTransfer = TextTransfer.getInstance();
-					Clipboard clipboard= new Clipboard(shell.getDisplay());		
-					clipboard.setContents(
-						new String[]{baos.toString()}, 
-						new Transfer[]{plainTextTransfer});	
-				}
-			} else {
-				if(outputFile.length() == 0) {
-					emptyDiff = true;
-					outputFile.delete();
-				}	
-			}
-
-			//check for empty diff and report			
-			if (emptyDiff) {
-				MessageDialog.openInformation(
-					shell,
-					Policy.bind("GenerateCVSDiff.noDiffsFoundTitle"),
-					Policy.bind("GenerateCVSDiff.noDiffsFoundMsg"));
-			}
-		} catch (TeamException e) {
-			throw new InvocationTargetException(e);
-		} catch(IOException e) {
-			throw new InvocationTargetException(e);
-		} finally {
-			monitor.done();
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileWizard.java
deleted file mode 100644
index 5262b47..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileWizard.java
+++ /dev/null
@@ -1,548 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.internal.ccvs.core.client.Diff;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.internal.misc.ContainerContentProvider;
-import org.eclipse.ui.internal.misc.ResourceAndContainerGroup;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-/**
- * A wizard for creating a patch file by running the CVS diff command.
- */
-public class GenerateDiffFileWizard extends Wizard {
-	
-	private PatchFileSelectionPage mainPage;
-	private PatchFileCreationOptionsPage optionsPage;
-	
-	private IStructuredSelection selection;
-	private IResource[] resources;
-
-	/**
-	 * Page to select a patch file. Overriding validatePage was necessary to allow
-	 * entering a file name that already exists.
-	 */
-	private class PatchFileSelectionPage extends WizardPage {
-		
-		private IStructuredSelection currentSelection;
-		private ResourceAndContainerGroup resourceGroup;
-		private Text filenameCombo;
-		private Button browseButton;
-		
-		private TreeViewer treeViewer;
-		private IContainer selectedContainer;
-		private Text workspaceFilename;
-		private Button saveInFilesystem;
-		private Button saveInWorkspace;
-		private Button saveToClipboard;
-		
-		public final int CLIPBOARD = 1;
-		public final int FILESYSTEM = 2;
-		public final int WORKSPACE = 3;
-		
-		// sizing constants
-		private static final int SIZING_SELECTION_PANE_HEIGHT = 125;
-		private static final int SIZING_SELECTION_PANE_WIDTH = 200;
-		
-		PatchFileSelectionPage(String pageName, IStructuredSelection selection) {
-			super(pageName);
-			this.currentSelection = selection;
-			setPageComplete(false);
-		}
-		
-		/**
-		 * Allow the user to finish if a valid file has been entered. 
-		 */
-		protected boolean validatePage() {
-			boolean valid = false;									
-			
-			switch(getSaveType()) {
-				case WORKSPACE:
-					if(selectedContainer!=null && getWorkspaceFile()!=null) {
-						valid = true;
-					}
-					break;
-				case FILESYSTEM:
-					if(new File(getFilesystemFile()).isAbsolute()) {
-					valid = true;
-					}
-					break;
-				case CLIPBOARD:
-					valid = true;
-					break;
-			}
-					
-			// Avoid draw flicker by clearing error message
-			// if all is valid.
-			if (valid) {
-				setMessage(null);
-				setErrorMessage(null);
-			} else {
-				setErrorMessage(Policy.bind("Enter_a_valid_file_name_or_select_the_clipboard_option_1")); //$NON-NLS-1$
-			}
-			setPageComplete(valid);
-			return valid;
-		}
-
-		/**
-		 * Answers a full path to a file system file or <code>null</code> if the user
-		 * selected to save the patch in the workspace. 
-		 */
-		public String getFilesystemFile() {
-			if(saveInFilesystem.getSelection()) {
-				return filenameCombo.getText();
-			} 
-			return null;
-		}
-		
-		/**
-		 * Answers a workspace file or <code>null</code> if the user selected to save
-		 * the patch outside of the workspace.
-		 */
-		public IFile getWorkspaceFile() {
-			if(saveInWorkspace.getSelection() && selectedContainer !=null) {
-				String filename = workspaceFilename.getText();
-				if(filename==null || filename.length() == 0) {
-					return null;
-				}
-				return selectedContainer.getFile(new Path(workspaceFilename.getText()));
-			}
-			return null;
-		}
-
-		/**
-		 * Allow the user to chose to save the patch to the workspace or outside
-		 * of the workspace.
-		 */
-		public void createControl(Composite parent) {
-			
-			Composite composite= new Composite(parent, SWT.NULL);
-			GridLayout layout= new GridLayout();
-			composite.setLayout(layout);
-			composite.setLayoutData(new GridData());
-			setControl(composite);
-			
-			// Clipboard
-			saveToClipboard= new Button(composite, SWT.RADIO);
-			saveToClipboard.setText(Policy.bind("Save_To_Clipboard_2")); //$NON-NLS-1$
-			saveToClipboard.addListener(SWT.Selection, new Listener() {
-				public void handleEvent(Event event) {
-					validatePage();
-					updateEnablements();
-				}
-			});
-			
-			// File System
-			saveInFilesystem= new Button(composite, SWT.RADIO);
-			saveInFilesystem.setText(Policy.bind("Save_In_File_System_3")); //$NON-NLS-1$
-			saveInFilesystem.addListener(SWT.Selection, new Listener() {
-				public void handleEvent(Event event) {
-					validatePage();
-					updateEnablements();
-				}
-			});
-
-			Composite nameGroup = new Composite(composite,SWT.NONE);
-			layout = new GridLayout();
-			layout.numColumns = 2;
-			layout.marginWidth = 0;
-			nameGroup.setLayout(layout);
-			GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
-			nameGroup.setLayoutData(data);
-			
-			filenameCombo= new Text(nameGroup, SWT.BORDER);
-			GridData gd= new GridData(GridData.FILL_HORIZONTAL);
-			filenameCombo.setLayoutData(gd);
-			filenameCombo.addModifyListener(new ModifyListener() {
-				public void modifyText(ModifyEvent e) {
-					validatePage();
-				}
-			});
-
-			browseButton = new Button(nameGroup, SWT.NULL);
-			browseButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-			browseButton.setText(Policy.bind("Browse..._4")); //$NON-NLS-1$
-			browseButton.addListener(SWT.Selection, new Listener() {
-				public void handleEvent(Event event) {
-					FileDialog d = new FileDialog(getShell());
-					d.setText(Policy.bind("Save_Patch_As_5")); //$NON-NLS-1$
-					d.setFileName(Policy.bind("patch.txt_6")); //$NON-NLS-1$
-					String file = d.open();
-					if(file!=null) {
-						IPath path = new Path(file);
-						setFilesystemFilename(path.toOSString());
-					}			
-				}
-			});			
-			
-			// Workspace
-			saveInWorkspace= new Button(composite, SWT.RADIO);
-			saveInWorkspace.setText(Policy.bind("Save_In_Workspace_7")); //$NON-NLS-1$
-			saveInWorkspace.addListener(SWT.Selection, new Listener() {
-				public void handleEvent(Event event) {
-					validatePage();
-					updateEnablements();
-				}
-			});
-			createTreeViewer(composite);		
-		}
-		
-		/**
-		 * Sets the file name in the file system text.
-		 */
-		protected void setFilesystemFilename(String filename) {
-			filenameCombo.setText(filename);
-		}
-		
-		/**
-		 * Create the tree viewer that shows the container available in the workspace. The user
-		 * can then enter a filename in the text box below the viewer.
-		 */
-		protected void createTreeViewer(Composite parent) {
-			// Create tree viewer inside drill down.
-			new Label(parent, SWT.LEFT).setText(Policy.bind("Select_a_folder_then_type_in_the_file_name__8"));		 //$NON-NLS-1$
-			
-			treeViewer = new TreeViewer(parent, SWT.BORDER);
-			ContainerContentProvider cp = new ContainerContentProvider();
-			cp.showClosedProjects(false);
-			GridData data = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL |
-								  		  GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
-			
-			data.widthHint = SIZING_SELECTION_PANE_WIDTH;
-			data.heightHint = SIZING_SELECTION_PANE_HEIGHT;
-					
-			treeViewer.getTree().setLayoutData(data);
-			treeViewer.setContentProvider(cp);
-			treeViewer.setLabelProvider(new WorkbenchLabelProvider());
-			treeViewer.addSelectionChangedListener(
-				new ISelectionChangedListener() {
-					public void selectionChanged(SelectionChangedEvent event) {
-						IStructuredSelection selection = (IStructuredSelection)event.getSelection();
-						containerSelectionChanged((IContainer) selection.getFirstElement()); // allow null
-						validatePage();
-					}
-				});
-			
-			treeViewer.addDoubleClickListener(
-				new IDoubleClickListener() {
-					public void doubleClick(DoubleClickEvent event) {
-						ISelection selection = event.getSelection();
-						if (selection instanceof IStructuredSelection) {
-							Object item = ((IStructuredSelection)selection).getFirstElement();
-							if (treeViewer.getExpandedState(item))
-								treeViewer.collapseToLevel(item, 1);
-							else
-								treeViewer.expandToLevel(item, 1);
-						}
-					}
-				});
-		
-			// This has to be done after the viewer has been laid out
-			treeViewer.setInput(ResourcesPlugin.getWorkspace());
-			
-			// name group
-			Composite nameGroup = new Composite(parent,SWT.NONE);
-			GridLayout layout = new GridLayout();
-			layout.numColumns = 2;
-			layout.marginWidth = 0;
-			nameGroup.setLayout(layout);
-			data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
-			nameGroup.setLayoutData(data);
-		
-			Label label = new Label(nameGroup,SWT.NONE);
-			label.setText(Policy.bind("Fi&le_name__9")); //$NON-NLS-1$
-		
-			// resource name entry field
-			workspaceFilename = new Text(nameGroup,SWT.BORDER);
-			data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
-			workspaceFilename.setLayoutData(data);
-			workspaceFilename.addModifyListener(new ModifyListener() {
-				public void modifyText(ModifyEvent e) {
-					validatePage();
-				}
-			});
-		}
-	
-		/**
-		 * Enable and disable controls based on the selected radio button.
-		 */
-		protected void updateEnablements() {
-			int type = getSaveType();
-
-			browseButton.setEnabled(type==FILESYSTEM);
-			filenameCombo.setEnabled(type==FILESYSTEM);
-			treeViewer.getTree().setEnabled(type==WORKSPACE);
-			workspaceFilename.setEnabled(type==WORKSPACE);
-		}
-		
-		/**
-		 * Answers the type of the patch file destination.
-		 */		
-		public int getSaveType() {
-			if(saveInFilesystem.getSelection()) {
-				return FILESYSTEM;
-			} else if(saveToClipboard.getSelection()) {
-				return CLIPBOARD;
-			} else {
-				return WORKSPACE;
-			}
-		}
-		
-		/**
-		 * Remember the container selected in the tree viewer.
-		 */
-		public void containerSelectionChanged(IContainer container) {
-			selectedContainer = container;
-		}
-	}
-	// end of PatchFileSelectionPage
-	
-	/**
-	 * Page to select the options for creating the patch.
-	 */
-	public class PatchFileCreationOptionsPage extends WizardPage {
-
-		private Button recurseOption;
-		private Button contextDiffOption;
-		private Button unifiedDiffOption;
-		private Button regularDiffOption;
-		private Button dontIncludeNewFilesOptions;
-		
-		/**
-		 * Constructor for PatchFileCreationOptionsPage.
-		 */
-		protected PatchFileCreationOptionsPage(String pageName) {
-			super(pageName);
-		}
-
-		/**
-		 * Constructor for PatchFileCreationOptionsPage.
-		 */
-		protected PatchFileCreationOptionsPage(String pageName, String title, ImageDescriptor titleImage) {
-			super(pageName, title, titleImage);
-		}
-
-		/*
-		 * @see IDialogPage#createControl(Composite)
-		 */
-		public void createControl(Composite parent) {
-			Composite composite= new Composite(parent, SWT.NULL);
-			GridLayout layout= new GridLayout();
-			composite.setLayout(layout);
-			composite.setLayoutData(new GridData());
-			setControl(composite);
-			
-			recurseOption = new Button(composite, SWT.CHECK);
-			recurseOption.setText(Policy.bind("Do_not_recurse_into_sub-folders_10")); //$NON-NLS-1$
-			
-			dontIncludeNewFilesOptions = new Button(composite, SWT.CHECK);
-			dontIncludeNewFilesOptions.setText(Policy.bind("Do_not_include_new_files_in_patch_11")); //$NON-NLS-1$
-			
-			Group diffTypeGroup = new Group(composite, SWT.NONE);
-			layout = new GridLayout();
-			layout.marginHeight = 0;
-			diffTypeGroup.setLayout(layout);
-			GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
-			diffTypeGroup.setLayoutData(data);
-			diffTypeGroup.setText(Policy.bind("Diff_output_format_12")); //$NON-NLS-1$
-			
-			unifiedDiffOption = new Button(diffTypeGroup, SWT.RADIO);
-			unifiedDiffOption.setText(Policy.bind("Unified_(format_required_by_Compare_With_Patch_feature)_13")); //$NON-NLS-1$
-			unifiedDiffOption.setSelection(true);
-			contextDiffOption = new Button(diffTypeGroup, SWT.RADIO);
-			contextDiffOption.setText(Policy.bind("Context_14")); //$NON-NLS-1$
-			regularDiffOption = new Button(diffTypeGroup, SWT.RADIO);
-			regularDiffOption.setText(Policy.bind("Standard_15")); //$NON-NLS-1$
-		}
-		
-		/**
-		 * Answers if the difference operation should be run recursively.
-		 */
-		public boolean isRecursive() {
-			return !recurseOption.getSelection();
-		}
-		
-		/**
-		 * Return the list of Diff command options configured on this page.
-		 */
-		public LocalOption[] getOptions() {
-			List options = new ArrayList(5);
-			if(!dontIncludeNewFilesOptions.getSelection()) {
-				options.add(Diff.INCLUDE_NEWFILES);
-			}
-			if(recurseOption.getSelection()) {
-				options.add(Diff.DO_NOT_RECURSE);
-			}
-			if(unifiedDiffOption.getSelection()) {
-				options.add(Diff.UNIFIED_FORMAT);
-			} else if(contextDiffOption.getSelection()) {
-				options.add(Diff.CONTEXT_FORMAT);
-			}
-			return (LocalOption[]) options.toArray(new LocalOption[options.size()]);
-		}		
-	}
-	// end of PatchFileCreationOptionsPage
-	
-	public GenerateDiffFileWizard(IStructuredSelection selection, IResource[] resources) {
-		super();
-		this.selection = selection;
-		this.resources = resources;
-		setWindowTitle(Policy.bind("GenerateCVSDiff.title")); //$NON-NLS-1$
-		initializeDefaultPageImageDescriptor();
-	}
-
-	public void addPages() {
-		String pageTitle =Policy.bind("GenerateCVSDiff.pageTitle"); //$NON-NLS-1$
-		String pageDescription = Policy.bind("GenerateCVSDiff.pageDescription"); //$NON-NLS-1$
-		mainPage = new PatchFileSelectionPage(pageTitle, selection);
-		mainPage.setDescription(pageDescription);
-		mainPage.setTitle(pageTitle);
-		addPage(mainPage);
-		
-		pageTitle = Policy.bind("Advanced_options_19"); //$NON-NLS-1$
-		pageDescription = Policy.bind("Configure_the_options_used_for_the_CVS_diff_command_20"); //$NON-NLS-1$
-		optionsPage = new PatchFileCreationOptionsPage(pageTitle);
-		optionsPage.setDescription(pageDescription);
-		optionsPage.setTitle(pageTitle);
-		addPage(optionsPage);		
-	}
-		
-	/**
-	 * Initializes this creation wizard using the passed workbench and
-	 * object selection.
-	 *
-	 * @param workbench the current workbench
-	 * @param selection the current object selection
-	 */
-	public void init(IWorkbench workbench, IStructuredSelection selection) {
-	}
-	/**
-	 * Declares the wizard banner iamge descriptor
-	 */
-	protected void initializeDefaultPageImageDescriptor() {
-		String iconPath;
-		if (Display.getCurrent().getIconDepth() > 4) {
-			iconPath = "icons/full/"; //$NON-NLS-1$
-		} else {
-			iconPath = "icons/basic/"; //$NON-NLS-1$
-		}
-		try {
-			URL installURL = CVSUIPlugin.getPlugin().getDescriptor().getInstallURL();
-			URL url = new URL(installURL, iconPath + "wizards/newconnect_wiz.gif");	//$NON-NLS-1$
-			ImageDescriptor desc = ImageDescriptor.createFromURL(url);
-			setDefaultPageImageDescriptor(desc);
-		} catch (MalformedURLException e) {
-			// Should not happen.  Ignore.
-		}
-	}
-	
-	/* (Non-javadoc)
-	 * Method declared on IWizard.
-	 */
-	public boolean needsProgressMonitor() {
-		return true;
-	}
-	/**
-	 * Completes processing of the wizard. If this method returns <code>
-	 * true</code>, the wizard will close; otherwise, it will stay active.
-	 */
-	public boolean performFinish() {
-		String fs = mainPage.getFilesystemFile();
-		IFile ws = mainPage.getWorkspaceFile();
-		int type = mainPage.getSaveType();
-
-		try {
-			if(type != mainPage.CLIPBOARD) {
-				File file = new File(fs!=null ? fs : ws.getLocation().toOSString());
-				if (file.exists()) {
-					// prompt then delete
-					String title = Policy.bind("GenerateCVSDiff.overwriteTitle"); //$NON-NLS-1$
-					String msg = Policy.bind("GenerateCVSDiff.overwriteMsg"); //$NON-NLS-1$
-					final MessageDialog dialog = new MessageDialog(getShell(), title, null, msg, MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL, IDialogConstants.CANCEL_LABEL }, 0);
-
-					dialog.open();
-	
-					if (dialog.getReturnCode() != 0) {
-						// cancel
-						return false;
-					}
-				}
-				getContainer().run(false, true, new GenerateDiffFileOperation(resources, file, false, optionsPage.getOptions(), getShell()));
-				if(type==mainPage.WORKSPACE) {
-					ws.getParent().refreshLocal(IResource.DEPTH_ONE, null);
-				}
-			} else {
-				getContainer().run(false, true, new GenerateDiffFileOperation(resources, null, true, optionsPage.getOptions(), getShell()));
-			}
-			return true;
-		} catch (InterruptedException e1) {
-			return true;
-		} catch(CoreException e) {
-			ErrorDialog.openError(getShell(), Policy.bind("GenerateCVSDiff.error"), null, e.getStatus()); //$NON-NLS-1$
-			return false;
-		} catch (InvocationTargetException e2) {
-			if (e2.getTargetException() instanceof CoreException) {
-				CoreException e = (CoreException) e2.getTargetException();
-				ErrorDialog.openError(getShell(), Policy.bind("GenerateCVSDiff.error"), null, e.getStatus()); //$NON-NLS-1$
-				return false;
-			} else {
-				Throwable target = e2.getTargetException();
-				if (target instanceof RuntimeException) {
-					throw (RuntimeException) target;
-				}
-				if (target instanceof Error) {
-					throw (Error) target;
-				}
-			}
-			return true;
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java
deleted file mode 100644
index 39a30c3..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-public class ModuleSelectionPage extends CVSWizardPage {
-	Button useProjectNameButton;
-	Button useSpecifiedNameButton;
-	Text text;
-	
-	String result;
-	boolean useProjectName = true;
-	
-	public ModuleSelectionPage(String pageName, String title, ImageDescriptor titleImage) {
-		super(pageName, title, titleImage);
-	}
-	
-	public void createControl(Composite parent) {
-		Composite composite = createComposite(parent, 2);
-		// set F1 help
-		// WorkbenchHelp.setHelp(composite, new DialogPageContextComputer (this, ITeamHelpContextIds.REPO_CONNECTION_MAIN_PAGE));
-		
-		useProjectNameButton = createRadioButton(composite, Policy.bind("ModuleSelectionPage.moduleIsProject"), 2);
-		useSpecifiedNameButton = createRadioButton(composite, Policy.bind("ModuleSelectionPage.specifyModule"), 1);
-		useProjectNameButton.addListener(SWT.Selection, new Listener() {
-			public void handleEvent(Event event) {
-				useProjectName = useProjectNameButton.getSelection();
-				if (useProjectName) {
-					text.setEnabled(false);
-					result = null;
-					setPageComplete(true);
-				} else {
-					text.setEnabled(true);
-					result = text.getText();
-					if (result.length() == 0) {
-						result = null;
-						setPageComplete(false);
-					} else {
-						setPageComplete(true);
-					}
-				}
-			}
-		});
-
-		text = createTextField(composite);
-		text.setEnabled(false);
-		text.addListener(SWT.Modify, new Listener() {
-			public void handleEvent(Event event) {
-				result = text.getText();
-				if (result.length() == 0) {
-					result = null;
-					setPageComplete(false);
-				} else {
-					setPageComplete(true);
-				}
-			}
-		});
-		useSpecifiedNameButton.setSelection(false);
-		useProjectNameButton.setSelection(true);
-		setControl(composite);
-		setPageComplete(true);
-	}	
-	public String getModuleName() {
-		return result;
-	}
-	public boolean useProjectName() {
-		return useProjectName;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/NewLocationWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/NewLocationWizard.java
deleted file mode 100644
index e9090e8..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/NewLocationWizard.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Properties;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.ICVSProvider;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-public class NewLocationWizard extends Wizard {
-	private ConfigurationWizardMainPage mainPage;
-
-	private Properties properties;
-	
-	public NewLocationWizard() {
-		IDialogSettings workbenchSettings = CVSUIPlugin.getPlugin().getDialogSettings();
-		IDialogSettings section = workbenchSettings.getSection("NewLocationWizard");//$NON-NLS-1$
-		if (section == null) {
-			section = workbenchSettings.addNewSection("NewLocationWizard");//$NON-NLS-1$
-		}
-		setDialogSettings(section);
-	}
-
-	/**
-	 * Creates the wizard pages
-	 */
-	public void addPages() {
-		mainPage = new ConfigurationWizardMainPage("repositoryPage1", Policy.bind("NewLocationWizard.title"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_SHARE));
-		if (properties != null) {
-			mainPage.setProperties(properties);
-		}
-		mainPage.setShowValidate(true);
-		mainPage.setDescription(Policy.bind("NewLocationWizard.description"));
-		mainPage.setDialogSettings(getDialogSettings());
-		addPage(mainPage);
-	}
-	/*
-	 * @see IWizard#performFinish
-	 */
-	public boolean performFinish() {
-		mainPage.finish(new NullProgressMonitor());
-		Properties properties = mainPage.getProperties();
-		final ICVSRepositoryLocation[] root = new ICVSRepositoryLocation[1];
-		ICVSProvider provider = CVSProviderPlugin.getProvider();
-		try {
-			root[0] = provider.createRepository(properties);
-			if (mainPage.getValidate()) {
-				try {
-					new ProgressMonitorDialog(getShell()).run(true, true, new IRunnableWithProgress() {
-						public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-							try {
-								root[0].validateConnection(monitor);
-							} catch (TeamException e) {
-								throw new InvocationTargetException(e);
-							}
-						}
-					});
-				} catch (InterruptedException e) {
-					return false;
-				} catch (InvocationTargetException e) {
-					Throwable t = e.getTargetException();
-					if (t instanceof TeamException) {
-						throw (TeamException)t;
-					}
-				}
-			}
-			provider.addRepository(root[0]);
-		} catch (TeamException e) {
-			IStatus error = e.getStatus();
-			if (root[0] == null) {
-				// Exception creating the root, we cannot continue
-				ErrorDialog.openError(getContainer().getShell(), Policy.bind("NewLocationWizard.exception"), null, error);
-				return false;
-			} else {
-				// Exception validating. We can continue if the user wishes.
-				boolean keep = MessageDialog.openQuestion(getContainer().getShell(),
-					Policy.bind("NewLocationWizard.validationFailedTitle"),
-					Policy.bind("NewLocationWizard.validationFailedText", new Object[] {e.getStatus().getMessage()}));
-				try {
-					if (keep) {
-						provider.addRepository(root[0]);
-					} else {
-						provider.disposeRepository(root[0]);
-					}
-				} catch (TeamException e1) {
-					ErrorDialog.openError(getContainer().getShell(), Policy.bind("exception"), null, e1.getStatus());
-					return false;
-				}
-				return keep;
-			}
-		}
-		return true;	
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RepositorySelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RepositorySelectionPage.java
deleted file mode 100644
index 5852890..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RepositorySelectionPage.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.ui.internal.model.AdaptableList;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-/**
- * First wizard page for importing a project into a CVS repository.
- * This page prompts the user to select an existing repo or create a new one.
- * If the user selected an existing repo, then getLocation() will return it.
- */
-public class RepositorySelectionPage extends CVSWizardPage {
-	private TableViewer table;
-	private Button useExistingRepo;
-	private Button useNewRepo;
-	
-	private ICVSRepositoryLocation result;
-	
-	/**
-	 * RepositorySelectionPage constructor.
-	 * 
-	 * @param pageName  the name of the page
-	 * @param title  the title of the page
-	 * @param titleImage  the image for the page
-	 */
-	public RepositorySelectionPage(String pageName, String title, ImageDescriptor titleImage) {
-		super(pageName, title, titleImage);
-	}
-	protected TableViewer createTable(Composite parent) {
-		Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);
-		table.setLayoutData(new GridData(GridData.FILL_BOTH));
-		TableLayout layout = new TableLayout();
-		layout.addColumnData(new ColumnWeightData(100, true));
-		table.setLayout(layout);
-		TableColumn col = new TableColumn(table, SWT.NONE);
-		col.setResizable(true);
-	
-		return new TableViewer(table);
-	}
-	/**
-	 * Creates the UI part of the page.
-	 * 
-	 * @param parent  the parent of the created widgets
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = createComposite(parent, 2);
-		// set F1 help
-		// WorkbenchHelp.setHelp(composite, new DialogPageContextComputer (this, ITeamHelpContextIds.REPO_CONNECTION_MAIN_PAGE));
-		
-		Label description = new Label(composite, SWT.WRAP);
-		GridData data = new GridData();
-		data.horizontalSpan = 2;
-		data.widthHint = 350;
-		description.setLayoutData(data);
-		description.setText(Policy.bind("RepositorySelectionPage.description"));
-
-		useExistingRepo = createRadioButton(composite, Policy.bind("RepositorySelectionPage.useExisting"), 2);
-		table = createTable(composite);
-		table.setContentProvider(new WorkbenchContentProvider());
-		table.setLabelProvider(new WorkbenchLabelProvider());
-		table.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				result = (ICVSRepositoryLocation)((IStructuredSelection)table.getSelection()).getFirstElement();
-				setPageComplete(true);
-			}
-		});
-		useNewRepo = createRadioButton(composite, Policy.bind("RepositorySelectionPage.useNew"), 2);
-
-		useExistingRepo.addListener(SWT.Selection, new Listener() {
-			public void handleEvent(Event event) {
-				if (useNewRepo.getSelection()) {
-					table.getTable().setEnabled(false);
-					result = null;
-				} else {
-					table.getTable().setEnabled(true);
-					result = (ICVSRepositoryLocation)((IStructuredSelection)table.getSelection()).getFirstElement();
-				}
-				setPageComplete(true);
-			}
-		});
-
-		setControl(composite);
-
-		initializeValues();
-	}
-	/**
-	 * Initializes states of the controls.
-	 */
-	private void initializeValues() {
-		ICVSRepositoryLocation[] locations = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownRoots();
-		AdaptableList input = new AdaptableList(locations);
-		table.setInput(input);
-		if (locations.length == 0) {
-			useNewRepo.setSelection(true);	
-		} else {
-			useExistingRepo.setSelection(true);	
-			table.setSelection(new StructuredSelection(locations[0]));
-		}
-	}
-	
-	public ICVSRepositoryLocation getLocation() {
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java
deleted file mode 100644
index e226df0..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java
+++ /dev/null
@@ -1,305 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Properties;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.IRemoteResource;
-import org.eclipse.team.internal.ccvs.core.CVSProvider;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.syncinfo.*;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.ui.CVSDecorator;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.sync.CVSSyncCompareInput;
-import org.eclipse.team.ui.IConfigurationWizard;
-import org.eclipse.team.ui.sync.SyncView;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * This wizard helps the user to import a new project in their workspace
- * into a CVS repository for the first time.
- */
-public class SharingWizard extends Wizard implements IConfigurationWizard {
-	// The project to configure
-	private IProject project;
-
-	// The autoconnect page is used if CVS/ directories already exist.
-	private ConfigurationWizardAutoconnectPage autoconnectPage;
-	
-	// The import page is used if CVS/ directories do not exist.
-	private RepositorySelectionPage locationPage;
-	
-	// The page that prompts the user for connection information.
-	private ConfigurationWizardMainPage createLocationPage;
-	
-	// The page that prompts the user for module name.
-	private ModuleSelectionPage modulePage;
-	
-	// The page that tells the user what's going to happen.
-	private SharingWizardFinishPage finishPage;
-	
-	public SharingWizard() {
-		setNeedsProgressMonitor(true);
-	}		
-	public void addPages() {
-		ImageDescriptor sharingImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_SHARE);
-		if (doesCVSDirectoryExist()) {
-			autoconnectPage = new ConfigurationWizardAutoconnectPage("autoconnectPage", Policy.bind("SharingWizard.autoConnectTitle"), sharingImage);
-			autoconnectPage.setProject(project);
-			addPage(autoconnectPage);
-		} else {
-			ICVSRepositoryLocation[] locations = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownRoots();
-			if (locations.length > 0) {
-				locationPage = new RepositorySelectionPage("importPage", Policy.bind("SharingWizard.importTitle"), sharingImage);
-				addPage(locationPage);
-			}
-			createLocationPage = new ConfigurationWizardMainPage("createLocationPage", Policy.bind("SharingWizard.enterInformation"), sharingImage);
-			addPage(createLocationPage);
-			modulePage = new ModuleSelectionPage("modulePage", Policy.bind("SharingWizard.enterModuleName"), sharingImage);
-			addPage(modulePage);
-			finishPage = new SharingWizardFinishPage("finishPage", Policy.bind("Ready to Share Project"), sharingImage);
-			addPage(finishPage);
-		}
-	}
-	public boolean canFinish() {
-		IWizardPage page = getContainer().getCurrentPage();
-		if (page == locationPage) {
-			if (locationPage.getLocation() == null) {
-				return createLocationPage.isPageComplete();
-			} else {
-				return modulePage.useProjectName() || modulePage.getModuleName() != null;
-			}
-		} else if (page == modulePage) {
-			return modulePage.useProjectName() || modulePage.getModuleName() != null;
-		} else if (page == finishPage) {
-			return true;
-		}
-		return super.canFinish();
-	}
-	protected String getMainPageDescription() {
-		return Policy.bind("SharingWizard.description");
-	}
-	protected String getMainPageTitle() {
-		return Policy.bind("SharingWizard.title");
-	}
-	public IWizardPage getNextPage(IWizardPage page) {
-		if (page == autoconnectPage) return null;
-		if (page == locationPage) {
-			if (locationPage.getLocation() == null) {
-				return createLocationPage;
-			} else {
-				return modulePage;
-			}
-		}
-		if (page == createLocationPage) {
-			return modulePage;
-		}
-		if (page == modulePage) {
-			return finishPage;
-		}
-		return null;
-	}
-	/*
-	 * @see IWizard#performFinish
-	 */
-	public boolean performFinish() {
-		final boolean[] result = new boolean[] { true };
-		try {
-			final boolean[] doSync = new boolean[] { false };
-			getContainer().run(false, false, new IRunnableWithProgress() {
-				public void run(IProgressMonitor monitor) throws InvocationTargetException {
-					try {
-						monitor.beginTask("", 100);
-						if (autoconnectPage != null) {
-							// Autoconnect to the repository using CVS/ directories
-							
-							FolderSyncInfo info = autoconnectPage.getFolderSyncInfo();
-							if (info == null) {
-								// Error!
-								return;
-							}
-							
-							// Get the repository location (the get will add the locatin to the provider)
-							boolean isPreviouslyKnown = CVSProviderPlugin.getProvider().isKnownRepository(info.getRoot());
-							ICVSRepositoryLocation location = CVSProviderPlugin.getProvider().getRepository(info.getRoot());
-	
-							// Validate the connection if the user wants to
-							boolean validate = autoconnectPage.getValidate();					
-							if (validate) {
-								// Do the validation
-								try {
-									location.validateConnection(new SubProgressMonitor(monitor, 50));
-								} catch (TeamException e) {
-									// Exception validating. We can continue if the user wishes.
-									boolean keep = MessageDialog.openQuestion(getContainer().getShell(),
-										Policy.bind("SharingWizard.validationFailedTitle"),
-										Policy.bind("SharingWizard.validationFailedText", new Object[] {e.getStatus().getMessage()}));
-									if (!keep) {
-										// Remove the root
-										try {
-											if (!isPreviouslyKnown) {
-												CVSProviderPlugin.getProvider().disposeRepository(location);
-											}
-										} catch (TeamException e1) {
-											ErrorDialog.openError(getContainer().getShell(), Policy.bind("exception"), null, e1.getStatus());
-										}
-										result[0] = false;
-										return;
-									}
-									// They want to keep the connection anyway. Fall through.
-								}
-							}
-							
-							// Set the sharing
-							CVSProviderPlugin.getProvider().setSharing(project, info, new SubProgressMonitor(monitor, 50));
-						} else {
-							// Import
-							doSync[0] = true;
-							// Make sure the directory does not already exist on the server.
-							// If it does, return false.
-							ICVSRepositoryLocation location;
-							boolean isKnown;
-							try {
-								location = getLocation();
-								isKnown = CVSProviderPlugin.getProvider().isKnownRepository(location.getLocation());
-								location.validateConnection(monitor);
-								String moduleName = getModuleName();
-								ICVSRemoteFolder folder = location.getRemoteFolder(moduleName, null);
-								try {
-									// Hack until exists() works properly.
-									IRemoteResource[] members = folder.members(new SubProgressMonitor(monitor, 50));
-									if (members.length > 0) {
-										// We didn't get an exception, so the folder must already exist.
-										MessageDialog.openInformation(getShell(), Policy.bind("SharingWizard.couldNotImport"), Policy.bind("SharingWizard.couldNotImportLong"));
-										result[0] = false;
-										doSync[0] = false;
-										return;
-									}
-								} catch (TeamException e) {
-									// Good, we got an exception. The folder doesn't exist.
-								}
-							} catch (TeamException e) {
-								ErrorDialog.openError(getShell(), null, null, e.getStatus());
-								result[0] = false;
-								doSync[0] = false;
-								return;
-							}
-							// Add the location to the provider if it is new
-							if (!isKnown) {
-								CVSProviderPlugin.getProvider().addRepository(location);
-							}
-							// Create the remote module for the project
-							CVSProviderPlugin.getProvider().createModule(location, project, getModuleName(), new SubProgressMonitor(monitor, 50));
-						}
-						CVSDecorator.refresh(project);
-					} catch (TeamException e) {
-						throw new InvocationTargetException(e);
-					} finally {
-						monitor.done();
-					}
-				}
-			});
-			if (doSync[0]) {
-				// Sync of the project
-				SyncView view = (SyncView)CVSUIPlugin.getActivePage().findView(SyncView.VIEW_ID);
-				if (view == null) {
-					view = SyncView.findInActivePerspective();
-				}
-				if (view != null) {
-					try {
-						CVSUIPlugin.getActivePage().showView(SyncView.VIEW_ID);
-					} catch (PartInitException e) {
-						CVSUIPlugin.log(e.getStatus());
-					}
-					view.showSync(new CVSSyncCompareInput(new IResource[] {project}));
-				}
-			}
-		} catch (InterruptedException e) {
-			return true;
-		} catch (InvocationTargetException e) {
-			Throwable target = e.getTargetException();
-			if (target instanceof RuntimeException) {
-				throw (RuntimeException)target;
-			}
-			if (target instanceof Error) {
-				throw (Error)target;
-			} else if (target instanceof TeamException) {
-				ErrorDialog.openError(getContainer().getShell(), null, null, ((TeamException)target).getStatus());
-			}
-		}
-
-		return result[0];
-	}
-
-	/**
-	 * Return an ICVSRepositoryLocation
-	 */
-	private ICVSRepositoryLocation getLocation() throws TeamException {
-		// If the import page has a location, use it.
-		if (locationPage != null) {
-			ICVSRepositoryLocation location = locationPage.getLocation();
-			if (location != null) return location;
-		}
-				
-		getShell().getDisplay().syncExec(new Runnable() {
-			public void run() {
-				createLocationPage.finish(new NullProgressMonitor());
-			}
-		});
-		Properties properties = createLocationPage.getProperties();
-		return CVSProviderPlugin.getProvider().createRepository(properties);
-	}
-	/**
-	 * Return the module name.
-	 */
-	private String getModuleName() {
-		String moduleName = modulePage.getModuleName();
-		if (moduleName == null) moduleName = project.getName();
-		return moduleName;
-	}
-	/*
-	 * @see IConfigurationWizard#init(IWorkbench, IProject)
-	 */
-	public void init(IWorkbench workbench, IProject project) {
-		this.project = project;
-	}
-	private boolean doesCVSDirectoryExist() {
-		// Determine if there is an existing CVS/ directory from which configuration
-		// information can be retrieved.
-		try {
-			ICVSFolder folder = (ICVSFolder)Session.getManagedResource(project);
-			FolderSyncInfo info = folder.getFolderSyncInfo();
-			return info != null;
-		} catch (TeamException e) {
-			ErrorDialog.openError(getContainer().getShell(), null, null, e.getStatus());
-			return false;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardFinishPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardFinishPage.java
deleted file mode 100644
index 07fdeb2..0000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardFinishPage.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.eclipse.team.internal.ccvs.ui.wizards;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.team.internal.ccvs.ui.Policy;
-
-public class SharingWizardFinishPage extends CVSWizardPage {
-	public SharingWizardFinishPage(String pageName, String title, ImageDescriptor titleImage) {
-		super(pageName, title, titleImage);
-	}
-
-	/*
-	 * @see IDialogPage#createControl(Composite)
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = createComposite(parent, 1);
-		Label label = new Label(composite, SWT.LEFT | SWT.WRAP);
-		label.setText(Policy.bind("SharingWizardFinishPage.message"));
-		GridData data = new GridData();
-		data.widthHint = 350;
-		label.setLayoutData(data);
-		setControl(composite);
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/.classpath b/bundles/org.eclipse.team.ui/.classpath
deleted file mode 100644
index eec652d..0000000
--- a/bundles/org.eclipse.team.ui/.classpath
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
-    <classpathentry kind="src" path="src"/>
-    <classpathentry kind="src" path="/org.eclipse.team.core"/>
-    <classpathentry kind="src" path="/org.eclipse.core.resources"/>
-    <classpathentry kind="src" path="/org.eclipse.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
-    <classpathentry kind="src" path="/org.eclipse.swt"/>
-    <classpathentry kind="src" path="/org.eclipse.compare"/>
-    <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.team.ui/.cvsignore b/bundles/org.eclipse.team.ui/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.team.ui/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.team.ui/.vcm_meta b/bundles/org.eclipse.team.ui/.vcm_meta
deleted file mode 100644
index 2ac6d86..0000000
--- a/bundles/org.eclipse.team.ui/.vcm_meta
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-description>
-	<comment></comment>
-	<nature id="org.eclipse.jdt.core.javanature"/>
-	<nature id="org.eclipse.pde.PluginNature"/>
-	<nature id="org.eclipse.team.cvs.core.cvsnature"/>
-	<reference project-name="org.eclipse.compare"/>
-	<reference project-name="org.eclipse.ui"/>
-	<reference project-name="org.eclipse.core.runtime"/>
-	<reference project-name="org.eclipse.core.resources"/>
-	<reference project-name="org.eclipse.swt"/>
-	<reference project-name="org.eclipse.team.core"/>
-	<builder name="org.eclipse.jdt.core.javabuilder">
-	</builder>
-	<builder name="org.eclipse.pde.ManifestBuilder">
-	</builder>
-	<builder name="org.eclipse.pde.SchemaBuilder">
-	</builder>
-</project-description>
diff --git a/bundles/org.eclipse.team.ui/README b/bundles/org.eclipse.team.ui/README
deleted file mode 100644
index e5bced7..0000000
--- a/bundles/org.eclipse.team.ui/README
+++ /dev/null
@@ -1,13 +0,0 @@
-Note to users of this plug-in

-

-The classes and interfaces in this plug-in are part of an API that is 

-still under development and expected to change significantly before 

-reaching stability. It is being made available at this early stage to 

-solicit feedback from pioneering adopters on the understanding 

-that any code that uses this API will almost certainly be broken 

-(repeatedly) as the API evolves.

-

-For up-to-date information on these APIs and other related news see 

-our component page:

-

-http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-vcm-home/main.html
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/about.html b/bundles/org.eclipse.team.ui/about.html
deleted file mode 100644
index 768324e..0000000
--- a/bundles/org.eclipse.team.ui/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>

-<head>

-<title>About</title>

-<style type="text/css">

-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}

-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}

-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}

-code { font-family: "Courier New", Courier, mono; font-size: 10pt}

-sup { font-family: arial,helvetica,geneva; font-size: 10px}

-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}

-li { font-family: arial, helvetica, geneva; font-size: 10pt}

-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}

-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect(   ); margin-top: 5mm; margin-left: 3mm}

-</style>

-</head>

-<body lang="EN-US" link="blue" vlink="purple">

-<table border="0" cellspacing="5" cellpadding="2" width="100%" >

-  <tr> 

-    <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>

-  </tr>

-  <tr> 

-    <td> 

-<p>11th December, 2001</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

-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> &quot;CPL&quot;.  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>

-</td></tr></table>

-</body>

-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/build.properties b/bundles/org.eclipse.team.ui/build.properties
deleted file mode 100644
index 6ddcef4..0000000
--- a/bundles/org.eclipse.team.ui/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Eclipse build contribution
-bin.includes=about.html,icons/,plugin.xml.off,plugin.properties,*.jar
-source.teamui.jar=src/
diff --git a/bundles/org.eclipse.team.ui/doc/hglegal.htm b/bundles/org.eclipse.team.ui/doc/hglegal.htm
deleted file mode 100644
index b071dbd..0000000
--- a/bundles/org.eclipse.team.ui/doc/hglegal.htm
+++ /dev/null
@@ -1,14 +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.73 [en] (Win98; U) [Netscape]">

-   <title>Legal Notices</title>

-</head>

-<body>

-

-<h3>

-<a NAME="Notices"></a>Notices</h3>

-(c) Copyright IBM Corp. 2000, 2001. All Rights Reserved.

-</body>

-</html>

diff --git a/bundles/org.eclipse.team.ui/doc/ngibmcpy.gif b/bundles/org.eclipse.team.ui/doc/ngibmcpy.gif
deleted file mode 100644
index 360f8e9..0000000
--- a/bundles/org.eclipse.team.ui/doc/ngibmcpy.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui.html b/bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui.html
deleted file mode 100644
index 1811313..0000000
--- a/bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

-<html>

-<head>

-   <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

-   <title>Team Core Extension Points</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>Team UI Plug-in</h1></center>

-This document lists all of the extension points that the Team UI plug-in makes available to provider developers.

-<p>

-<hr WIDTH="100%">

-<h1>

-General Extension Points</h1>

-The following extension point can be used to register a configuration mechanism for associating a project

-with a team provider:

-<ul>

-<li>

-<a href="org_eclipse_team_ui_configurationWizards.html">org.eclipse.team.ui.configurationWizards</a></li>

-</ul>

-The following extension point can be used to register a decorator to add team-related adornments to elements

-in the UI:

-<ul>

-<li>

-<a href="org_eclipse_team_ui_decorators.html">org.eclipse.team.ui.decorators</a></li>

-</ul>

-<a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui_configurationWizards.html b/bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui_configurationWizards.html
deleted file mode 100644
index c6e58e2..0000000
--- a/bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui_configurationWizards.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0//en">

-<html>

-<head>

-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

-   <title>Eclipse Team UI Extension Point: Configuration Wizards</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-Configuration Wizards</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.team.ui.configurationWizards

-<p><b><i>Description: </i></b>This extension point is used to register

-a method for configuration of a project. Configuration involves the association

-of a project with a team provider, including all information necessary to

-initialize that team provider, including such things as username, password, and

-any relevant information necessary to locate the provider.

-<p>Providers may provide an extension for this extension point, and an

-implementation of <code>org.eclipse.team.ui.IConfigurationWizard</code> which

-gathers the necessary information and configures the project.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT wizard EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST wizard</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-

-<ul>

-<li><b>name -</b> the name of the configuration type, as it should appear in the configuration wizard. Examples are "CVS", "WebDAV".</li>

-<li><b>icon -</b> the icon to present in the configuration wizard next to the name.</li>

-<li><b>class -</b> a fully qualified name of the Java class implementing <tt>org.eclipse.team.ui.IConfigurationWizard</tt>.</li>

-<li><b>id - </b> a unique identifier for this extension.</li>

-</ul>

-

-<b><i>Examples:</i></b>

-<p>Following is an example of a configuration wizard extension:

-<p><tt>&nbsp;&nbsp; &lt;extension point="org.eclipse.team.ui.configurationWizard"></tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;wizard</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="WebDAV"</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icon="webdav.gif"</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="com.xyz.DAVDecorator"</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id="com.xyz.dav"></tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/wizard></tt>

-<br><tt>&nbsp;&nbsp; &lt;/extension></tt>

-

-<p><b><i>API Information</i>: </b>The value of the <tt>class</tt> attribute

-must represent a class that implements <tt>org.eclipse.team.ui.IConfigurationWizard</tt>.

-This interface supports configuration of a wizard given a workbench and a project.

-

-<p><b><i>Supplied Implementation: </i></b>The plug-in org.eclipse.team.provider.examples.ui contains

-sample implementations of IConfigurationWizard for the WebDAV and filesystem provider types.

-

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui_decorators.html b/bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui_decorators.html
deleted file mode 100644
index 9e2ff12..0000000
--- a/bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui_decorators.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0//en">

-<html>

-<head>

-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

-   <title>Eclipse Team UI Extension Point: Decorators</title>

-</head>

-<body link="#0000FF" vlink="#800080">

-

-<center>

-<h1>

-Decorators</h1></center>

-<b><i>Identifier: </i></b>org.eclipse.team.ui.decorators

-<p><b><i>Description: </i></b>This extension point is used to register

-object decorator extensions. These decorators may adorn objects with

-labels and icons depending on certain aspects of their team status. For

-example, elements which are locally modified may their label or icon

-modified to indicate this status.

-<p>Providers may provide an extension for this extension point, and an

-implementation of <code>org.eclipse.team.ui.ITeamDecorator</code> which

-decorates objects in a provider-specific fashion.

-<p><b><i>Configuration Markup:</i></b>

-<p><tt>&nbsp;&nbsp; &lt;!ELEMENT decorator EMPTY></tt>

-<br><tt>&nbsp;&nbsp; &lt;!ATTLIST decorator</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; natureId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

-CDATA #REQUIRED</tt>

-<br><tt>&nbsp;&nbsp; ></tt>

-

-<ul>

-<li><b>class -</b> a fully qualified name of the Java class implementing <tt>org.eclipse.team.ui.ITeamDecorator>.</li>

-<li><b>natureId</b> - a name of the nature, projects having which will be decorated by this decorator.</li>

-</ul>

-

-<b><i>Examples:</i></b>

-<p>Following is an example of decorator configuration:

-<p><tt>&nbsp;&nbsp; &lt;extension point="org.eclipse.team.ui.decorators"></tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;decorator</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="com.xyz.XYZDecorator"</tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; natureId="com.xyz.XYZNature"></tt>

-<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/decorator></tt>

-<br><tt>&nbsp;&nbsp; &lt;/extension></tt>

-

-<p><b><i>API Information</i>: </b>The value of the <tt>class</tt> attribute

-must represent a class that implements <tt>org.eclipse.team.ui.ITeamDecorator</tt>.

-This decorator may be called upon at any time to provide textual labels and

-icon adornments for a given resource.

-

-<p><b><i>Supplied Implementation: </i></b>The plug-in org.eclipse.team.provider.examples.ui contains

-sample implementations of ITeamDecorator which decorate for the filesystem provider implementation

-and the WebDAV provider implementation.

-

-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001.  All Rights Reserved." BORDER=0 height=12 width=195></a>

-</body>

-</html>

diff --git a/bundles/org.eclipse.team.ui/icons/basic/clcl16/catchup_rls.gif b/bundles/org.eclipse.team.ui/icons/basic/clcl16/catchup_rls.gif
deleted file mode 100644
index a588368..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/clcl16/catchup_rls.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/basic/clcl16/catchuprelease_rls.gif b/bundles/org.eclipse.team.ui/icons/basic/clcl16/catchuprelease_rls.gif
deleted file mode 100644
index 4693635..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/clcl16/catchuprelease_rls.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/basic/clcl16/conflict_synch.gif b/bundles/org.eclipse.team.ui/icons/basic/clcl16/conflict_synch.gif
deleted file mode 100644
index 124d42d..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/clcl16/conflict_synch.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/basic/clcl16/ignorews_edit.gif b/bundles/org.eclipse.team.ui/icons/basic/clcl16/ignorews_edit.gif
deleted file mode 100644
index 097ecdd..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/clcl16/ignorews_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/basic/clcl16/incom_synch.gif b/bundles/org.eclipse.team.ui/icons/basic/clcl16/incom_synch.gif
deleted file mode 100644
index c80beab..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/clcl16/incom_synch.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/basic/clcl16/outgo_synch.gif b/bundles/org.eclipse.team.ui/icons/basic/clcl16/outgo_synch.gif
deleted file mode 100644
index 083abb5..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/clcl16/outgo_synch.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/basic/clcl16/refresh.gif b/bundles/org.eclipse.team.ui/icons/basic/clcl16/refresh.gif
deleted file mode 100644
index a063c23..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/clcl16/refresh.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/basic/clcl16/release_rls.gif b/bundles/org.eclipse.team.ui/icons/basic/clcl16/release_rls.gif
deleted file mode 100644
index 24105b7..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/clcl16/release_rls.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/basic/cview16/synch_synch.gif b/bundles/org.eclipse.team.ui/icons/basic/cview16/synch_synch.gif
deleted file mode 100644
index 4d1895b..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/cview16/synch_synch.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/basic/wizban/newconnect_wizban.gif b/bundles/org.eclipse.team.ui/icons/basic/wizban/newconnect_wizban.gif
deleted file mode 100644
index 6a40323..0000000
--- a/bundles/org.eclipse.team.ui/icons/basic/wizban/newconnect_wizban.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/clcl16/catchup_rls.gif b/bundles/org.eclipse.team.ui/icons/full/clcl16/catchup_rls.gif
deleted file mode 100644
index ba8ee00..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/clcl16/catchup_rls.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/clcl16/catchuprelease_rls.gif b/bundles/org.eclipse.team.ui/icons/full/clcl16/catchuprelease_rls.gif
deleted file mode 100644
index 25d4c99..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/clcl16/catchuprelease_rls.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/clcl16/conflict_synch.gif b/bundles/org.eclipse.team.ui/icons/full/clcl16/conflict_synch.gif
deleted file mode 100644
index ecde52e..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/clcl16/conflict_synch.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/clcl16/ignorews_edit.gif b/bundles/org.eclipse.team.ui/icons/full/clcl16/ignorews_edit.gif
deleted file mode 100644
index 097ecdd..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/clcl16/ignorews_edit.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/clcl16/incom_synch.gif b/bundles/org.eclipse.team.ui/icons/full/clcl16/incom_synch.gif
deleted file mode 100644
index dc9bfc6..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/clcl16/incom_synch.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/clcl16/outgo_synch.gif b/bundles/org.eclipse.team.ui/icons/full/clcl16/outgo_synch.gif
deleted file mode 100644
index afe6b17..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/clcl16/outgo_synch.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/clcl16/refresh.gif b/bundles/org.eclipse.team.ui/icons/full/clcl16/refresh.gif
deleted file mode 100644
index a063c23..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/clcl16/refresh.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/clcl16/release_rls.gif b/bundles/org.eclipse.team.ui/icons/full/clcl16/release_rls.gif
deleted file mode 100644
index 36e60e3..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/clcl16/release_rls.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/cview16/synch_synch.gif b/bundles/org.eclipse.team.ui/icons/full/cview16/synch_synch.gif
deleted file mode 100644
index 790b596..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/cview16/synch_synch.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/ovr/checkedin_ov.gif b/bundles/org.eclipse.team.ui/icons/full/ovr/checkedin_ov.gif
deleted file mode 100644
index 871a2a5..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/ovr/checkedin_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/ovr/checkedout_ov.gif b/bundles/org.eclipse.team.ui/icons/full/ovr/checkedout_ov.gif
deleted file mode 100644
index afe61fc..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/ovr/checkedout_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/ovr/dirty_ov.gif b/bundles/org.eclipse.team.ui/icons/full/ovr/dirty_ov.gif
deleted file mode 100644
index 28d5b40..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/ovr/dirty_ov.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/icons/full/wizban/newconnect_wizban.gif b/bundles/org.eclipse.team.ui/icons/full/wizban/newconnect_wizban.gif
deleted file mode 100644
index 3038a23..0000000
--- a/bundles/org.eclipse.team.ui/icons/full/wizban/newconnect_wizban.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/plugin.properties b/bundles/org.eclipse.team.ui/plugin.properties
deleted file mode 100644
index 3cffe36..0000000
--- a/bundles/org.eclipse.team.ui/plugin.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-pluginName=Team Support UI
-
-# This will change shortly to "Text Resources" once a real Team page exists.
-TextPreferencePage.name=Team
-
-IgnorePreferencePage.name=Ignored Resources
-
-ConfigureProject.label=&Share Project...
-ConfigureProject.tooltip=Share the project with others using a version and configuration management plug-in.
-
-TeamGroupMenu.label=Team
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/plugin.xml b/bundles/org.eclipse.team.ui/plugin.xml
deleted file mode 100644
index 3fb80cf..0000000
--- a/bundles/org.eclipse.team.ui/plugin.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- File written by PDE 1.0 -->
-<plugin
-   id="org.eclipse.team.ui"
-   name="%pluginName"
-   version="2.0.0"
-   provider-name="Object Technology International, Inc."
-   class="org.eclipse.team.ui.TeamUIPlugin">
-<requires>
-   <import plugin="org.eclipse.core.resources"/>
-   <import plugin="org.eclipse.team.core"/>
-   <import plugin="org.eclipse.ui"/>
-   <import plugin="org.eclipse.compare"/>
-</requires>
-
-<runtime>
-   <library name="teamui.jar">
-      <export name="*"/>
-   </library>
-</runtime>
-</plugin>
diff --git a/bundles/org.eclipse.team.ui/plugin.xml.off b/bundles/org.eclipse.team.ui/plugin.xml.off
deleted file mode 100644
index d5c5cc8..0000000
--- a/bundles/org.eclipse.team.ui/plugin.xml.off
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!-- File written by PDE 1.0 -->

-<plugin

-   id="org.eclipse.team.ui"

-   name="%pluginName"

-   version="2.0.0"

-   provider-name="Object Technology International, Inc."

-   class="org.eclipse.team.ui.TeamUIPlugin">

-<requires>

-   <import plugin="org.eclipse.core.resources"/>

-   <import plugin="org.eclipse.team.core"/>

-   <import plugin="org.eclipse.ui"/>

-   <import plugin="org.eclipse.compare"/>

-</requires>

-

-<runtime>

-   <library name="teamui.jar">

-      <export name="*"/>

-   </library>

-</runtime>

-

-<extension-point id="configurationWizards" name="Configuration Wizards"/>

-<extension-point id="decorators" name="Provider Decorators"/>

-

-<!-- Define some example text extensions. This will be done

-     by other plugins later. -->

-     

-<extension point="org.eclipse.team.core.fileTypes">

-  <fileTypes extension="txt" key="isText" value="true"/>

-  <fileTypes extension="java" key="isText" value="true"/>

-  <fileTypes extension="properties" key="isText" value="true"/>

-  <fileTypes extension="xml" key="isText" value="true"/>

-</extension>

-

-<!-- **************** PREFERENCES ******************* -->

-   <extension

-      point = "org.eclipse.ui.preferencePages">

-       <page id="org.eclipse.team.ui.TextPreferences"

-       	  class="org.eclipse.team.internal.ui.TextPreferencePage"

-       	    name="%TextPreferencePage.name">

-       </page>

-       <page id="org.eclipse.team.ui.IgnorePreferences"

-       	  class="org.eclipse.team.internal.ui.IgnorePreferencePage"

-       	    name="%IgnorePreferencePage.name"

-       	    category="org.eclipse.team.ui.TextPreferences">

-       </page>

-   </extension>

-

-<!-- ****************** POPUP ACTIONS *************** -->

-

-<extension

-     point="org.eclipse.ui.popupMenus">

-	<objectContribution

-       	   id="org.eclipse.team.ui.ResourceContributions"

-           objectClass="org.eclipse.core.resources.IResource" adaptable="true">

-		<menu

-			id="team.main"

-			path="additions"

-			label="%TeamGroupMenu.label">

-			<separator name="group1"/>

-			<separator name="group2"/>

-			<separator name="group3"/>

-			<separator name="group4"/>

-			<separator name="group5"/>

-			<separator name="group6"/>

-			<separator name="group7"/>

-			<separator name="group8"/>

-			<separator name="group9"/>

-			<separator name="group10"/>

-			<separator name="projectGroup"/>

-		</menu>

-	</objectContribution>	

-	<objectContribution

-	   id="org.eclipse.team.ui.ProjectContributions"

-	   objectClass="org.eclipse.core.resources.IProject" adaptable="true">

-		<action 

-			id="org.eclipse.team.ui.ConfigureProject"

-			label="%ConfigureProject.label"

-			tooltip="%ConfigureProject.tooltip"

-			menubarPath="team.main/projectGroup"

-			enablesFor="1"

-			class="org.eclipse.team.ui.actions.ConfigureProjectAction">

-		</action>

-	</objectContribution>	

-</extension>

-

-<!-- ************** Views ********************** -->

-<extension point="org.eclipse.ui.views">

-	<category 

-		id="org.eclipse.team.ui"

-		name="Team">

-	</category>

-	<view

-		id="org.eclipse.team.ui.sync.SyncView"

-		icon="icons/full/cview16/synch_synch.gif"

-		name="Synchronize"

-		category="org.eclipse.team.ui"

-		class="org.eclipse.team.ui.sync.SyncView">

-	</view>

-</extension>	

-</plugin>
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardElement.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardElement.java
deleted file mode 100644
index bb7c9e8..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardElement.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package org.eclipse.team.internal.ui;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IAdaptable;

-import org.eclipse.core.runtime.IConfigurationElement;

-import org.eclipse.core.runtime.Platform;

-import org.eclipse.jface.resource.ImageDescriptor;

-import org.eclipse.ui.internal.model.WorkbenchAdapter;

-import org.eclipse.ui.model.IWorkbenchAdapter;

-import org.eclipse.team.ui.*;

-

-/**

- * ConfigurationWizardElement represents an item in the configuration wizard table,

- * declared by an extension to the configurationWizards extension point.

- */

-public class ConfigurationWizardElement extends WorkbenchAdapter implements IAdaptable  {

-	private String id;

-	private String name;

-	private ImageDescriptor imageDescriptor;

-	private String description;

-	private IConfigurationElement configurationElement;

-	

-	/**

-	 *	Creates a new instance of this class

-	 *

-	 *	@param name  the name of the element

-	 */

-	public ConfigurationWizardElement(String name) {

-		this.name = name;

-	}

-	/**

-	 * Create an the instance of the object described by the configuration

-	 * element. That is, create the instance of the class the isv supplied in

-	 * the extension point.

-	 * 

-	 * @throws CoreException if an error occurs creating the extension

-	 */

-	public Object createExecutableExtension() throws CoreException {

-		return TeamUIPlugin.createExtension(configurationElement, ConfigureProjectWizard.ATT_CLASS);

-	}

-	/*

-	 * Method declared on IAdaptable.

-	 */

-	public Object getAdapter(Class adapter) {

-		if (adapter == IWorkbenchAdapter.class) {

-			return this;

-		}

-		return Platform.getAdapterManager().getAdapter(this, adapter);

-	}

-	/**

-	 * Returns the configuration element

-	 * 

-	 * @return the configuration element

-	 */

-	public IConfigurationElement getConfigurationElement() {

-		return configurationElement;

-	}

-	/**

-	 * Returns the description parameter of this element

-	 *

-	 * @return the description of this elemnet

-	 */

-	public String getDescription() {

-		return description;

-	}

-	/**

-	 * Returns the image for the given element

-	 * 

-	 * @param element  the element to get the image for

-	 * @return the image for the given element

-	 */

-	public ImageDescriptor getImageDescriptor(Object element) {

-		return imageDescriptor;

-	}

-	/**

-	 * Returns the label for the given element

-	 * 

-	 * @param element  the element to get the label for

-	 * @return the label for the given element

-	 */

-	public String getLabel(Object element) {

-		return name;

-	}

-	/**

-	 * Returns the id as specified in the extension.

-	 *

-	 * @return java.lang.String

-	 */

-	public String getID() {

-		return id;

-	}

-	/**

-	 * Returns the image for this element.

-	 * 

-	 * @return the image for this element

-	 */

-	public ImageDescriptor getImageDescriptor() {

-		return imageDescriptor;

-	}

-	/**

-	 * Set the configuration element

-	 * 

-	 * @param newConfigurationElement  the new configuration element

-	 */

-	public void setConfigurationElement(IConfigurationElement newConfigurationElement) {

-		configurationElement = newConfigurationElement;

-	}

-	/**

-	 * Set the description parameter of this element

-	 *

-	 * @param value  the new desrciption

-	 */

-	public void setDescription(String value) {

-		description = value;

-	}

-	/**

-	 * Sets the id parameter of this element

-	 * 

-	 * @param value  the new ID

-	 */

-	public void setID(String value) {

-		id = value;

-	}

-	/**

-	 * Sets the image for this element.

-	 * 

-	 * @param value  the new image

-	 */

-	public void setImageDescriptor(ImageDescriptor value) {

-		imageDescriptor = value;

-	}

-}

diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardNode.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardNode.java
deleted file mode 100644
index 1079aa8..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardNode.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.eclipse.team.internal.ui;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.jface.wizard.IWizard;

-import org.eclipse.jface.wizard.IWizardNode;

-import org.eclipse.swt.graphics.Point;

-

-/**

- * ConfigurationWizardNode represents the objects in the

- * table in the Configuration wizard.

- */

-public class ConfigurationWizardNode implements IWizardNode {

-	// The element this node represents

-	ConfigurationWizardElement element;

-	// The wizard this node is in

-	IWizard wizard;

-	

-	/**

-	 * Create a new ConfigurationWizardNode

-	 * 

-	 * @param element  the configuration wizard element for this node

-	 */

-	public ConfigurationWizardNode(ConfigurationWizardElement element) {

-		this.element = element;

-	}

-	/*

-	 * Method declared on IWizardNode.

-	 */

-	public void dispose() {

-		if (wizard != null) {

-			wizard.dispose();

-			wizard = null;

-		}

-	}

-	/*

-	 * Method declared on IWizardNode.

-	 */

-	public Point getExtent() {

-		return new Point(-1, -1);

-	}

-	/*

-	 * Method declared on IWizardNode.

-	 */

-	public IWizard getWizard() {

-		if (wizard == null) {

-			try {

-				wizard = (IWizard)element.createExecutableExtension();

-			} catch (CoreException e) {

-				System.out.println(Policy.bind("exceptionCreatingWizard"));

-			}

-		}

-		return wizard;

-	}

-	/*

-	 * Method declared on IWizardNode.

-	 */

-	public boolean isContentCreated() {

-		return wizard != null;

-	}

-}

diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizard.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizard.java
deleted file mode 100644
index 9247f90..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizard.java
+++ /dev/null
@@ -1,201 +0,0 @@
-package org.eclipse.team.internal.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IPluginRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.team.ui.IConfigurationWizard;
-import org.eclipse.team.ui.TeamUIPlugin;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.internal.model.AdaptableList;
-
-/**
- * The wizard for associating projects with team providers
- */
-public class ConfigureProjectWizard extends Wizard implements IConfigurationWizard {
-	private IWorkbench workbench;
-	private IProject project;
-	private IConfigurationWizard wizard;
-	
-	private ConfigureProjectWizardMainPage mainPage;
-	private String pluginId = UIConstants.PLUGIN_ID;
-	private String extensionPoint = UIConstants.PT_CONFIGURATION;
-	
-	protected final static String TAG_WIZARD = "wizard";
-	protected final static String TAG_DESCRIPTION = "description";
-	protected final static String ATT_NAME = "name";
-	protected final static String ATT_CLASS = "class";
-	protected final static String ATT_ICON = "icon";
-	protected final static String ATT_ID = "id";
-	
-	public ConfigureProjectWizard() {
-		setNeedsProgressMonitor(true);
-	}
-	
-	/*
-	 * @see Wizard#addPages
-	 */
-	public void addPages() {
-		AdaptableList wizards = getAvailableWizards();
-		if (wizards.size() == 1) {
-			// If there is only one wizard, skip the first page.
-			// Only skip the first page if the one wizard has at least one page.
-			ConfigurationWizardElement element = (ConfigurationWizardElement)wizards.getChildren()[0];
-			try {
-				this.wizard = (IConfigurationWizard)element.createExecutableExtension();
-				wizard.init(workbench, project);
-				wizard.addPages();
-				if (wizard.getPageCount() > 0) {
-					wizard.setContainer(getContainer());
-					IWizardPage[] pages = wizard.getPages();
-					for (int i = 0; i < pages.length; i++) {
-						addPage(pages[i]);
-					}
-					return;
-				}
-			} catch (CoreException e) {
-				TeamUIPlugin.log(e.getStatus());
-				return;
-			}
-		}
-		mainPage = new ConfigureProjectWizardMainPage("configurePage1", Policy.bind("ConfigureProjectWizard.configureProject"), TeamUIPlugin.getPlugin().getImageDescriptor(UIConstants.IMG_WIZBAN_SHARE), wizards);
-		mainPage.setDescription(Policy.bind("ConfigureProjectWizard.description"));
-		mainPage.setProject(project);
-		mainPage.setWorkbench(workbench);
-		addPage(mainPage);
-	}
-	public IWizardPage getNextPage(IWizardPage page) {
-		if (wizard != null) {
-			return wizard.getNextPage(page);
-		}
-		return super.getNextPage(page);
-	}
-	public boolean canFinish() {
-		// If we are on the first page, never allow finish unless the selected wizard has no pages.
-		if (getContainer().getCurrentPage() == mainPage) {
-			if (mainPage.getSelectedWizard() != null && mainPage.getNextPage() == null) {
-				return true;
-			}
-			return false;
-		}
-		if (wizard != null) {
-			return wizard.canFinish();
-		}
-		return super.canFinish();
-	}
-	/*
-	 * @see Wizard#performFinish
-	 */
-	public boolean performFinish() {
-		if (wizard != null) {
-			return wizard.performFinish();
-		}
-		IConfigurationWizard selectedWizard = mainPage.getSelectedWizard();
-		if (selectedWizard != null) {
-			return selectedWizard.performFinish();
-		}
-		return true;
-	}
-	/**
-	 * Returns the configuration wizards that are available for invocation.
-	 * 
-	 * @return the available wizards
-	 */
-	AdaptableList getAvailableWizards() {
-		AdaptableList result = new AdaptableList();
-		IPluginRegistry registry = Platform.getPluginRegistry();
-		IExtensionPoint point = registry.getExtensionPoint(pluginId, extensionPoint);
-		if (point != null) {
-			IExtension[] extensions = point.getExtensions();
-			for (int i = 0; i < extensions.length; i++) {
-				IConfigurationElement[] elements = extensions[i].getConfigurationElements();
-				for (int j = 0; j < elements.length; j++) {
-					IConfigurationElement element = elements[j];
-					if (element.getName().equals(TAG_WIZARD)) {
-						ConfigurationWizardElement wizard = createWizardElement(element);
-						if (wizard != null) {
-							result.add(wizard);
-						}
-					}
-				}
-			}
-		}
-		
-		return result;
-	}
-	/**
-	 * Returns a new ConfigurationWizardElement configured according to the parameters
-	 * contained in the passed Registry.  
-	 *
-	 * May answer null if there was not enough information in the Extension to create 
-	 * an adequate wizard
-	 * 
-	 * @param element  the element for which to create a wizard element
-	 * @return the wizard element for the given element
-	 */
-	protected ConfigurationWizardElement createWizardElement(IConfigurationElement element) {
-		// WizardElements must have a name attribute
-		String nameString = element.getAttribute(ATT_NAME);
-		if (nameString == null) {
-			// Missing attribute
-			return null;
-		}
-		ConfigurationWizardElement result = new ConfigurationWizardElement(nameString);
-		if (initializeWizard(result, element)) {
-			// initialization was successful
-			return result;
-		}
-		return null;
-	}
-	/**
-	 *	Initialize the passed element's properties based on the contents of
-	 *	the passed registry.  Answer a boolean indicating whether the element
-	 *	was able to be adequately initialized.
-	 *
-	 *	@param element  the element to initialize the properties for
-	 *	@param extension  the registry to get properties from
-	 *	@return whether initialization was successful
-	 */
-	protected boolean initializeWizard(ConfigurationWizardElement element, IConfigurationElement config) {
-		element.setID(config.getAttribute(ATT_ID));
-		String description = "";
-		IConfigurationElement [] children = config.getChildren(TAG_DESCRIPTION);
-		if (children.length >= 1) {
-			description = children[0].getValue();
-		}
-
-		element.setDescription(description);
-	
-		// apply CLASS and ICON properties	
-		element.setConfigurationElement(config);
-		String iconName = config.getAttribute(ATT_ICON);
-		if (iconName != null) {
-			IExtension extension = config.getDeclaringExtension();
-			element.setImageDescriptor(TeamUIPlugin.getImageDescriptorFromExtension(extension, iconName));
-		}
-		// ensure that a class was specified
-		if (element.getConfigurationElement() == null) {
-			// Missing attribute
-			return false;
-		}
-		setForcePreviousAndNextButtons(true);
-		return true;	
-	}
-	/*
-	 * Method declared on IConfigurationWizard
-	 */
-	public void init(IWorkbench workbench, IProject project) {
-		this.workbench = workbench;
-		this.project = project;
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizardMainPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizardMainPage.java
deleted file mode 100644
index c9d8f18..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizardMainPage.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package org.eclipse.team.internal.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.team.ui.IConfigurationWizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.internal.model.AdaptableList;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-
-/**
- * The main page of the configure project wizard. It contains a table
- * which lists possible team providers with which to configure the project.
- * The user may select one and press "Next", which will display a provider-
- * specific wizard page.
- */
-public class ConfigureProjectWizardMainPage extends WizardPage {
-	private Table table;
-	private TableViewer viewer;
-	private AdaptableList wizards;
-	private IWorkbench workbench;
-	private IProject project;
-	
-	private IConfigurationWizard selectedWizard;
-	
-	/**
-	 * Create a new ConfigureProjectWizardMainPage
-	 * 
-	 * @param pageName  the name of the page
-	 * @param title  the title of the page
-	 * @param titleImage  the image for the page title
-	 * @param wizard  the wizards to populate the table with
-	 */
-	public ConfigureProjectWizardMainPage(String pageName, String title, ImageDescriptor titleImage, AdaptableList wizards) {
-		super(pageName, title, titleImage);
-		this.wizards = wizards;
-	}
-	public IConfigurationWizard getSelectedWizard() {
-		return selectedWizard;
-	}
-	/*
-	 * @see WizardPage#canFlipToNextPage
-	 */
-	public boolean canFlipToNextPage() {
-		return selectedWizard != null && selectedWizard.getPageCount() > 0;
-	}
-	/*
-	 * @see WizardPage#createControl
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NULL);
-		composite.setLayout(new GridLayout());
-		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
-		
-		setControl(composite);
-		
-		Label label = new Label(composite, SWT.LEFT);
-		label.setText(Policy.bind("ConfigureProjectWizardMainPage.selectRepository"));
-		GridData data = new GridData();
-		data.horizontalAlignment = GridData.FILL;
-		label.setLayoutData(data);
-	
-		table = new Table(composite, SWT.SINGLE | SWT.BORDER);
-		data = new GridData(GridData.FILL_BOTH);
-		data.heightHint = table.getItemHeight() * 7;
-		table.setLayoutData(data);
-		viewer = new TableViewer(table);
-		viewer.setContentProvider(new WorkbenchContentProvider());
-		viewer.setLabelProvider(new WorkbenchLabelProvider());
-		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				// Initialize the wizard so we can tell whether to enable the Next button
-				ISelection selection = event.getSelection();
-				if (selection == null || !(selection instanceof IStructuredSelection)) {
-					selectedWizard = null;
-					setPageComplete(false);
-					return;
-				}
-				IStructuredSelection ss = (IStructuredSelection)selection;
-				if (ss.size() != 1) {
-					selectedWizard = null;
-					setPageComplete(false);
-					return;
-				}
-				ConfigurationWizardElement selectedElement = (ConfigurationWizardElement)ss.getFirstElement();
-				try {
-					selectedWizard = (IConfigurationWizard)selectedElement.createExecutableExtension();
-					selectedWizard.init(workbench, project);
-				} catch (CoreException e) {
-					System.out.println(Policy.bind("exceptionCreatingWizard"));
-					return;
-				}
-				selectedWizard.addPages();
-				
-				// Ask the container to update button enablement
-				setPageComplete(true);
-			}
-		});
-		viewer.addDoubleClickListener(new IDoubleClickListener() {
-			public void doubleClick(DoubleClickEvent event) {
-				getWizard().getContainer().showPage(getNextPage());
-			}
-		});
-		viewer.setInput(wizards);
-	}
-	/**
-	 * The <code>WizardSelectionPage</code> implementation of 
-	 * this <code>IWizardPage</code> method returns the first page 
-	 * of the currently selected wizard if there is one.
-	 * 
-	 * @see WizardPage#getNextPage
-	 */
-	public IWizardPage getNextPage() {
-		if (selectedWizard == null) return null;
-		return selectedWizard.getStartingPage();
-	}
-	/**
-	 * Set the workbench to the argument
-	 * 
-	 * @param workbench  the workbench to set
-	 */
-	public void setWorkbench(IWorkbench workbench) {
-		this.workbench = workbench;
-	}
-	/**
-	 * Set the project to the argument
-	 * 
-	 * @param project  the project to set
-	 */
-	public void setProject(IProject project) {
-		this.project = project;
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IgnorePreferencePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IgnorePreferencePage.java
deleted file mode 100644
index 7b61a8e..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IgnorePreferencePage.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java
deleted file mode 100644
index 68c81e7..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package org.eclipse.team.internal.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
-
-/**
- * Policy implements NLS convenience methods for the plugin and
- * makes progress monitor policy decisions
- */
-public class Policy {
-	// The resource bundle to get strings from
-	protected static ResourceBundle bundle = null;
-
-	/**
-	 * Creates a NLS catalog for the given locale.
-	 * 
-	 * @param bundleName  the name of the bundle
-	 */
-	public static void localize(String bundleName) {
-		bundle = ResourceBundle.getBundle(bundleName);
-	}
-	
-	/**
-	 * Lookup the message with the given ID in this catalog and bind its
-	 * substitution locations with the given string.
-	 * 
-	 * @param id  the id to look up
-	 * @param binding  the string to bind to the result
-	 * @return the bound string
-	 */
-	public static String bind(String id, String binding) {
-		return bind(id, new String[] { binding });
-	}
-	
-	/**
-	 * Lookup the message with the given ID in this catalog and bind its
-	 * substitution locations with the given strings.
-	 * 
-	 * @param id  the id to look up
-	 * @param binding1  the first string to bind to the result
-	 * @param binding2  the second string to bind to the result
-	 * @return the bound string
-	 */
-	public static String bind(String id, String binding1, String binding2) {
-		return bind(id, new String[] { binding1, binding2 });
-	}
-	
-	/**
-	 * Gets a string from the resource bundle. We don't want to crash because of a missing String.
-	 * Returns the key if not found.
-	 * 
-	 * @param key  the id to look up
-	 * @return the string with the given key
-	 */
-	public static String bind(String key) {
-		try {
-			return bundle.getString(key);
-		} catch (MissingResourceException e) {
-			return key;
-		} catch (NullPointerException e) {
-			return "!" + key + "!";
-		}
-	}
-	
-	/**
-	 * Gets a string from the resource bundle and binds it with the given arguments. If the key is 
-	 * not found, return the key.
-	 * 
-	 * @param key  the id to look up
-	 * @param args  the strings to bind to the result
-	 * @return the bound string
-	 */
-	public static String bind(String key, Object[] args) {
-		try {
-			return MessageFormat.format(bind(key), args);
-		} catch (MissingResourceException e) {
-			return key;
-		} catch (NullPointerException e) {
-			return "!" + key + "!";
-		}
-	}
-	
-	/**
-	 * Checks if the progress monitor is canceled.
-	 * 
-	 * @param monitor  the onitor to check for cancellation
-	 * @throws OperationCanceledException if the monitor is canceled
-	 */
-	public static void checkCanceled(IProgressMonitor monitor) {
-		if (monitor.isCanceled()) {
-			throw new OperationCanceledException();
-		}
-	}
-	/**
-	 * Returns a monitor for the given monitor
-	 * 
-	 * @param monitor  the monitor to return a monitor for
-	 * @return a monitor for the given monitor
-	 */
-	public static IProgressMonitor monitorFor(IProgressMonitor monitor) {
-		if (monitor == null) {
-			return new NullProgressMonitor();
-		}
-		return monitor;
-	}	
-	public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		if (monitor instanceof NullProgressMonitor)
-			return monitor;
-		return new SubProgressMonitor(monitor, ticks);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TextPreferencePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TextPreferencePage.java
deleted file mode 100644
index bd7349b..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TextPreferencePage.java
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/UIConstants.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/UIConstants.java
deleted file mode 100644
index c7e905d..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/UIConstants.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.team.internal.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-/**
- * Central location for constants used by the Team user interface.
- */
-public interface UIConstants {
-	// plugin id
-	public final String PLUGIN_ID = "org.eclipse.team.ui";
-	
-	// extension points
-	public final String PT_CONFIGURATION ="configurationWizards";
-	public final String PT_DECORATORS = "decorators";
-
-	// image paths
-	public final String ICON_PATH_FULL = "icons/full/";
-	public final String ICON_PATH_BASIC = "icons/basic/";
-
-	//Local toolbars (colour)
-	public final String IMG_DLG_SYNC_INCOMING = "clcl16/incom_synch.gif";
-	public final String IMG_DLG_SYNC_OUTGOING = "clcl16/outgo_synch.gif";
-	public final String IMG_DLG_SYNC_CONFLICTING = "clcl16/conflict_synch.gif";
-	public final String IMG_REFRESH = "clcl16/refresh.gif";
-	public final String IMG_IGNORE_WHITESPACE = "clcl16/ignorews_edit.gif";	
-
-	//sync view modes
-	public final String IMG_SYNC_MODE_CATCHUP = "clcl16/catchup_rls.gif";
-	public final String IMG_SYNC_MODE_RELEASE = "clcl16/release_rls.gif";
-	public final String IMG_SYNC_MODE_FREE = "clcl16/catchuprelease_rls.gif";
-	
-	// Wizard banners
-	public final String IMG_WIZBAN_SHARE = "wizban/newconnect_wizban.gif";
-	
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
deleted file mode 100644
index adcc01e..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
+++ /dev/null
@@ -1,116 +0,0 @@
-# String resources for org.eclipse.team.ui
-####################
-
-simpleInternal=Internal error
-exceptionCreatingWizard=Exception creating wizard.
-nothingToSynchronize=Nothing to Synchronize
-
-# ui
-
-CheckInAction.checkin=Check In
-CheckInAction.checkingIn=Checking In...
-
-CheckOutAction.checkout=Check Out
-CheckOutAction.checkingOut=Checking Out...
-
-ConfigureProjectAction.configureProject=Configure Project
-
-DeconfigureProjectAction.deconfigureProject=Deconfigure Project
-
-DeleteAction.delete=Delete
-DeleteAction.deleting=Deleting...
-
-ManageAction.manage=Manage
-ManageAction.managing=Managing...
-
-MoveAction.move=Move
-
-UnManageAction.unmanage=Unmanage
-UnManageAction.unmanaging=Unmanaging...
-
-UndoCheckOutAction.undoCheckout=Undo Check Out
-UndoCheckOutAction.undoing=Undoing Check Out...
-
-UpdateAction.updating=Getting...
-UpdateAction.title=Get
-
-# internal.ui
-
-ConfigureProjectWizard.configureProject=Share Project
-ConfigureProjectWizard.description=Select the repository plug-in that will be used to share the selected project.
-ConfigureProjectWizardMainPage.selectRepository=Select a repository type:
-
-IgnorePreferencePage.description=You may wish to exclude certain resources from version control.\n\
-	Use this page to specify a list of resource name patterns to ignore.\n\
-	Resources whose names match any enabled pattern will not be released.\n\
-	The wildcard characters '*' and '?' are permitted.\n\
-	These settings will not affect resources already under version control.
-IgnorePreferencePage.ignorePatterns=&Ignore Patterns:
-IgnorePreferencePage.add=&Add...
-IgnorePreferencePage.remove=&Remove
-IgnorePreferencePage.enterPatternShort=Enter Ignore Pattern
-IgnorePreferencePage.enterPatternLong=Please enter a pattern:
-IgnorePreferencePage.patternExistsShort=Pattern Already Exists
-IgnorePreferencePage.patternExistsLong=The entered pattern already exists.
-
-TextPreferencePage.text=Text
-TextPreferencePage.binary=Binary
-TextPreferencePage.description=&File extensions with known content:
-TextPreferencePage.add=&Add...
-TextPreferencePage.remove=&Remove
-TextPreferencePage.enterExtensionShort=Enter File Extension
-TextPreferencePage.enterExtensionLong=Please enter a file extension:
-TextPreferencePage.extensionExistsShort=Extension Already Exists
-TextPreferencePage.extensionExistsLong=The entered extension already exists.
-TextPreferencePage.change=&Change
-TextPreferencePage.extension=Extension
-TextPreferencePage.contents=Contents
-
-TeamResourceDecorator.badClassType=Error creating Team decorator: bad class type
-TeamResourceDecorator.coreException=Error creating Team decorator: core exception
-
-DeleteAction.promptMessage=Are you sure you want to delete the resource(s) from the repository and from the local workspace?
-DeleteAction.promptTitle=Confirm Repository Delete
-
-# internal.ui.sync
-
-CatchupReleaseViewer.expand=&Expand All
-CatchupReleaseViewer.ignoreWhiteSpace=&Ignore White Space
-CatchupReleaseViewer.refreshAction=&Refresh From Repository
-CatchupReleaseViewer.showInNavigator=&Show in Navigator
-CatchupReleaseViewer.showIncomingAction=Show Incoming
-CatchupReleaseViewer.showOutgoingAction=Show Outgoing
-CatchupReleaseViewer.showOnlyConflictsAction=Show Only Conflicts
-
-MergeResource.workspaceFile=Workspace file: {0}
-MergeResource.repositoryFile=Repository file: {0}
-MergeResource.noRepositoryFile=No repository file
-MergeResource.noCommonFile=No common file
-MergeResource.commonFile=Common file: {0}
-
-SyncCompareInput.nothingText=Workspace resources are the same as those released in the stream.
-SyncCompareInput.refresh=Error During Refresh with Repository
-SyncCompareInput.synchronize=Synchronize
-SyncCompareInput.taskTitle=Synchronizing with Repository...
-
-SyncSet.conflicts={0} conflicts, 
-SyncSet.incomings={0} incoming change(s), 
-SyncSet.noConflicts=No conflicts, 
-SyncSet.noIncomings=no incoming changes, 
-SyncSet.noOutgoings=no outgoing changes.
-SyncSet.outgoings={0} outgoing change(s).
-
-SyncView.incomingModeTitle=Synchronize - Incoming Mode
-SyncView.incomingModeAction=Incoming Mode
-SyncView.incomingModeToolTip=Incoming Mode
-SyncView.outgoingModeTitle=Synchronize - Outgoing Mode
-SyncView.outgoingModeAction=Outgoing Mode
-SyncView.outgoingModeToolTip=Outgoing Mode
-SyncView.freeModeTitle=Synchronize - Incoming/Outgoing Mode
-SyncView.freeModeAction=Incoming/Outgoing Mode
-SyncView.freeModeToolTip=Incoming/Outgoing Mode
-SyncView.same=Workspace resources are the same as those released in the repository.
-SyncView.text=Synchronize resources with their team provider to display them here.
-SyncView.unableSynchronize=Unable to Synchronize
-
-TeamFile.saveChanges=Unable to save changes to file: {0}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/IConfigurationWizard.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/IConfigurationWizard.java
deleted file mode 100644
index 168015f..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/IConfigurationWizard.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.eclipse.team.ui;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-

-import org.eclipse.core.resources.IProject;

-import org.eclipse.jface.wizard.IWizard;

-import org.eclipse.ui.IWorkbench;

-

-/**

- * IConfigurationWizard defines the interface that users of the extension

- * point org.eclipse.team.ui.configurationWizards must implement.

- */

-public interface IConfigurationWizard extends IWizard {

-	/**

-	 * Initializes this creation wizard using the passed workbench and

-	 * object selection.

-	 * <p>

-	 * This method is called after the no argument constructor and

-	 * before other methods are called.

-	 * </p>

-	 *

-	 * @param workbench the current workbench

-	 * @param project the selected project

-	 */

-	void init(IWorkbench workbench, IProject project);

-}

-

diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/ISharedImages.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/ISharedImages.java
deleted file mode 100644
index 1b324fa..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/ISharedImages.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.team.ui;

-

-/*

- * (c) Copyright IBM Corp. 2000, 2001.

- * All Rights Reserved.

- */

-

-import org.eclipse.jface.resource.ImageDescriptor;

-

-/**

- * Images that are available for providers to re-use. They include

- * common overlays and wizard images. A provider can use their own

- * custom images, these shared images are only available for 

- * convenience.

- */

-public interface ISharedImages {

-	public final String IMG_DIRTY_OVR = "ovr/dirty_ov.gif";

-	public final String IMG_CHECKEDIN_OVR = "ovr/checkedin_ov.gif";

-	public final String IMG_CHECKEDOUT_OVR = "ovr/checkedout_ov.gif";

-}

-

diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamUIPlugin.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamUIPlugin.java
deleted file mode 100644
index 180ac61..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamUIPlugin.java
+++ /dev/null
@@ -1,225 +0,0 @@
-package org.eclipse.team.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.internal.ui.UIConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * TeamUIPlugin is the plugin for generic, non-provider specific,
- * team UI functionality in the workbench.
- */
-public class TeamUIPlugin extends AbstractUIPlugin implements ISharedImages {
-
-	private static TeamUIPlugin instance;
-	public static final String ID = "org.eclipse.team.ui";
-	
-	// property change types
-	public static String GLOBAL_IGNORES_CHANGED = "global_ignores_changed";
-
-	private Hashtable imageDescriptors = new Hashtable(20);
-	
-	private List propertyChangeListeners = new ArrayList(5);
-
-	public final static String ICON_PATH;
-	
-	static {
-		if (Display.getCurrent().getIconDepth() > 4) {
-			ICON_PATH = UIConstants.ICON_PATH_FULL;
-		} else {
-			ICON_PATH = UIConstants.ICON_PATH_BASIC;
-		}
-	}
-
-	/**
-	 * Creates a new TeamUIPlugin.
-	 * 
-	 * @param descriptor  the plugin descriptor
-	 */
-	public TeamUIPlugin(IPluginDescriptor descriptor) {
-		super(descriptor);
-		instance = this;
-	}
-	/**
-	 * Creates an extension.  If the extension plugin has not
-	 * been loaded a busy cursor will be activated during the duration of
-	 * the load.
-	 *
-	 * @param element the config element defining the extension
-	 * @param classAttribute the name of the attribute carrying the class
-	 * @return the extension object
-	 */
-	public static Object createExtension(final IConfigurationElement element, final String classAttribute) throws CoreException {
-		// If plugin has been loaded create extension.
-		// Otherwise, show busy cursor then create extension.
-		IPluginDescriptor plugin = element.getDeclaringExtension().getDeclaringPluginDescriptor();
-		if (plugin.isPluginActivated()) {
-			return element.createExecutableExtension(classAttribute);
-		} else {
-			final Object [] ret = new Object[1];
-			final CoreException [] exc = new CoreException[1];
-			BusyIndicator.showWhile(null, new Runnable() {
-				public void run() {
-					try {
-						ret[0] = element.createExecutableExtension(classAttribute);
-					} catch (CoreException e) {
-						exc[0] = e;
-					}
-				}
-			});
-			if (exc[0] != null)
-				throw exc[0];
-			else
-				return ret[0];
-		}	
-	}
-	/**
-	 * Creates an image and places it in the image registry.
-	 * 
-	 * @param id  the identifier for the image
-	 * @param baseURL  the base URL for the image
-	 */
-	protected void createImageDescriptor(String id, URL baseURL) {
-		URL url = null;
-		try {
-			url = new URL(baseURL, UIConstants.ICON_PATH_FULL + id);
-		} catch (MalformedURLException e) {
-		}
-		ImageDescriptor desc = ImageDescriptor.createFromURL(url);
-		imageDescriptors.put(id, desc);
-	}
-	/**
-	 * Convenience method to get the currently active workbench page
-	 * 
-	 * @return the active workbench page
-	 */
-	public static IWorkbenchPage getActivePage() {
-		return getPlugin().getWorkbench().getActiveWorkbenchWindow().getActivePage();
-	}
-	/**
-	 * Return the default instance of the receiver. This represents the runtime plugin.
-	 * 
-	 * @return the singleton plugin instance
-	 */
-	public static TeamUIPlugin getPlugin() {
-		return instance;
-	}
-	/**
-	 * Returns the image descriptor for the given image ID.
-	 * Returns null if there is no such image.
-	 * 
-	 * @param id  the identifier for the image to retrieve
-	 * @return the image associated with the given ID
-	 */
-	public ImageDescriptor getImageDescriptor(String id) {
-		return (ImageDescriptor) imageDescriptors.get(id);
-	}	
-	/**
-	 * Convenience method to get an image descriptor for an extension
-	 * 
-	 * @param extension  the extension declaring the image
-	 * @param subdirectoryAndFilename  the path to the image
-	 * @return the image
-	 */
-	public static ImageDescriptor getImageDescriptorFromExtension(IExtension extension, String subdirectoryAndFilename) {
-		IPluginDescriptor pluginDescriptor = extension.getDeclaringPluginDescriptor();
-		URL path = pluginDescriptor.getInstallURL();
-		URL fullPathString = null;
-		try {
-			fullPathString = new URL(path,subdirectoryAndFilename);
-			return ImageDescriptor.createFromURL(fullPathString);
-		} catch (MalformedURLException e) {
-		}
-		return null;
-	}
-	/**
-	 * Initializes the table of images used in this plugin.
-	 */
-	protected void initializeImages() {
-		URL baseURL = getDescriptor().getInstallURL();
-
-		// View decoration overlays
-		createImageDescriptor(ISharedImages.IMG_DIRTY_OVR, baseURL);
-		createImageDescriptor(ISharedImages.IMG_CHECKEDIN_OVR, baseURL);
-		createImageDescriptor(ISharedImages.IMG_CHECKEDOUT_OVR, baseURL);
-		
-		createImageDescriptor(UIConstants.IMG_DLG_SYNC_INCOMING, baseURL);
-		createImageDescriptor(UIConstants.IMG_DLG_SYNC_OUTGOING, baseURL);
-		createImageDescriptor(UIConstants.IMG_DLG_SYNC_CONFLICTING, baseURL);
-		createImageDescriptor(UIConstants.IMG_REFRESH, baseURL);
-		createImageDescriptor(UIConstants.IMG_IGNORE_WHITESPACE, baseURL);
-		createImageDescriptor(UIConstants.IMG_SYNC_MODE_CATCHUP, baseURL);
-		createImageDescriptor(UIConstants.IMG_SYNC_MODE_RELEASE, baseURL);
-		createImageDescriptor(UIConstants.IMG_SYNC_MODE_FREE, baseURL);
-		createImageDescriptor(UIConstants.IMG_WIZBAN_SHARE, baseURL);
-	}
-	/**
-	 * Initializes the preferences for this plugin if necessary.
-	 */
-	protected void initializePreferences() {
-		//IPreferenceStore store = getPreferenceStore();
-	}
-	
-	/**
-	 * Convenience method for logging statuses to the plugin log
-	 * 
-	 * @param status  the status to log
-	 */
-	public static void log(IStatus status) {
-		getPlugin().getLog().log(status);
-	}
-	
-	/**
-	 * Register for changes made to Team UI properties.
-	 */
-	public void addPropertyChangeListener(IPropertyChangeListener listener) {
-		propertyChangeListeners.add(listener);
-	}
-	
-	/**
-	 * Deregister as a Team UI property changes.
-	 */
-	public void removePropertyChangeListener(IPropertyChangeListener listener) {
-		propertyChangeListeners.remove(listener);
-	}
-	
-	/**
-	 * Broadcast a Team UI property change.
-	 */
-	public void broadcastPropertyChange(PropertyChangeEvent event) {
-		for (Iterator it = propertyChangeListeners.iterator(); it.hasNext();) {
-			IPropertyChangeListener listener = (IPropertyChangeListener) it.next();			
-			listener.propertyChange(event);
-		}
-	}
-	
-	/**
-	 * @see Plugin#startup()
-	 */
-	public void startup() throws CoreException {
-		Policy.localize("org.eclipse.team.internal.ui.messages");
-		initializeImages();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/CheckInAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/CheckInAction.java
deleted file mode 100644
index 90d834c..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/CheckInAction.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.team.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Action for checking in the selected resources
- */
-public class CheckInAction extends TeamAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					Hashtable table = getProviderMapping();
-					Set keySet = table.keySet();
-					monitor.beginTask("", keySet.size() * 1000);
-					monitor.setTaskName(Policy.bind("CheckInAction.checkingIn"));
-					Iterator iterator = keySet.iterator();
-					while (iterator.hasNext()) {
-						IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-						ITeamProvider provider = (ITeamProvider)iterator.next();
-						List list = (List)table.get(provider);
-						IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-						provider.checkin(providerResources, IResource.DEPTH_INFINITE, subMonitor);
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				} finally {
-					monitor.done();
-				}
-			}
-		}, Policy.bind("CheckInAction.checkin"), this.PROGRESS_DIALOG);
-	}
-	/**
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			IResource resource = resources[i];
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (!provider.isCheckedOut(resource)) return false;
-		}
-		return true;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/CheckOutAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/CheckOutAction.java
deleted file mode 100644
index 06a40f3..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/CheckOutAction.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.team.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * CheckOutAction checks the selected resources out from the provider.
- */
-public class CheckOutAction extends TeamAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					Hashtable table = getProviderMapping();
-					Set keySet = table.keySet();
-					monitor.beginTask("", keySet.size() * 1000);
-					monitor.setTaskName(Policy.bind("CheckOutAction.checkingOut"));
-					Iterator iterator = keySet.iterator();
-					while (iterator.hasNext()) {
-						IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-						ITeamProvider provider = (ITeamProvider)iterator.next();
-						List list = (List)table.get(provider);
-						IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-						provider.checkout(providerResources, IResource.DEPTH_ZERO, subMonitor);
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				} finally {
-					monitor.done();
-				}
-			}
-		}, Policy.bind("CheckOutAction.checkout"), this.PROGRESS_BUSYCURSOR);
-	}	
-	/**
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (provider.isCheckedOut(resources[i])) return false;
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/ConfigureProjectAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/ConfigureProjectAction.java
deleted file mode 100644
index ec79c0a..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/ConfigureProjectAction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.eclipse.team.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ui.ConfigureProjectWizard;
-import org.eclipse.team.internal.ui.Policy;
-
-/**
- * Action for configuring a project. Configuring involves associating
- * the project with a Team provider and performing any provider-specific
- * configuration that is necessary.
- */
-public class ConfigureProjectAction extends TeamAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-				try {
-					IProject project = getSelectedProjects()[0];
-					ConfigureProjectWizard wizard = new ConfigureProjectWizard();
-					wizard.init(null, project);
-					WizardDialog dialog = new WizardDialog(getShell(), wizard);
-					dialog.open();
-				} catch (Exception e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("ConfigureProjectAction.configureProject"), PROGRESS_BUSYCURSOR);
-	}
-	/**
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() {
-		IProject[] selectedProjects = getSelectedProjects();
-		if (selectedProjects.length != 1) return false;
-		if (!selectedProjects[0].isAccessible()) return false;
-		if (TeamPlugin.getManager().getProvider(selectedProjects[0]) == null) return true;
-		return false;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/DeconfigureProjectAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/DeconfigureProjectAction.java
deleted file mode 100644
index 66649cc..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/DeconfigureProjectAction.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.eclipse.team.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Action for deconfiguring a project. Deconfiguring involves removing
- * associated provider for the project.
- */
-public class DeconfigureProjectAction extends TeamAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					IProject project = getSelectedProjects()[0];
-					TeamPlugin.getManager().removeProvider(project, monitor);
-				} catch (Exception e) {
-					throw new InvocationTargetException(e);
-				}
-			}
-		}, Policy.bind("DeconfigureProjectAction.deconfigureProject"), PROGRESS_BUSYCURSOR);
-	}
-	/**
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() {
-		IProject[] selectedProjects = getSelectedProjects();
-		if (selectedProjects.length != 1) return false;
-		if (TeamPlugin.getManager().getProvider(selectedProjects[0]) == null) return false;
-		return true;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/DeleteAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/DeleteAction.java
deleted file mode 100644
index fd27072..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/DeleteAction.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.eclipse.team.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Action for deleting the selected resources on the provider
- */
-public class DeleteAction extends TeamAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {		
-					final boolean[] okToContinue = {false};
-					getShell().getDisplay().syncExec(new Runnable() {
-						public void run() {
-							okToContinue[0] = MessageDialog.openConfirm(getShell(), Policy.bind("DeleteAction.promptTitle"), Policy.bind("DeleteAction.promptMessage"));
-						}
-					});
-								
-					if (okToContinue[0]) {
-						Hashtable table = getProviderMapping();
-						Set keySet = table.keySet();
-						monitor.beginTask("", keySet.size() * 1000);
-						monitor.setTaskName(Policy.bind("DeleteAction.deleting"));
-						Iterator iterator = keySet.iterator();
-						while (iterator.hasNext()) {
-							IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-							ITeamProvider provider = (ITeamProvider)iterator.next();
-							List list = (List)table.get(provider);
-							IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-							provider.delete(providerResources, subMonitor);
-							for (int i = 0; i < providerResources.length; i++) {
-								providerResources[i].delete(true, monitor);
-							}							
-						}
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				} catch (CoreException e) {
-					throw new InvocationTargetException(e);
-				} finally {
-					monitor.done();
-				}
-			}
-		}, Policy.bind("DeleteAction.delete"), this.PROGRESS_BUSYCURSOR);
-	}
-	/**
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (!provider.hasRemote(resources[i])) return false;
-		}
-		return true;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/GetAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/GetAction.java
deleted file mode 100644
index 94c01d8..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/GetAction.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.team.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Action for getting the contents of the selected resources
- */
-public class GetAction extends TeamAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					Hashtable table = getProviderMapping();
-					Set keySet = table.keySet();
-					monitor.beginTask("", keySet.size() * 1000);
-					monitor.setTaskName(Policy.bind("UpdateAction.updating"));
-					Iterator iterator = keySet.iterator();
-					while (iterator.hasNext()) {
-						IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-						ITeamProvider provider = (ITeamProvider)iterator.next();
-						List list = (List)table.get(provider);
-						IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-						provider.get(providerResources, IResource.DEPTH_INFINITE, subMonitor);
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				} finally {
-					monitor.done();
-				}
-			}
-		}, Policy.bind("UpdateAction.title"), PROGRESS_DIALOG);
-	}
-	/**
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (!provider.hasRemote(resources[i])) return false;
-		}
-		return true;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/TeamAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/TeamAction.java
deleted file mode 100644
index d26e952..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/TeamAction.java
+++ /dev/null
@@ -1,284 +0,0 @@
-package org.eclipse.team.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.ui.TeamUIPlugin;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.actions.ActionDelegate;
-
-/**
- * The abstract superclass of all Team actions. This class contains some convenience
- * methods for getting selected objects and mapping selected objects to their
- * providers.
- * 
- * Team providers may subclass this class when creating their actions.
- * Team providers may also instantiate or subclass any of the  
- * subclasses of TeamAction provided in this package.
- */
-public abstract class TeamAction extends ActionDelegate implements IObjectActionDelegate {
-	// The current selection
-	protected IStructuredSelection selection;
-	
-	// The shell, required for the progress dialog
-	protected Shell shell;
-
-	// Constants for determining the type of progress. Subclasses may
-	// pass one of these values to the run method.
-	public final static int PROGRESS_DIALOG = 1;
-	public final static int PROGRESS_BUSYCURSOR = 2;
-
-	/**
-	 * Returns the selected projects.
-	 * 
-	 * @return the selected projects
-	 */
-	protected IProject[] getSelectedProjects() {
-		ArrayList projects = null;
-		if (!selection.isEmpty()) {
-			projects = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof IProject) {
-					projects.add(next);
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(IResource.class);
-					if (adapter instanceof IProject) {
-						projects.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (projects != null && !projects.isEmpty()) {
-			IProject[] result = new IProject[projects.size()];
-			projects.toArray(result);
-			return result;
-		}
-		return new IProject[0];
-	}
-	/**
-	 * Returns the selected resources.
-	 * 
-	 * @return the selected resources
-	 */
-	protected IResource[] getSelectedResources() {
-		ArrayList resources = null;
-		if (!selection.isEmpty()) {
-			resources = new ArrayList();
-			Iterator elements = ((IStructuredSelection) selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				if (next instanceof IResource) {
-					resources.add(next);
-					continue;
-				}
-				if (next instanceof IAdaptable) {
-					IAdaptable a = (IAdaptable) next;
-					Object adapter = a.getAdapter(IResource.class);
-					if (adapter instanceof IResource) {
-						resources.add(adapter);
-						continue;
-					}
-				}
-			}
-		}
-		if (resources != null && !resources.isEmpty()) {
-			IResource[] result = new IResource[resources.size()];
-			resources.toArray(result);
-			return result;
-		}
-		return new IResource[0];
-	}
-
-	/**
-	 * Convenience method for getting the current shell.
-	 * 
-	 * @return the shell
-	 */
-	protected Shell getShell() {
-		if (shell != null) {
-			return shell;
-		} else {
-			return TeamUIPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell();
-		}
-	}
-	/**
-	 * Convenience method for running an operation with progress and
-	 * error feedback.
-	 * 
-	 * @param runnable  the runnable which executes the operation
-	 * @param problemMessage  the message to display in the case of errors
-	 * @param progressKind  one of PROGRESS_BUSYCURSOR or PROGRESS_DIALOG
-	 */
-	final protected void run(final IRunnableWithProgress runnable, final String problemMessage, int progressKind) {
-		final Exception[] exceptions = new Exception[] {null};
-		switch (progressKind) {
-			case PROGRESS_BUSYCURSOR :
-				BusyIndicator.showWhile(Display.getCurrent(), new Runnable() {
-					public void run() {
-						try {
-							runnable.run(new NullProgressMonitor());
-						} catch (InvocationTargetException e) {
-							exceptions[0] = e;
-						} catch (InterruptedException e) {
-							exceptions[0] = null;
-						}
-					}
-				});
-				break;
-			default :
-			case PROGRESS_DIALOG :
-				try {
-					new ProgressMonitorDialog(getShell()).run(true, true, runnable);
-				} catch (InvocationTargetException e) {
-					exceptions[0] = e;
-				} catch (InterruptedException e) {
-					exceptions[0] = null;
-				}
-				break;
-		}
-		if (exceptions[0] != null) {
-			handle(exceptions[0], null, problemMessage);
-		}
-	}
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void selectionChanged(IAction action, ISelection selection) {
-		if (selection instanceof IStructuredSelection) {
-			this.selection = (IStructuredSelection) selection;
-			if (action != null) {
-				try {
-					action.setEnabled(isEnabled());
-				} catch (TeamException e) {
-					action.setEnabled(false);
-					handle(e, null, null);
-				}
-			}
-		}
-	}
-	/*
-	 * Method declared on IObjectActionDelegate.
-	 */
-	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
-		this.shell = targetPart.getSite().getShell();
-	}
-	/**
-	 * Shows the given errors to the user.
-	 * 
-	 * @param status  the status containing the error
-	 * @param title  the title of the error dialog
-	 * @param message  the message for the error dialog
-	 * @param shell  the shell to open the error dialog in
-	 */
-	protected void handle(Exception exception, String title, String message) {
-		IStatus status = null;
-		boolean log = false;
-		boolean dialog = false;
-		if (exception instanceof TeamException) {
-			status = ((TeamException)exception).getStatus();
-			log = false;
-			dialog = true;
-		} else if (exception instanceof InvocationTargetException) {
-			Throwable t = ((InvocationTargetException)exception).getTargetException();
-			if (t instanceof TeamException) {
-				status = ((TeamException)t).getStatus();
-				log = false;
-				dialog = true;
-			} else if (t instanceof CoreException) {
-				status = ((CoreException)t).getStatus();
-				log = true;
-				dialog = true;
-			} else if (t instanceof InterruptedException) {
-				return;
-			} else {
-				status = new Status(IStatus.ERROR, TeamUIPlugin.ID, 1, message, t);
-				log = true;
-				dialog = true;
-			}
-		}
-		if (status == null) return;
-		if (!status.isOK()) {
-			IStatus toShow = status;
-			if (status.isMultiStatus()) {
-				IStatus[] children = status.getChildren();
-				if (children.length == 1) {
-					toShow = children[0];
-				}
-			}
-			if (title == null) {
-				title = status.getMessage();
-			}
-			if (dialog) {
-				ErrorDialog.openError(getShell(), title, message, toShow);
-			}
-			if (log) {
-				TeamUIPlugin.log(toShow);
-			}
-		}
-	}
-	/**
-	 * Concrete action enablement code.
-	 * Subclasses must implement.
-	 * 
-	 * @return whether the action is enabled
-	 * @throws TeamException if an error occurs during enablement detection
-	 */
-	abstract protected boolean isEnabled() throws TeamException;
-	
-	/**
-	 * Convenience method that maps the selected resources to their providers.
-	 * The returned Hashtable has keys which are ITeamProviders, and values
-	 * which are Lists of IResources that are shared with that provider.
-	 * 
-	 * @return a hashtable mapping providers to their selected resources
-	 */
-	protected Hashtable getProviderMapping() {
-		IResource[] resources = getSelectedResources();
-		Hashtable result = new Hashtable();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = TeamPlugin.getManager().getProvider(resources[i].getProject());
-			List list = (List)result.get(provider);
-			if (list == null) {
-				list = new ArrayList();
-				result.put(provider, list);
-			}
-			list.add(resources[i]);
-		}
-		return result;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/UndoCheckOutAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/UndoCheckOutAction.java
deleted file mode 100644
index bec3a81..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/actions/UndoCheckOutAction.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.team.ui.actions;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.team.core.ITeamManager;
-import org.eclipse.team.core.ITeamProvider;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-
-/**
- * Action for undoing a previous checkout operation.
- */
-public class UndoCheckOutAction extends TeamAction {
-	/*
-	 * Method declared on IActionDelegate.
-	 */
-	public void run(IAction action) {
-		run(new WorkspaceModifyOperation() {
-			public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException {
-				try {
-					Hashtable table = getProviderMapping();
-					Set keySet = table.keySet();
-					monitor.beginTask("", keySet.size() * 1000);
-					monitor.setTaskName(Policy.bind("UndoCheckOutAction.undoing"));
-					Iterator iterator = keySet.iterator();
-					while (iterator.hasNext()) {
-						IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1000);
-						ITeamProvider provider = (ITeamProvider)iterator.next();
-						List list = (List)table.get(provider);
-						IResource[] providerResources = (IResource[])list.toArray(new IResource[list.size()]);
-						provider.uncheckout(providerResources, IResource.DEPTH_ZERO, subMonitor);
-					}
-				} catch (TeamException e) {
-					throw new InvocationTargetException(e);
-				} finally {
-					monitor.done();
-				}
-			}
-		}, Policy.bind("UndoCheckOutAction.undoCheckout"), this.PROGRESS_BUSYCURSOR);
-	}	
-	/**
-	 * @see TeamAction#isEnabled()
-	 */
-	protected boolean isEnabled() throws TeamException {
-		IResource[] resources = getSelectedResources();
-		if (resources.length == 0) return false;
-		ITeamManager manager = TeamPlugin.getManager();
-		for (int i = 0; i < resources.length; i++) {
-			ITeamProvider provider = manager.getProvider(resources[i].getProject());
-			if (provider == null) return false;
-			if (!provider.hasRemote(resources[i])) return false;
-			if (!provider.isCheckedOut(resources[i])) return false;
-		}
-		return true;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/CatchupReleaseViewer.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/CatchupReleaseViewer.java
deleted file mode 100644
index 7ec91f5..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/CatchupReleaseViewer.java
+++ /dev/null
@@ -1,426 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.util.Iterator;
-
-import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.structuremergeviewer.DiffTreeViewer;
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.internal.ui.UIConstants;
-import org.eclipse.team.ui.TeamUIPlugin;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.views.navigator.ResourceNavigator;
-
-/**
- * This viewer adds a custom filter and some merge actions.
- * Note this is a layer breaker and needs to be refactored. Viewers should
- * not contain references to workbench actions. Actions should be contributed
- * by the view.
- */
-public abstract class CatchupReleaseViewer extends DiffTreeViewer implements ISelectionChangedListener {
-	
-	/**
-	 * This filter hides all empty categories tree nodes.
-	 */
-	class CategoryFilter extends ViewerFilter {
-		static final int SHOW_INCOMING = 1;
-		static final int SHOW_OUTGOING = 2;
-		static final int SHOW_CONFLICTS = 4;
-
-		private int showMask = 0;
-		
-		CategoryFilter(int showMask) {
-			// Mask for all categories to show
-			this.showMask = showMask;
-		}
-		int getMask() {
-			return showMask;
-		}
-		void setMask(int mask) {
-			this.showMask = mask;
-		}
-		public boolean select(Viewer viewer, Object parentElement, Object element) {
-			// If this element has visible children, always show it.
-			// This is not great -- O(n^2) filtering
-			if (hasFilteredChildren(element)) {
-				return true;
-			}
-			if (element instanceof ITeamNode) {
-				int change = ((ITeamNode)element).getKind() & IRemoteSyncElement.CHANGE_MASK;
-				int direction = ((ITeamNode)element).getChangeDirection();
-				switch (direction) {
-					case ITeamNode.INCOMING:
-						return (showMask & SHOW_INCOMING) != 0;
-					case ITeamNode.OUTGOING:
-						return (showMask & SHOW_OUTGOING) != 0;
-					case Differencer.CONFLICTING:
-						return (showMask & SHOW_CONFLICTS) != 0;
-					default:
-						return change != 0;
-				}
-			}
-			// No children are visible, and this folder has no changes, so don't show it.
-			return false;
-		}
-		public boolean isFilterProperty(Object element, String property) {
-			return property.equals(PROP_KIND);
-		}
-	}
-	class FilterAction extends Action {
-		/** 
-		 * Must subclass constructor to make it accessible to container class
-		 */
-		FilterAction(String title, ImageDescriptor image) {
-			super(title, image);
-		}
-		public void run() {
-			updateFilters();
-		}
-	}
-	
-	// The current sync mode
-	private int syncMode = SyncView.SYNC_NONE;
-	
-	// Actions
-	private FilterAction showIncoming;
-	private FilterAction showOutgoing;
-	private FilterAction showOnlyConflicts;
-	private Action refresh;
-	private Action expandAll;
-	private Action showInNavigator;
-	private Action ignoreWhiteSpace;
-	
-	// Property constant for diff mode kind
-	static final String PROP_KIND = "team.ui.PropKind";
-
-
-	/**
-	 * Creates a new catchup/release viewer.
-	 */
-	protected CatchupReleaseViewer(Composite parent, SyncCompareInput model) {
-		super(parent, model.getCompareConfiguration());
-		initializeActions(model);
-	}
-	
-	/**
-	 * Contributes actions to the provided toolbar
-	 */
-	void contributeToActionBars(IActionBars actionBars) {
-		IToolBarManager toolBar = actionBars.getToolBarManager();
-	
-		toolBar.add(new Separator());
-		toolBar.add(showOnlyConflicts);
-	
-		// Drop down menu
-		IMenuManager menu = actionBars.getMenuManager();
-		if (syncMode == SyncView.SYNC_BOTH) {
-			menu.add(showIncoming);
-			menu.add(showOutgoing);
-		}
-		menu.add(ignoreWhiteSpace);
-		menu.add(refresh);
-	}
-	
-	/**
-	 * Contributes actions to the popup menu.
-	 */
-	protected void fillContextMenu(IMenuManager manager) {
-		manager.add(expandAll);
-		if (showInNavigator != null) {
-			manager.add(showInNavigator);
-		}
-	}
-	
-	/**
-	 * Expands to infinity all items in the selection.
-	 */
-	protected void expandSelection() {
-		ISelection selection = getSelection();
-		if (selection instanceof IStructuredSelection) {
-			Iterator elements = ((IStructuredSelection)selection).iterator();
-			while (elements.hasNext()) {
-				Object next = elements.next();
-				expandToLevel(next, ALL_LEVELS);
-			}
-		}
-	}
-	
-	protected int getSyncMode() {
-		return syncMode;
-	}
-	
-	/**
-	 * Returns true if the given element has filtered children, and false otherwise.
-	 */
-	protected boolean hasFilteredChildren(Object element) {
-		return getFilteredChildren(element).length > 0;
-	}
-	
-	/**
-	 * Creates the actions for this viewer.
-	 */
-	private void initializeActions(final SyncCompareInput diffModel) {
-		// Mask actions
-		ImageDescriptor image = TeamUIPlugin.getPlugin().getImageDescriptor(UIConstants.IMG_DLG_SYNC_INCOMING);
-		showIncoming = new FilterAction(Policy.bind("CatchupReleaseViewer.showIncomingAction"), image);
-		showIncoming.setToolTipText(Policy.bind("CatchupReleaseViewer.showIncomingAction"));
-	
-		image = TeamUIPlugin.getPlugin().getImageDescriptor(UIConstants.IMG_DLG_SYNC_OUTGOING);
-		showOutgoing = new FilterAction(Policy.bind("CatchupReleaseViewer.showOutgoingAction"), image);
-		showOutgoing.setToolTipText(Policy.bind("CatchupReleaseViewer.showOutgoingAction"));
-	
-		image = TeamUIPlugin.getPlugin().getImageDescriptor(UIConstants.IMG_DLG_SYNC_CONFLICTING);
-		
-		//show only conflicts is not a HideAction because it doesnt flip bits, it sets an exact mask
-		showOnlyConflicts = new FilterAction(Policy.bind("CatchupReleaseViewer.showOnlyConflictsAction"), image);
-		showOnlyConflicts.setToolTipText(Policy.bind("CatchupReleaseViewer.showOnlyConflictsAction"));
-	
-		//refresh action
-		image = TeamUIPlugin.getPlugin().getImageDescriptor(UIConstants.IMG_REFRESH);
-		refresh = new Action(Policy.bind("CatchupReleaseViewer.refreshAction"), image) {
-			public void run() {
-				diffModel.refresh();
-			}
-		};
-		refresh.setToolTipText(Policy.bind("CatchupReleaseViewer.refreshAction"));
-		
-		// Expand action
-		expandAll = new Action(Policy.bind("CatchupReleaseViewer.expand"), null) {
-			public void run() {
-				expandSelection();
-			}
-		};
-		
-		// Show in navigator
-		if (diffModel.getViewSite() != null) {
-			showInNavigator = new Action(Policy.bind("CatchupReleaseViewer.showInNavigator"), null) {
-				public void run() {
-					showSelectionInNavigator(diffModel.getViewSite());
-				}
-			};
-		}
-		
-		// Ignore white space
-		image = TeamUIPlugin.getPlugin().getImageDescriptor(UIConstants.IMG_IGNORE_WHITESPACE);
-		ignoreWhiteSpace = new Action(Policy.bind("CatchupReleaseViewer.ignoreWhiteSpace"), image) {
-			public void run() {
-				Boolean value = isChecked() ? Boolean.TRUE : Boolean.FALSE;
-				diffModel.getCompareConfiguration().setProperty(CompareConfiguration.IGNORE_WHITESPACE, value);
-			}
-		};
-		ignoreWhiteSpace.setId("team.ignoreWhiteSpace");
-		ignoreWhiteSpace.setChecked(false);
-		
-		// Add a selection listener to set the left label
-		addSelectionChangedListener(this);
-		
-		// Add a double-click listener for expanding/contracting
-		getTree().addListener(SWT.MouseDoubleClick, new Listener() {
-			public void handleEvent(Event e) {
-				mouseDoubleClicked(e);
-			}
-		});
-	
-		// Add an F5 listener for refresh
-		getTree().addKeyListener(new KeyAdapter() {
-			public void keyPressed(KeyEvent e) {
-				if (e.keyCode == SWT.F5) {
-					diffModel.refresh();
-				}
-			}
-		});
-	
-		// Set an initial filter -- show all changes
-		showIncoming.setChecked(true);
-		showOutgoing.setChecked(true);
-		showOnlyConflicts.setChecked(false);
-		setFilters(CategoryFilter.SHOW_INCOMING| CategoryFilter.SHOW_CONFLICTS | CategoryFilter.SHOW_OUTGOING);
-	}
-	
-	/*
-	 * Method declared on ContentViewer.
-	 */
-	protected void inputChanged(Object input, Object oldInput) {
-		super.inputChanged(input, oldInput);
-		// Update the refresh action
-		if (refresh != null) {
-			Tree tree = getTree();
-			if (tree != null) {
-				refresh.setEnabled(input != null);
-			}
-		}
-	}
-
-	/**
-	 * Shows the selected resource(s) in the resource navigator.
-	 */
-	private void showSelectionInNavigator(IViewSite viewSite) {
-		ISelection selection = getSelection();
-		if (!(selection instanceof IStructuredSelection)) {
-			return;
-		}
-		// Create a selection of IResource objects
-		Object[] selected = ((IStructuredSelection)selection).toArray();
-		IResource[] resources = new IResource[selected.length];
-		for (int i = 0; i < selected.length; i++) {
-			resources[i] = ((ITeamNode)selected[i]).getResource();
-		}
-		ISelection resourceSelection = new StructuredSelection(resources);
-		
-		// Show the resource selection in the navigator
-		try {
-			IViewPart part = viewSite.getPage().showView(IPageLayout.ID_RES_NAV);
-			if (part instanceof ResourceNavigator) {
-				((ResourceNavigator)part).selectReveal(resourceSelection);
-			}
-		} catch (PartInitException e) {
-			TeamUIPlugin.log(e.getStatus());
-		}
-	}
-	
-	/**
-	 * The mouse has been double-clicked in the tree, perform appropriate
-	 * behaviour.
-	 */
-	private void mouseDoubleClicked(Event e) {
-		// Only act on single selection
-		ISelection selection = getSelection();
-		if (selection instanceof IStructuredSelection) {
-			IStructuredSelection structured = (IStructuredSelection)selection;
-			if (structured.size() == 1) {
-				Object first = structured.getFirstElement();
-				if (first instanceof IDiffContainer) {
-					// Try to expand/contract
-					setExpandedState(first, !getExpandedState(first));
-				}
-			}
-		}
-	}
-	
-	/**
-	 * Notifies that the selection has changed.
-	 *
-	 * @param event event object describing the change
-	 */
-	public void selectionChanged(SelectionChangedEvent event) {
-		ISelection selection = event.getSelection();
-		if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
-			IStructuredSelection structured = (IStructuredSelection)selection;
-			Object selected = structured.getFirstElement();
-			if (selected instanceof TeamFile) {
-				updateLabels(((TeamFile)selected).getMergeResource());
-			}
-		}
-	}
-	
-	/**
-	 * Subclasses may override to provide different labels for the compare configuration.
-	 */
-	protected void updateLabels(MergeResource resource) {
-		resource.setLabels(getCompareConfiguration());
-	}
-	
-	/**
-	 * Set the filter mask to be the exact mask specified.
-	 */
-	private void setFilters(int maskToHide) {
-		ViewerFilter[] filters = getFilters();
-		if (filters != null) {
-			for (int i = 0; i < filters.length; i++) {
-				if (filters[i] instanceof CategoryFilter) {
-					CategoryFilter filter = (CategoryFilter)filters[i];
-					// Set the exact match to be applied on the filter
-					filter.setMask(maskToHide);
-					refresh();
-					return;
-				}
-			}
-		}
-		// No category filter found -- add one
-		addFilter(new CategoryFilter(maskToHide));
-	}
-	
-	/**
-	 * The sync mode has changed.  Update the filters.
-	 */
-	public void syncModeChanged(int mode) {
-		this.syncMode = mode;
-		updateFilters();
-	}
-	
-	/**
-	 * Sets the viewer filtering based on the current state
-	 * of the filter actions.
-	 */
-	void updateFilters() {
-		//do nothing if viewer is disposed
-		Control control = getControl();
-		if (control == null || control.isDisposed()) 
-			return;
-		
-		//always show conflicts
-		int filters = CategoryFilter.SHOW_CONFLICTS;
-		
-		//determine what other filters to apply based on current action states
-		switch (syncMode) {
-			case SyncView.SYNC_INCOMING:
-			case SyncView.SYNC_MERGE:
-				if (!showOnlyConflicts.isChecked()) {
-					filters |= CategoryFilter.SHOW_INCOMING;
-				}
-				break;
-			case SyncView.SYNC_OUTGOING:
-				if (!showOnlyConflicts.isChecked()) {
-					filters |= CategoryFilter.SHOW_OUTGOING;
-				}
-				break;
-			case SyncView.SYNC_BOTH:
-				boolean conflictsOnly = showOnlyConflicts.isChecked();
-				//if showing only conflicts, don't allow these actions to happen
-				showIncoming.setEnabled(!conflictsOnly);
-				showOutgoing.setEnabled(!conflictsOnly);
-				if (!conflictsOnly) {
-					if (showIncoming.isChecked()) {
-						filters |= CategoryFilter.SHOW_INCOMING;
-					}
-					if (showOutgoing.isChecked()) {
-						filters |= CategoryFilter.SHOW_OUTGOING;
-					}
-				}
-				break;
-		}
-		setFilters(filters);
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/ChangedTeamContainer.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/ChangedTeamContainer.java
deleted file mode 100644
index e90ebbb..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/ChangedTeamContainer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-
-/**
- * A node in a sync tree that represents a changed folder
- * (incoming/outgoing creation or deletion).
- */
-public class ChangedTeamContainer extends UnchangedTeamContainer {
-	private MergeResource mergeResource;
-	
-	/**
-	 * ChangedTeamContainer constructor
-	 */
-	public ChangedTeamContainer(IDiffContainer parent, MergeResource resource, int description) {
-		super(parent, resource.getResource(), description);
-		this.mergeResource = resource;
-	}
-	
-	/*
-	 * Method declared on ITeamNode.
-	 */
-	public int getChangeDirection() {
-		return getKind() & Differencer.DIRECTION_MASK;
-	}
-
-	public String getName() {
-		return mergeResource.getName();
-	}
-
-	/**
-	 * Returns the team resource managed by this object.
-	 */
-	public MergeResource getMergeResource() {
-		return mergeResource;
-	}
-
-	/*
-	 * Method declared on IDiffContainer
-	 */
-	public void removeToRoot(IDiffElement child) {
-		// Don't want to remove empty changed containers
-		remove(child);
-	}
-
-	/**
-	 * For debugging purposes only.
-	 */
-	public String toString() {
-		return "ChangedTeamContainer(" + getResource().getName() + ")";
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/ITeamNode.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/ITeamNode.java
deleted file mode 100644
index 304ed7d..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/ITeamNode.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-
-/**
- * Interface for a sync node that responds to team commands.
- */
-public interface ITeamNode extends IDiffElement {
-	// Possible values for the change direction
-	static final int INCOMING = Differencer.RIGHT;
-	static final int OUTGOING = Differencer.LEFT;
-	static final int CONFLICTING = Differencer.CONFLICTING;
-	static final int NO_CHANGE = Differencer.NO_CHANGE;
-	
-	/**
-	 * Returns the change direction for this resource.  One of:
-	 * INCOMING, OUTGOING, CONFLICTING, NO_CHANGE.
-	 */
-	public int getChangeDirection();
-	
-	/**
-	 * Returns the core resource represented by this node.
-	 */
-	public IResource getResource();
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/MergeResource.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/MergeResource.java
deleted file mode 100644
index c5249aa..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/MergeResource.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.io.InputStream;
-
-import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.IRemoteResource;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ui.Policy;
-
-/**
- * Encapsulates information about a resource that requires
- * contact with the Team API.
- */
-public class MergeResource {
-	private IRemoteSyncElement syncTree;
-	
-	/**
-	 * Creates a new merge resource based on the given sync information.
-	 */
-	public MergeResource(IRemoteSyncElement syncTree) {
-		this.syncTree = syncTree;
-	}
-	
-	/**
-	 * The user has manually merged contents from the server into
-	 * the local resource.  Clear the incoming changes from the server.
-	 */
-	public void confirmMerge() {
-	//	manager.confirmMerge(syncTree.getResource());
-	}
-	
-	/**
-	 * Returns an InputStream for the base revision of this incoming resource.
-	 */
-	public InputStream getBaseRevision() throws CoreException {
-		IRemoteResource remote = syncTree.getBase();
-		if (remote != null && !remote.isContainer()) {
-			try {
-				return remote.getContents(new NullProgressMonitor());
-			} catch (TeamException exception) {
-				// The remote resource has gone.
-				return null;
-			}
-		}
-		return null;
-	}
-	
-	public String getExtension() {
-		if (syncTree.isContainer()) {
-			return ITypedElement.FOLDER_TYPE;
-		}
-		String name = getName();
-		if (name != null) {
-			int index = name.lastIndexOf('.');
-			if (index == -1)
-				return "";
-			if (index == (name.length() - 1))
-				return "";
-			return name.substring(index + 1);
-		}
-		return ITypedElement.FOLDER_TYPE;
-	}
-	
-	/**
-	 * Returns an InputStream for the latest repository version of this incoming resource.
-	 */
-	public InputStream getLatestRevision() throws CoreException {
-		IRemoteResource remote = syncTree.getRemote();
-		try {
-			return remote.getContents(new NullProgressMonitor());
-		} catch (TeamException e) {
-			throw new CoreException(e.getStatus());
-		}
-	}
-	
-	/**
-	 * Returns an InputStream for the local resource.
-	 */
-	public InputStream getLocalStream() throws CoreException {
-		IResource left = syncTree.getLocal();
-		if (left == null) return null;
-		if (left.exists() && left.getType() == IResource.FILE) {
-			return ((IFile)left).getContents(true);
-		}
-		return null;
-	}
-
-	public String getName() {
-		return syncTree.getName();
-	}
-	
-	/*
-	 * @see IMergeResource#getResource.
-	 */
-	public IResource getResource() {
-		return syncTree.getLocal();
-	}
-
-	public IRemoteSyncElement getSyncElement() {
-		return syncTree;
-	}
-	
-	/**
-	 * Returns true if this merge resource has a base resource,
-	 * and false otherwise.
-	 */
-	public boolean hasBaseRevision() {
-		return syncTree.getBase() != null;
-	}
-	
-	/**
-	 * Returns true if this merge resource has a latest revision,
-	 * and false otherwise.
-	 */
-	public boolean hasLatestRevision() {
-		return syncTree.getRemote() != null;
-	}
-	
-	/**
-	 * Is this a leaf node, i.e. a file?
-	 */
-	public boolean isLeaf() {
-		return !syncTree.isContainer();
-	}
-	
-	/**
-	 * Updates the given compare configuration with appropriate left, right
-	 * and ancestor labels for this resource.
-	 */
-	public void setLabels(CompareConfiguration config) {
-		String name = getName();
-		config.setLeftLabel(Policy.bind("MergeResource.workspaceFile", name));
-	
-	
-		IRemoteResource remote = syncTree.getRemote();
-		if (remote != null) {
-			config.setRightLabel(Policy.bind("MergeResource.repositoryFile", name));
-	//		config.setRightLabel(TeamUIPlugin.getResourceString("MergeResource.repositoryFile", new Object[] {name, remote.getVersionName()} ));
-		} else {
-			config.setRightLabel(Policy.bind("MergeResource.noRepositoryFile"));
-		}
-	
-		IRemoteResource base = syncTree.getBase();
-		if (base != null) {
-			config.setAncestorLabel(Policy.bind("MergeResource.commonFile", name));
-	//		config.setAncestorLabel(TeamUIPlugin.getResourceString("MergeResource.commonFile", new Object[] {name, common.getVersionName()} ));
-		} else {
-			config.setAncestorLabel(Policy.bind("MergeResource.noCommonFile"));
-		}
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncCompareInput.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncCompareInput.java
deleted file mode 100644
index af5ba78..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncCompareInput.java
+++ /dev/null
@@ -1,383 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.compare.CompareEditorInput;
-import org.eclipse.compare.structuremergeviewer.DiffContainer;
-import org.eclipse.compare.structuremergeviewer.DiffNode;
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.ICompareInput;
-import org.eclipse.compare.structuremergeviewer.ICompareInputChangeListener;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.ILocalSyncElement;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.ui.TeamUIPlugin;
-import org.eclipse.ui.IViewSite;
-
-/**
- * Performs a catchup or release operation on an array of resources.
- */
-public abstract class SyncCompareInput extends CompareEditorInput {
-	private IRemoteSyncElement[] trees;
-	private CatchupReleaseViewer catchupReleaseViewer;
-	private DiffNode diffRoot;
-	private Shell shell;
-	private IViewSite viewSite;
-	
-	private ICompareInputChangeListener listener = new ICompareInputChangeListener() {
-		public void compareInputChanged(ICompareInput source) {
-			SyncCompareInput.this.compareInputChanged(source);
-		}
-	};
-
-	/**
-	 * Subclasses may override but must call super.
-	 */
-	protected void compareInputChanged(ICompareInput source) {
-		catchupReleaseViewer.update(source, new String[] {CatchupReleaseViewer.PROP_KIND});
-		updateStatusLine();
-	}
-	
-	/**
-	 * Creates a new catchup or release operation.
-	 */
-	public SyncCompareInput() {
-		super(new CompareConfiguration());
-	}
-	
-	protected abstract IRemoteSyncElement[] createSyncElements(IProgressMonitor monitor) throws TeamException;
-	
-	/*
-	 * @see CompareEditorInput#createContents
-	 */
-	public Control createContents(Composite parent) {
-		Control result = super.createContents(parent);
-		initialSelectionAndExpansionState();
-		return result;
-	}
-
-	/**
-	 * Subclasses must create and return a new CatchupReleaseViewer, and set the viewer
-	 * using setViewer().
-	 */
-	public abstract Viewer createDiffViewer(Composite parent);
-	
-	/**
-	 * Returns the root node of the diff tree.
-	 */
-	public DiffNode getDiffRoot() {
-		return diffRoot;
-	}
-
-	/**
-	 * Returns the first diff element that is still unresolved in the
-	 * subtree rooted at the given root element.
-	 * Returns null if everything is resolved.
-	 */
-	private IDiffElement getFirstChange(IDiffElement root) {
-		if (root instanceof ITeamNode) {
-			ITeamNode node = (ITeamNode)root;
-			if (node instanceof TeamFile) {
-				return node;
-			}
-		}
-		if (root instanceof IDiffContainer) {
-			IDiffElement[] children = ((IDiffContainer)root).getChildren();
-			IDiffElement result = null;
-			for (int i = 0; i < children.length; i++) {
-				result = getFirstChange(children[i]);
-				if (result != null) {
-					return result;
-				}
-			}
-		}
-		return null;
-	}
-
-	protected Shell getShell() {
-		return shell;
-	}
-	
-	/**
-	 * Returns the name of this operation.
-	 * It is dipslayed in the CompareEditor's title bar.
-	 */
-	public String getTitle() {
-		return Policy.bind("SyncCompareInput.synchronize");
-	}
-
-	/**
-	 * Returns the compare viewer;
-	 */
-	public CatchupReleaseViewer getViewer() {
-		return catchupReleaseViewer;
-	}
-
-	/**
-	 * Returns the view site, or null if this is a merge.
-	 */
-	public IViewSite getViewSite() {
-		return viewSite;
-	}
-
-	/**
-	 * Returns true if the model has incoming or conflicting changes.
-	 */
-	boolean hasIncomingChanges() {
-		if (diffRoot == null) {
-			return false;
-		}
-		SyncSet set = new SyncSet(new StructuredSelection(diffRoot.getChildren()));
-		return set.hasIncomingChanges() || set.hasConflicts();
-	}
-
-	/**
-	 * Set an appropriate initial selection and expansion state.
-	 */
-	private void initialSelectionAndExpansionState() {
-		// Select the next change
-		IDiffElement next = getFirstChange(diffRoot);
-		if (next != null) {
-			catchupReleaseViewer.setSelection(new StructuredSelection(next), true);
-		} else {
-			catchupReleaseViewer.collapseAll();
-			catchupReleaseViewer.setSelection(new StructuredSelection());
-		}
-	}
-
-	/**
-	 * Returns true if we have unsaved changes.
-	 */
-	public boolean isSaveNeeded() {
-		// All changes take effect immediately, so never need to save.
-		return diffRoot.hasChildren();
-	}
-
-	/**
-	 * Performs a compare on the given selection.
-	 * This method is called before the CompareEditor has been opened.
-	 * If the result of the diff is empty (or an error has occured)
-	 * no CompareEditor is opened but an Alert is shown.
-	 */
-	public Object prepareInput(final IProgressMonitor pm) throws InterruptedException, InvocationTargetException {
-		if (pm.isCanceled()) {
-			throw new InterruptedException();
-		}
-	
-		try {
-			pm.beginTask(null, 100);
-			
-			// Estimate 70% of the time is creating the sync elements
-			this.trees = createSyncElements(Policy.subMonitorFor(pm, 70));
-			setMessage(null);
-			if (trees.length == 0) {
-				return null;
-			}
-			final InterruptedException[] exceptions = new InterruptedException[1];
-			
-			IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
-				public void run(IProgressMonitor monitor) throws CoreException {
-					// collect changes and build the diff tree
-					diffRoot = new DiffNode(0);
-					try {						
-						doServerDelta(monitor);
-					} catch (InterruptedException e) {
-						exceptions[0] = e;
-					}
-				}
-			};
-			if (pm.isCanceled()) {
-				throw new InterruptedException();
-			}
-			// Estimate 30% of the time is doing the server delta
-			ResourcesPlugin.getWorkspace().run(runnable, Policy.subMonitorFor(pm, 30));
-			if (exceptions[0] != null) throw exceptions[0];
-			if (pm.isCanceled()) {
-				throw new InterruptedException();
-			}
-				
-			if (!diffRoot.hasChildren()) {
-				diffRoot = null;
-			}
-	
-			updateStatusLine();
-				
-			return diffRoot;
-		} catch (CoreException e) {
-			throw new InvocationTargetException(e);
-		} catch (TeamException e) {
-			throw new InvocationTargetException(e);
-		}
-	}
-	
-	void doServerDelta(IProgressMonitor pm) throws InterruptedException {
-		pm.beginTask("", trees.length * 1000);
-		pm.setTaskName(Policy.bind("SyncCompareInput.taskTitle"));
-		for (int i = 0; i < trees.length; i++) {
-			IRemoteSyncElement tree = trees[i];
-			IDiffElement localRoot = collectResourceChanges(null, tree, Policy.subMonitorFor(pm, 1000));
-			makeParents(localRoot);
-		}
-	}
-	
-	IDiffElement collectResourceChanges(IDiffContainer parent, IRemoteSyncElement tree, IProgressMonitor pm) {
-		int type = tree.getSyncKind(getSyncGranularity(), pm);
-		MergeResource mergeResource = new MergeResource(tree);
-	
-		if (tree.isContainer()) {
-			IDiffContainer element = new ChangedTeamContainer(parent, mergeResource, type);
-			try {				
-				ILocalSyncElement[] children = tree.members(pm);
-				for (int i = 0; i < children.length; i++) {
-					collectResourceChanges(element, (IRemoteSyncElement)children[i], pm);
-				}
-			} catch (TeamException e) {
-				TeamUIPlugin.log(e.getStatus());
-			}
-			return element;
-		} else {
-			TeamFile file = new TeamFile(parent, mergeResource, type);
-			file.addCompareInputChangeListener(listener);
-			return file;
-		}
-	}
-	
-	protected abstract int getSyncGranularity();		
-	
-	/**
-	 * Builds a DiffFolder tree under the given root for the given resource.
-	 */
-	private DiffContainer buildPath(DiffContainer root, IContainer resource) {
-		DiffContainer parent = root;
-		if (resource.getType() == IResource.ROOT) {
-			return root;
-		}
-		if (resource.getType() != IResource.PROJECT) {
-			parent = buildPath(root, resource.getParent());
-		}
-	
-		DiffContainer c = (DiffContainer)parent.findChild(resource.getName());
-		if (c == null) {
-			c = new UnchangedTeamContainer(parent, resource);
-		}
-		return c;
-	}
-	
-	void makeParents(IDiffElement element) {
-		IContainer parent = ((ITeamNode)element).getResource().getParent();
-		DiffContainer container = buildPath(diffRoot, parent);
-		container.add(element);
-	}
-	
-	/**
-	 * Performs a refresh, with progress and cancelation.
-	 */
-	public void refresh() {
-		final Object[] input = new Object[1];
-		IRunnableWithProgress op = new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-				input[0] = prepareInput(monitor);
-			}
-		};
-		try {
-			run(op, Policy.bind("SyncCompareInput.refresh"));
-		} catch (InterruptedException e) {
-			return;
-		}
-		
-		catchupReleaseViewer.setInput(input[0]);
-		if (input[0] == null) {
-			MessageDialog.openInformation(shell, Policy.bind("nothingToSynchronize"), Policy.bind("SyncCompareInput.nothingText"));
-		}
-	}
-
-	protected void run(IRunnableWithProgress op, String problemMessage) throws InterruptedException {
-		ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
-		try {
-			dialog.run(true, true, op);
-		} catch (InvocationTargetException e) {
-			Throwable throwable = e.getTargetException();
-			IStatus error = null;
-			if (throwable instanceof CoreException) {
-				error = ((CoreException)throwable).getStatus();
-			} else {
-				error = new Status(IStatus.ERROR, TeamUIPlugin.ID, 1, Policy.bind("simpleInternal") , throwable);
-			}
-			ErrorDialog.openError(shell, problemMessage, error.getMessage(), error);
-			TeamUIPlugin.log(error);
-		}
-	}
-
-	public void setViewSite(IViewSite viewSite) {
-		this.viewSite = viewSite;
-		this.shell = viewSite.getShell();
-	}
-
-	public void setViewer(CatchupReleaseViewer viewer) {
-		this.catchupReleaseViewer = viewer;
-	}
-
-	/**
-	 * Updates the status line.
-	 */
-	protected void updateStatusLine() {
-		if (viewSite != null && !shell.isDisposed()) {
-			Runnable update = new Runnable() {
-				public void run() {
-					if (!shell.isDisposed()) {
-						IStatusLineManager statusLine = viewSite.getActionBars().getStatusLineManager();
-						if (diffRoot == null) {
-							statusLine.setMessage(null);
-							statusLine.setErrorMessage(null);
-							return;
-						}
-						SyncSet set = new SyncSet(new StructuredSelection(diffRoot.getChildren()));
-						if (set.hasConflicts()) {
-							statusLine.setMessage(null);
-							statusLine.setErrorMessage(set.getStatusLineMessage());
-						} else {
-							statusLine.setErrorMessage(null);
-							statusLine.setMessage(set.getStatusLineMessage());
-						}
-						viewSite.getActionBars().updateActionBars();
-					}
-				}
-			};
-			// Post or run the update
-			if (shell.getDisplay() != Display.getCurrent()) {
-				shell.getDisplay().asyncExec(update);
-			} else {
-				update.run();
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncSet.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncSet.java
deleted file mode 100644
index c595c95..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncSet.java
+++ /dev/null
@@ -1,270 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
- 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ui.Policy;
-
-/**
- * This class contains a set of resources that are slated to be
- * synchronized.  It performs various operations on the
- * set in preparation for catchup/release.
- */
-public class SyncSet {
-	private HashSet set;
-	
-	/**
-	 * Creates a new sync set on the nodes in the given selection.
-	 */
-	public SyncSet(IStructuredSelection nodeSelection) {
-		this.set = new HashSet(nodeSelection.size() + 1);
-		collectNodes(nodeSelection);
-	}
-
-	/**
-	 * Collects all nodes to which this action will apply.  This means
-	 * all nodes in the selection, plus all their children.
-	 */
-	private void collectNodes(IStructuredSelection selection) {
-		Object[] nodes = selection.toArray();
-		for (int i = 0; i < nodes.length; i++) {
-			recursivelyAdd((ITeamNode)nodes[i]);
-		}
-	}
-	
-	/**
-	 * Adds all parent creations for the given node to the sync set.
-	 */
-	private void collectParentCreations(ITeamNode node) {
-		IDiffElement parent = node.getParent();
-		if (parent != null && parent instanceof ITeamNode) {
-			if (parent.getKind() != IRemoteSyncElement.IN_SYNC) {
-				set.add(parent);
-				collectParentCreations((ITeamNode)parent);
-			}
-		}
-	}
-
-	/**
-	 * Returns all nodes in the set that have changes
-	 */
-	public ITeamNode[] getChangedNodes() {
-		ArrayList nodeList = new ArrayList(set.size());
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			ITeamNode node = (ITeamNode)it.next();
-			int dir = node.getChangeDirection();
-			// We assume changed nodes of the wrong type have been culled
-			// during set creation.
-			if (dir != Differencer.NO_CHANGE) {
-				nodeList.add(node);
-			}
-		}
-		ITeamNode[] nodes = new ITeamNode[nodeList.size()];
-		nodeList.toArray(nodes);
-		return nodes;
-	}
-	
-	/**
-	 * Returns the resources from all the nodes in this set.
-	 */
-	public IResource[] getResources() {
-		ITeamNode[] changed = getChangedNodes();
-		IResource[] resources = new IResource[changed.length];
-		for (int i = 0; i < changed.length; i++) {
-			resources[i] = changed[i].getResource();
-		}
-		return resources;
-	}
-	
-	/**
-	 * Returns a message for the status line describing this sync set.
-	 */
-	public String getStatusLineMessage() {
-		int incoming = 0;
-		int outgoing = 0;
-		int conflicts = 0;
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			ITeamNode next = (ITeamNode)it.next();
-			switch (next.getChangeDirection()) {
-				case IRemoteSyncElement.INCOMING:
-					incoming++;
-					break;
-				case IRemoteSyncElement.OUTGOING:
-					outgoing++;
-					break;
-				case IRemoteSyncElement.CONFLICTING:
-					conflicts++;
-					break;
-			}
-		}
-		StringBuffer result = new StringBuffer();
-		
-		if (conflicts == 0) {
-			result.append(Policy.bind("SyncSet.noConflicts"));
-		} else {
-			result.append(Policy.bind("SyncSet.conflicts", new Object[] {Integer.toString(conflicts)} ));
-		}
-		if (incoming == 0) {
-			result.append(Policy.bind("SyncSet.noIncomings"));
-		} else {
-			result.append(Policy.bind("SyncSet.incomings", new Object[] {Integer.toString(incoming)} ));
-		}
-		if (outgoing == 0) {
-			result.append(Policy.bind("SyncSet.noOutgoings"));
-		} else {
-			result.append(Policy.bind("SyncSet.outgoings", new Object[] {Integer.toString(outgoing)} ));
-		}
-		return result.toString();
-	}
-	
-	/**
-	 * Returns true if there are any conflicting nodes in the set, and
-	 * false otherwise.
-	 */
-	public boolean hasConflicts() {
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			if (((ITeamNode)it.next()).getChangeDirection() == IRemoteSyncElement.CONFLICTING) {
-				return true;
-			}
-		}
-		return false;
-	}
-	
-	/**
-	 * Returns true if this sync set has incoming changes.
-	 * Note that conflicts are not considered to be incoming changes.
-	 */
-	public boolean hasIncomingChanges() {
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			if (((ITeamNode)it.next()).getChangeDirection() == IRemoteSyncElement.INCOMING) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns true if this sync set has outgoing changes.
-	 * Note that conflicts are not considered to be outgoing changes.
-	 */
-	public boolean hasOutgoingChanges() {
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			if (((ITeamNode)it.next()).getChangeDirection() == IRemoteSyncElement.OUTGOING) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns true if this sync set has auto-mergeable conflicts.
-	 */
-	public boolean hasAutoMergeableConflicts() {
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			ITeamNode node = (ITeamNode)it.next();
-			if ((node.getKind() & IRemoteSyncElement.AUTOMERGE_CONFLICT) != 0) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Adds the given node, plus all its children, to the given set.
-	 */
-	private void recursivelyAdd(ITeamNode node) {
-		// Add the node and recurse
-		if (set.add(node)) {
-			if (node instanceof IDiffContainer) {
-				IDiffElement[] children = ((IDiffContainer)node).getChildren();
-				for (int i = 0; i < children.length; i++) {
-					if (children[i] instanceof ITeamNode) {
-						recursivelyAdd((ITeamNode)children[i]);
-					}
-				}
-			}
-			// Add any created parents (can't release or load a 
-			// resource creation without including new parents)
-			collectParentCreations(node);
-		}
-	}
-	
-	/**
-	 * Removes all conflicting nodes from this set.
-	 */
-	public void removeConflictingNodes() {
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			ITeamNode node = (ITeamNode)it.next();
-			if (node.getChangeDirection() == IRemoteSyncElement.CONFLICTING) {
-				it.remove();
-			}
-		}
-	}
-	/**
-	 * Removes all outgoing nodes from this set.
-	 */
-	public void removeOutgoingNodes() {
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			ITeamNode node = (ITeamNode)it.next();
-			if (node.getChangeDirection() == IRemoteSyncElement.OUTGOING) {
-				it.remove();
-			}
-		}
-	}
-	/**
-	 * Removes all incoming nodes from this set.
-	 */
-	public void removeIncomingNodes() {
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			ITeamNode node = (ITeamNode)it.next();
-			if (node.getChangeDirection() == IRemoteSyncElement.INCOMING) {
-				it.remove();
-			}
-		}
-	}
-	/**
-	 * Removes all conflicting nodes from this set that are not auto-mergeable
-	 */
-	public void removeNonMergeableNodes() {
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			ITeamNode node = (ITeamNode)it.next();
-			if ((node.getKind() & IRemoteSyncElement.MANUAL_CONFLICT) != 0) {
-				it.remove();
-			}
-		}
-	}
-	
-	/**
-	 * Removes all nodes that aren't applicable for the direction.
-	 */
-	public void removeNonApplicableNodes(int direction) {
-		for (Iterator it = set.iterator(); it.hasNext();) {
-			ITeamNode node = (ITeamNode)it.next();
-			int nodeDirection = node.getKind() & IRemoteSyncElement.DIRECTION_MASK;
-			if (nodeDirection != IRemoteSyncElement.CONFLICTING) {
-				if (nodeDirection != direction) {
-					it.remove();
-				}
-			}
-		}
-	}
-	
-	/**
-	 * Remove the given node from the sync set
-	 */
-	public void remove(ITeamNode node) {
-		set.remove(node);
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncView.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncView.java
deleted file mode 100644
index 4f25858..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/SyncView.java
+++ /dev/null
@@ -1,354 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.structuremergeviewer.DiffNode;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.internal.ui.UIConstants;
-import org.eclipse.team.ui.TeamUIPlugin;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * This class provides a view for performing synchronizations
- * between the local workspace and a repository.
- */
-public class SyncView extends ViewPart {
-	public static final String VIEW_ID = "org.eclipse.team.ui.sync.SyncView";
-	private SyncCompareInput input;
-	private TreeViewer viewer;
-	private Composite top;
-	
-	// The possible sync modes
-	public static final int SYNC_NONE = 0;
-	public static final int SYNC_INCOMING = 1;
-	public static final int SYNC_OUTGOING = 2;
-	public static final int SYNC_BOTH = 3;
-	public static final int SYNC_MERGE = 4;
-	
-	// Titles cached for efficiency
-	private final String CATCHUP_TITLE = Policy.bind("SyncView.incomingModeTitle");
-	private final String RELEASE_TITLE = Policy.bind("SyncView.outgoingModeTitle");
-	private final String FREE_TITLE = Policy.bind("SyncView.freeModeTitle");
-	
-	private int currentSyncMode = SYNC_NONE;
-	
-	/**
-	 * Action for toggling the sync mode.
-	 */
-	class SyncModeAction extends Action {
-		// The sync mode that this action enables
-		private int syncMode;
-		public SyncModeAction(String title, ImageDescriptor image, int mode) {
-			super(title, image);
-			this.syncMode = mode;
-		}
-		public void run() {
-			SyncView.this.setSyncMode(syncMode);
-		}
-	}
-	
-	private SyncModeAction incomingMode;
-	private SyncModeAction outgoingMode;
-	private SyncModeAction freeMode;
-	
-	/**
-	 * Creates a new view.
-	 */
-	public SyncView() {
-		super();
-	}
-
-	/*
-	 * @see IWorkbenchPart#createPartControl
-	 */
-	public void createPartControl(Composite parent) {
-		top = new Composite(parent, SWT.NONE);
-		
-		//XXX Set the control data to be this part, so the compare 
-		//frames that will eventually live in this widget hierarchy
-		//have some way to access the action bars for hooking global
-		//actions.  See corresponding XXX comment in CompareEditor#findActionBars
-		top.setData(this);
-		
-		GridLayout layout = new GridLayout();
-		layout.marginHeight = 0;
-		layout.marginWidth = 0;
-		top.setLayout(layout);
-		top.setLayoutData(new GridData(GridData.FILL_BOTH));
-		
-		showDefaultContents();
-		
-		initializeSyncModes();
-	}
-	
-	/**
-	 * Makes the sync view visible in the active perspective. If there
-	 * isn't a sync view registered <code>null</code> is returned.
-	 * Otherwise the opened view part is returned.
-	 */
-	public static SyncView findInActivePerspective() {
-		try {
-			IViewPart part = TeamUIPlugin.getActivePage().findView(VIEW_ID);
-			if (part == null) {
-				part = TeamUIPlugin.getActivePage().showView(VIEW_ID);
-			}
-			return (SyncView)part;
-		} catch (PartInitException pe) {
-			return null;
-		}
-	}
-	
-	/**
-	 * Sets up the sync modes and the actions for switching between them.
-	 */
-	private void initializeSyncModes() {
-		// Create the actions
-		incomingMode = new SyncModeAction(
-			Policy.bind("SyncView.incomingModeAction"),
-			TeamUIPlugin.getPlugin().getImageDescriptor(UIConstants.IMG_SYNC_MODE_CATCHUP),
-			SYNC_INCOMING);
-		incomingMode.setToolTipText(Policy.bind("SyncView.incomingModeToolTip"));
-		incomingMode.setChecked(false);
-		
-		outgoingMode = new SyncModeAction(
-			Policy.bind("SyncView.outgoingModeAction"),
-			TeamUIPlugin.getPlugin().getImageDescriptor(UIConstants.IMG_SYNC_MODE_RELEASE),
-			SYNC_OUTGOING);
-		outgoingMode.setToolTipText(Policy.bind("SyncView.outgoingModeToolTip"));
-		outgoingMode.setChecked(false);
-		
-		freeMode = new SyncModeAction(
-			Policy.bind("SyncView.freeModeAction"),
-			TeamUIPlugin.getPlugin().getImageDescriptor(UIConstants.IMG_SYNC_MODE_FREE),
-			SYNC_BOTH);
-		freeMode.setToolTipText(Policy.bind("SyncView.freeModeToolTip"));
-		freeMode.setChecked(false);
-	}
-	
-	private boolean isEmpty(DiffNode node) {
-		if (node.getKind() != 0) return false;
-		IDiffElement[] children = node.getChildren();
-		for (int i = 0; i < children.length; i++) {

-			if (!isEmpty(children[i])) return false;

-		}
-		return true;
-	}
-	private boolean isEmpty(IDiffElement element) {
-		if (element.getKind() != 0) return false;
-		if (element instanceof DiffNode) {
-			IDiffElement[] children = ((DiffNode)element).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				if (!isEmpty(children[i])) return false;
-			}
-		}
-		return true;
-	}
-	
-	/**
-	 * Runs an operation and handles progress and exceptions.  Returns true
-	 * if the operation was successful, and false if there were errors or
-	 * the user canceled.
-	 */
-	private boolean run(IRunnableWithProgress op) {
-		ProgressMonitorDialog dialog = new ProgressMonitorDialog(getSite().getShell());
-		try {
-			dialog.run(true, true, op);
-			return true;
-		} catch (InvocationTargetException e) {
-			Throwable throwable = e.getTargetException();
-			IStatus error = null;
-			if (throwable instanceof TeamException) {
-				error = ((TeamException)throwable).getStatus();
-			} else if (throwable instanceof CoreException) {
-				error = ((CoreException)throwable).getStatus();
-			} else {
-				error = new Status(IStatus.ERROR, TeamUIPlugin.ID, 1, Policy.bind("simpleInternal"), throwable);
-			}
-			ErrorDialog.openError(getSite().getShell(), Policy.bind("SyncView.unableSynchronize"), null, error);
-			TeamUIPlugin.log(error);
-		} catch (InterruptedException e) {
-		}
-		return false;
-	}
-	
-	/**
-	 * Asks the part to take focus within the workbench.
-	 */
-	public void setFocus() {
-		if (top != null && !top.isDisposed()) {
-			top.setFocus();
-		}
-	}
-
-	/**
-	 * Activates the given sync mode.
-	 */
-	void setSyncMode(int mode) {
-		// Implement radio button behaviour
-		switch (mode) {
-			case SYNC_INCOMING:
-				incomingMode.setChecked(true);
-				outgoingMode.setChecked(false);
-				freeMode.setChecked(false);
-				setTitle(CATCHUP_TITLE);
-				break;
-			case SYNC_OUTGOING:
-				outgoingMode.setChecked(true);
-				incomingMode.setChecked(false);
-				freeMode.setChecked(false);
-				setTitle(RELEASE_TITLE);
-				break;
-			case SYNC_BOTH:
-				freeMode.setChecked(true);
-				outgoingMode.setChecked(false);
-				incomingMode.setChecked(false);
-				setTitle(FREE_TITLE);
-				break;
-		}
-		// Only update actions if there is valid input
-		if (input != null && input.getDiffRoot() != null && mode != currentSyncMode) {
-			currentSyncMode = mode;
-			input.getViewer().syncModeChanged(mode);
-			updateActions();
-		}
-	}
-	
-	/**
-	 * Shows default contents for the view if there is nothing to synchronize.
-	 */
-	private void showDefaultContents() {
-		Label label = new Label(top, SWT.WRAP);
-		label.setLayoutData(new GridData(GridData.FILL_BOTH));
-		label.setText(Policy.bind("SyncView.text"));
-	}
-	
-	/**
-	 * Shows synchronization information for the given resources in the sync view.
-	 */
-	public void showSync(SyncCompareInput input) {
-		input.setViewSite(getViewSite());
-		this.input = input;
-		currentSyncMode = SYNC_NONE;
-		
-		// Remove old viewer
-		Control[] oldChildren = top.getChildren();
-		if (oldChildren != null) {
-			for (int i = 0; i < oldChildren.length; i++) {
-				oldChildren[i].dispose();
-			}
-		}
-		// Remove actions from toolbar
-		IActionBars bars = getViewSite().getActionBars();
-		bars.getToolBarManager().removeAll();
-		bars.getToolBarManager().update(false);
-		bars.getMenuManager().removeAll();
-		bars.getMenuManager().update();
-		bars.updateActionBars();
-		
-		// Display the default contents while running the diff
-		showDefaultContents();
-		top.layout();
-		
-		// Run the diff and stop if cancel or error occurred.
-		if (!run(input)) return;
-		
-		// Check for problem message
-		if (input.getMessage() != null) {
-			MessageDialog.openInformation(getSite().getShell(), Policy.bind("SyncView.unableSynchronize"), input.getMessage());
-			return;
-		}
-		
-		// Check for empty comparison
-		if (isEmpty(input.getDiffRoot())) {
-			MessageDialog.openInformation(getSite().getShell(), Policy.bind("nothingToSynchronize"), Policy.bind("SyncView.same"));
-			return;
-		}
-	
-		// Remove the default contents
-		oldChildren = top.getChildren();
-		if (oldChildren != null) {
-			for (int i = 0; i < oldChildren.length; i++) {
-				oldChildren[i].dispose();
-			}
-		}
-
-		// Show the result
-		Control control = input.createContents(top);
-		control.setLayoutData(new GridData(GridData.FILL_BOTH));
-		/*TreeViewer viewer = input.getViewer();
-		if (viewer != null) {
-			Control viewerControl = viewer.getControl();
-			if (viewerControl != null && !viewerControl.isDisposed()) {
-				WorkbenchHelp.setHelp(viewerControl, new ViewContextComputer(this, ITeamHelpContextIds.SYNC_VIEW));
-			}
-		}*/
-		
-		top.layout();
-		
-		// Set the sync mode depending on user preference
-		// To do: add the user preference later, just say no for now.
-	//	if (TeamUIPlugin.getPlugin().getPreferenceStore().getBoolean(UIConstants.PREF_ALWAYS_IN_CATCHUP_RELEASE)) {
-	//		freeMode.run();
-	//	} else {
-			if (input.hasIncomingChanges()) {
-				incomingMode.run();
-			} else {
-				outgoingMode.run();
-			}
-	//	}
-		// Reveal if fast view
-		try {
-			TeamUIPlugin.getActivePage().showView(VIEW_ID);
-		} catch (PartInitException e) {
-			TeamUIPlugin.log(e.getStatus());
-		}
-	}
-	
-	/**
-	 * Updates the actions for this view's action bar.
-	 */
-	private void updateActions() {
-		IActionBars bars = getViewSite().getActionBars();
-		IToolBarManager toolBar = bars.getToolBarManager();
-		IMenuManager menu = bars.getMenuManager();
-		toolBar.removeAll();
-		menu.removeAll();
-		
-		toolBar.add(incomingMode);
-		toolBar.add(outgoingMode);
-		toolBar.add(freeMode);
-		input.getViewer().contributeToActionBars(bars);
-		
-		toolBar.update(false);
-		menu.update(false);
-		bars.updateActionBars();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/TeamFile.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/TeamFile.java
deleted file mode 100644
index 30d29eb..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/TeamFile.java
+++ /dev/null
@@ -1,229 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import java.io.InputStream;
-
-import org.eclipse.compare.CompareUI;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.compare.structuremergeviewer.DiffElement;
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.ICompareInput;
-import org.eclipse.compare.structuremergeviewer.ICompareInputChangeListener;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.util.ListenerList;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-
-/**
- * A sync node for a version-controlled file, where the left
- * side is the local file, the right side is the remote file,
- * and the ancestor is the common file.
- */
-public class TeamFile extends DiffElement implements ICompareInput, ITeamNode {
-	private MergeResource mergeResource;
-	private Shell shell;
-	private ListenerList listeners;
-	private TypedBufferedContent localByteContents;
-	private TypedBufferedContent commonByteContents;
-	private TypedBufferedContent remoteByteContents;
-	
-	/**
-	 * Creates a new file node.
-	 */	
-	public TeamFile(IDiffContainer parent, MergeResource res, int changeType) {
-		super(parent, changeType);
-		Assert.isNotNull(res);
-		this.mergeResource = res;
-	
-		commonByteContents = new TypedBufferedContent(this, false) {
-			public InputStream createStream() throws CoreException {
-				return mergeResource.getBaseRevision();
-			}
-		};
-		remoteByteContents = new TypedBufferedContent(this, false) {
-			protected InputStream createStream() throws CoreException {
-				return mergeResource.getLatestRevision();
-			}
-		};
-		localByteContents = new TypedBufferedContent(this, true) {
-			protected InputStream createStream() throws CoreException {
-				return mergeResource.getLocalStream();
-			}
-			public void setContent(byte[] contents) {
-				super.setContent(contents);
-				merged();
-				fireContentChanged();
-			}
-			public ITypedElement replace(ITypedElement child, ITypedElement other) {
-				System.out.println("TeamFile.replace");
-				return null;
-			}
-		};
-	}
-
-	public void addCompareInputChangeListener(ICompareInputChangeListener l) {
-		if (listeners == null) {
-			listeners = new ListenerList();
-		}
-		listeners.add(l);
-	}
-	
-	public void copy(boolean leftToRight) {
-		if (!leftToRight) {
-			// Catchup to all on the server
-			localByteContents.setContent(remoteByteContents.getContent());
-			merged();
-		}
-	}
-	public boolean equals(Object other) {
-		if (other != null && other.getClass() == getClass()) {
-			TeamFile file = (TeamFile) other;
-			return mergeResource.equals(file.mergeResource);
-		}
-		return super.equals(other);
-	}
-
-	private void fireThreeWayInputChange() {
-		if (listeners != null) {
-			Object[] listenerArray = listeners.getListeners();
-			// Iterate backwards so that the model gets updated last
-			// it might want to remove the node completely, which might
-			// upset other listeners.
-			for (int i = listenerArray.length; --i >= 0;)
-				 ((ICompareInputChangeListener) listenerArray[i]).compareInputChanged(this);
-		}
-	}
-	
-	/*
-	 * @see ICompareInput#getAncestor
-	 */
-	public ITypedElement getAncestor() {
-		if (mergeResource.hasBaseRevision()) {
-			return commonByteContents;
-		}
-		return null;
-	}
-	
-	/*
-	 * Method declared on ITeamNode.
-	 */
-	public int getChangeDirection() {
-		return getKind() & Differencer.DIRECTION_MASK;
-	}
-	
-	/*
-	 * @see ITypedInput#getType
-	 */
-	public Image getImage() {
-		return CompareUI.getImage(getType());
-	}
-	
-	/*
-	 * @see ICompareInput#getLeft
-	 */
-	public ITypedElement getLeft() {
-		return localByteContents;
-	}
-	
-	/**
-	 * Returns the team resource managed by this object.
-	 * Guaranteed to be non-null.
-	 */
-	public MergeResource getMergeResource() {
-		return mergeResource;
-	}
-	
-	/*
-	 * @see ITypedInput#getName
-	 */
-	public String getName() {
-		return mergeResource.getName();
-	}
-
-	/**
-	 * Returns the core resource managed by this object.
-	 * Guaranteed to be non-null.
-	 */
-	public IResource getResource() {
-		return mergeResource.getResource();
-	}
-	
-	/*
-	 * @see ICompareInput#getRight
-	 */
-	public ITypedElement getRight() {
-		if (mergeResource.hasLatestRevision()) {
-			return remoteByteContents;
-		} else {
-			return null;
-		}
-	}
-	/*
-	 * @see ITypedInput#getType
-	 */
-	public String getType() {
-		return mergeResource.getExtension();
-	}
-	
-	/*
-	 * @see Object
-	 */
-	public int hashCode() {
-		return mergeResource.hashCode();
-	}
-	
-	/**
-	 * The local resource has beed modified (i.e. merged).
-	 */
-	private void merged() {
-		mergeResource.confirmMerge();
-		try {
-			saveChanges();
-			setKind(OUTGOING | (getKind() & Differencer.CHANGE_TYPE_MASK));
-			fireThreeWayInputChange();
-		} catch (CoreException e) {
-			ErrorDialog.openError(WorkbenchPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell(), Policy.bind("TeamFile.saveChanges", getName()), null, e.getStatus());
-		}
-	}
-	
-	public void removeCompareInputChangeListener(ICompareInputChangeListener listener) {
-		if (listeners != null) {
-			listeners.remove(listener);
-		}
-	}
-	
-	/**
-	 * Saves cached copy to disk and clears dirty flag.
-	 */
-	private void saveChanges() throws CoreException {
-		InputStream stream = localByteContents.getContents();
-		IFile file = (IFile) getResource();
-		if (stream != null) {
-			if (!file.exists()) {
-				file.create(stream, false, null);
-			} else {
-				file.setContents(stream, false, true, null);
-			}
-		} else {
-			file.delete(false, true, null);
-		}
-	}
-
-	/**
-	 * For debugging purposes only.
-	 */
-	public String toString() {
-		return "TeamFile(" + mergeResource.getName() + ")";
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/TypedBufferedContent.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/TypedBufferedContent.java
deleted file mode 100644
index eff61ab..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/TypedBufferedContent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.compare.BufferedContent;
-import org.eclipse.compare.IEditableContent;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A content buffer for resources on a server.
- */
-abstract class TypedBufferedContent extends BufferedContent implements ITypedElement, IEditableContent {
-	private ITeamNode node;
-	private boolean editable;
-	
-	/**
-	 * Creates a new content buffer for the given team node.
-	 */
-	TypedBufferedContent(ITeamNode node, boolean editable) {
-		this.node = node;
-		this.editable = editable;
-	}
-	
-	public Image getImage() {
-		return node.getImage();
-	}
-
-	public String getName() {
-		return node.getName();
-	}
-
-	public String getType() {
-		return node.getType();
-	}
-
-	/**
-	 * Returns true if this object can be modified.
-	 * If it returns <code>false</code> the other methods must not be called.
-	 * 
-	 * @return <code>true</code> if this object can be modified.
-	 */
-	public boolean isEditable() {
-		return editable;
-	}
-
-	/**
-	 * This is not the definitive API!
-	 * This method is called on a parent to
-	 * - add a child,
-	 * - remove a child,
-	 * - copy the contents of a child
-	 * 
-	 * What to do is encoded in the two arguments as follows:
-	 * add:	child == null		other != null
-	 * remove:	child != null		other == null
-	 * copy:	child != null		other != null
-	 */
-	public ITypedElement replace(ITypedElement child, ITypedElement other) {
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/UnchangedTeamContainer.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/UnchangedTeamContainer.java
deleted file mode 100644
index 46c85c7..0000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/UnchangedTeamContainer.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.team.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
- 
-import org.eclipse.compare.CompareUI;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.compare.ResourceNode;
-import org.eclipse.compare.structuremergeviewer.DiffNode;
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A node in a diff tree that represents a folder with no changes
- * to itself, it is only a placeholder for changes in its children.
- */
-public class UnchangedTeamContainer extends DiffNode implements ITeamNode {
-	private IResource resource;
-	
-	public UnchangedTeamContainer(IDiffContainer parent, IResource resource) {
-		this(parent, resource, Differencer.NO_CHANGE);
-	}
-	
-	public UnchangedTeamContainer(IDiffContainer parent, IResource resource, int description) {
-		super(parent, description);
-		setLeft(new ResourceNode(resource));
-		this.resource = resource;
-	}
-	
-	/*
-	 * Method declared on ITeamNode
-	 */
-	public int getChangeDirection() {
-		return ITeamNode.NO_CHANGE;
-	}
-	
-	public Image getImage() {
-		return CompareUI.getImage(getType());
-	}
-	
-	public String getName() {
-		return resource.getName();
-	}
-	
-	/**
-	 * Returns the resource underlying this diff node.
-	 */
-	public IResource getResource() {
-		return resource;
-	}
-
-	public String getType() {
-		return ITypedElement.FOLDER_TYPE;
-	}
-}
diff --git a/tests/org.eclipse.team.tests.core/about.html b/tests/org.eclipse.team.tests.core/about.html
deleted file mode 100644
index 768324e..0000000
--- a/tests/org.eclipse.team.tests.core/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>

-<head>

-<title>About</title>

-<style type="text/css">

-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}

-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}

-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}

-code { font-family: "Courier New", Courier, mono; font-size: 10pt}

-sup { font-family: arial,helvetica,geneva; font-size: 10px}

-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}

-li { font-family: arial, helvetica, geneva; font-size: 10pt}

-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}

-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect(   ); margin-top: 5mm; margin-left: 3mm}

-</style>

-</head>

-<body lang="EN-US" link="blue" vlink="purple">

-<table border="0" cellspacing="5" cellpadding="2" width="100%" >

-  <tr> 

-    <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>

-  </tr>

-  <tr> 

-    <td> 

-<p>11th December, 2001</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

-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> &quot;CPL&quot;.  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>

-</td></tr></table>

-</body>

-</html>
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/.classpath b/tests/org.eclipse.team.tests.cvs.core/.classpath
deleted file mode 100644
index fef1a18..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/.classpath
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
-    <classpathentry kind="src" path="/org.eclipse.core.resources"/>
-    <classpathentry kind="src" path="/org.eclipse.team.core"/>
-    <classpathentry kind="src" path="/org.eclipse.team.cvs.core"/>
-    <classpathentry kind="src" path="/org.junit"/>
-    <classpathentry kind="src" path="/org.eclipse.core.tests.harness"/>
-    <classpathentry kind="src" path="src"/>
-    <classpathentry kind="output" path="bin"/>
-</classpath>
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/.cvsignore b/tests/org.eclipse.team.tests.cvs.core/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/.vcm_meta b/tests/org.eclipse.team.tests.cvs.core/.vcm_meta
deleted file mode 100644
index 58210c4..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/.vcm_meta
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<project-description>

-	<comment></comment>

-	<nature id="org.eclipse.jdt.core.javanature"/>

-	<nature id="org.eclipse.team.cvs.core.cvsnature"/>

-	<reference project-name="org.eclipse.core.resources"/>

-	<reference project-name="org.eclipse.team.cvs.core"/>

-	<reference project-name="org.eclipse.core.tests.harness"/>

-	<reference project-name="org.junit"/>

-	<reference project-name="org.eclipse.team.core"/>

-	<reference project-name="org.eclipse.core.runtime"/>

-	<builder name="org.eclipse.jdt.core.javabuilder">

-	</builder>

-</project-description>

diff --git a/tests/org.eclipse.team.tests.cvs.core/about.html b/tests/org.eclipse.team.tests.cvs.core/about.html
deleted file mode 100644
index 768324e..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>

-<head>

-<title>About</title>

-<style type="text/css">

-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}

-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}

-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}

-code { font-family: "Courier New", Courier, mono; font-size: 10pt}

-sup { font-family: arial,helvetica,geneva; font-size: 10px}

-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}

-li { font-family: arial, helvetica, geneva; font-size: 10pt}

-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}

-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect(   ); margin-top: 5mm; margin-left: 3mm}

-</style>

-</head>

-<body lang="EN-US" link="blue" vlink="purple">

-<table border="0" cellspacing="5" cellpadding="2" width="100%" >

-  <tr> 

-    <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>

-  </tr>

-  <tr> 

-    <td> 

-<p>11th December, 2001</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

-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> &quot;CPL&quot;.  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>

-</td></tr></table>

-</body>

-</html>
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/plugin.xml b/tests/org.eclipse.team.tests.cvs.core/plugin.xml
deleted file mode 100644
index 4fe4568..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/plugin.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
-  name="Eclipse CVS Tests Core"
-  id="org.eclipse.team.tests.cvs.core"
-  version="1.0"
-  provider-name="Object Technology International, Inc.">
-
-  <requires>
-    <import plugin="org.eclipse.core.resources"/>
-    <import plugin="org.eclipse.team.core"/>
-    <import plugin="org.eclipse.team.cvs.core"/>
-    <import plugin="org.eclipse.core.tests.harness"/>
-    <import plugin="org.junit"/>
-  </requires>
-
-  <runtime>
-    <library name="cvstests.jar">
-      <export name="*"/>
-    </library>
-  </runtime>
-
-<!-- **************** TESTS ******************* -->
-
-  <extension point="org.eclipse.core.tests.harness.tests">
-    
-    <test id="cvs.all">
-      <run class="org.eclipse.team.tests.ccvs.core.AllTests"/>
-    </test>
-    
-    <test id="cvs.provider">
-      <run class="org.eclipse.team.tests.ccvs.core.provider.AllTests"/>
-    </test>
-    
-    <test id="cvs.compatibility">
-      <run class="org.eclipse.team.tests.ccvs.core.compatible.AllTests"/>
-    </test>
-    
-    <test id="cvs.resources">
-      <run class="org.eclipse.team.tests.ccvs.core.cvsresources.AllTests"/>
-    </test>
-    
-    <test id="cvs.sync">
-      <run class="org.eclipse.team.tests.ccvs.core.provider.SyncElementTest"/>
-    </test>
-    
-     <test id="cvs.remote">
-      <run class="org.eclipse.team.tests.ccvs.core.provider.RemoteResourceTest"/>
-    </test>
-  </extension>
- 
-</plugin>
diff --git a/tests/org.eclipse.team.tests.cvs.core/readme.txt b/tests/org.eclipse.team.tests.cvs.core/readme.txt
deleted file mode 100644
index 2ba27cc..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/readme.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-README for org.eclipse.core.team.tests.cvs.core
-
-This plug-in provides the CVS tests. It also contains the script, test.xml, 
-which launches the CVS automated tests after the a build.
-In order to run the tests, perform the following steps:
-
-1. Load the eclipse test harness plug-ins and fragments
-
-2. Load the following plug-ins:
-	org.eclipse.team.tests.cvs.core
-	
-3. Modify the repository.properties file in plug-in 
-org.eclipse.team.tests.cvs.core to contain the 
-information required to connect to your repository. 
-Your repository must allow rsh connections from your userid and machine in order for
-the tests to run.
-
-4. Run the test.xml Ant script in Eclipse
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/repository.properties b/tests/org.eclipse.team.tests.cvs.core/repository.properties
deleted file mode 100644
index 845c5ef..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/repository.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-repository=:pserver:@user@:@password@@@host@:@root@
-repository1=:pserver:@user@:@password@@@host@:@root1@
-repository2=:pserver:@user@:@password@@@host@:@root2@
-command=C:\cvs\bin\cvs
-debug=false
-standalone=false
-initrepo=false
-temp=C:\temp
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/CVSROOT/modules b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/CVSROOT/modules
deleted file mode 100644
index 1daac93..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/CVSROOT/modules
+++ /dev/null
@@ -1,65 +0,0 @@
-# Three different line formats are valid:

-#	key	-a    aliases...

-#	key [options] directory

-#	key [options] directory files...

-#

-# Where "options" are composed of:

-#	-i prog		Run "prog" on "cvs commit" from top-level of module.

-#	-o prog		Run "prog" on "cvs checkout" of module.

-#	-e prog		Run "prog" on "cvs export" of module.

-#	-t prog		Run "prog" on "cvs rtag" of module.

-#	-u prog		Run "prog" on "cvs update" of module.

-#	-d dir		Place module in directory "dir" instead of module name.

-#	-l		Top-level directory only -- do not recurse.

-#

-# NOTE:  If you change any of the "Run" options above, you'll have to

-# release and re-checkout any working directories of these modules.

-#

-# And "directory" is a path to a directory relative to $CVSROOT.

-#

-# The "-a" option specifies an alias.  An alias is interpreted as if

-# everything on the right of the "-a" had been typed on the command line.

-#

-# You can encode a module within a module by using the special '&'

-# character to interpose another module into the current module.  This

-# can be useful for creating a module that consists of many directories

-# spread out over the entire source repository.

-

-# Block access to CVS hogs

-#world		-a denied___checkout_of_world_takes_too_long

-#.		-a denied___checkout_of_world_takes_too_long

-

-# self referencing modules

-project1 project1

-

-# checkout docs in flattened structure

-docs		-d docs common/docs

-macros common/macros

-

-# include docs with project

-project2		project2 &docs

-# only project2

-project2-only project2

-

-# a use of alias

-project3-src  project3/src

-project3-src_file -a project3-src/file.c project3-src/file.h

-project3-sub  project3/sub &project3-src_file

-

-# embeddings

-project4 project4 &macros

-project5-project4 -d extensions/project4 project4

-project5 project5 &project5-project4 &macros

-

-# using -d to build a project from other projects

-project6-dirA -d dirA project6/A

-project6-dirB -d dirB project6/B

-project6 &project6-dirA &project6-dirB

-

-# using aliases to provide packaging

-project7-common -a project7/common

-project7-pc -a project7-common project7/pc

-project7-linux -a project7-common project7/linux

-

-# simple use of module alias

-project8-alias -a project8 common
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/docs/readme.html b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/docs/readme.html
deleted file mode 100644
index 5b1b16d..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/docs/readme.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<html>

-</html>
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/macros/macro1 b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/macros/macro1
deleted file mode 100644
index c88e4d6..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/macros/macro1
+++ /dev/null
@@ -1 +0,0 @@
-This is a macro
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project1/f1/file-in-p1.txt b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project1/f1/file-in-p1.txt
deleted file mode 100644
index 5ba54a8..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project1/f1/file-in-p1.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is a file in project1
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project2/file-p2.txt b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project2/file-p2.txt
deleted file mode 100644
index 547cc5e..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project2/file-p2.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is a file in project 2
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.c b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.c
deleted file mode 100644
index a3f314b..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.c
+++ /dev/null
@@ -1 +0,0 @@
-This is a c file
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.h b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.h
deleted file mode 100644
index d45f90e..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.h
+++ /dev/null
@@ -1 +0,0 @@
-This is an h file
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/sub/file-sub.txt b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/sub/file-sub.txt
deleted file mode 100644
index d45364e..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/sub/file-sub.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is a file in project3/sub
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/common/common.txt b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/common/common.txt
deleted file mode 100644
index 1275067..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/common/common.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is a common file
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/linux/linux.txt b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/linux/linux.txt
deleted file mode 100644
index c7078a3..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/linux/linux.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is a linux file
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/pc/pc.txt b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/pc/pc.txt
deleted file mode 100644
index 4bf706a..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/pc/pc.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is a pc file
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project8/file-p8.txt b/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project8/file-p8.txt
deleted file mode 100644
index e9257eb..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project8/file-p8.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is a file in project8
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTests.java
deleted file mode 100644
index f16c272..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.eclipse.team.tests.ccvs.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllTests extends EclipseTest {
-
-	/**
-	 * Constructor for CVSClientTest.
-	 */
-	public AllTests() {
-		super();
-	}
-
-	/**
-	 * Constructor for CVSClientTest.
-	 * @param name
-	 */
-	public AllTests(String name) {
-		super(name);
-	}
-
-	/*
-	 * ORDER IS IMPORTANT: Run compatibility and resource tests before any other!!!
-	 */
-	public static Test suite() {
-		TestSuite suite = new TestSuite();
-		suite.addTest(org.eclipse.team.tests.ccvs.core.compatible.AllTests.suite());
-		suite.addTest(org.eclipse.team.tests.ccvs.core.cvsresources.AllTests.suite());
-		suite.addTest(org.eclipse.team.tests.ccvs.core.provider.AllTests.suite());
-		return new CVSTestSetup(suite);
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSTestSetup.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSTestSetup.java
deleted file mode 100644
index 3875762..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSTestSetup.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package org.eclipse.team.tests.ccvs.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-import junit.extensions.TestSetup;
-import junit.framework.Test;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-
-public class CVSTestSetup extends TestSetup {
-
-	public static String REPOSITORY_LOCATION;
-	static boolean INITIALIZE_REPO;
-	public static final boolean DEBUG;
-
-	
-	public static CVSRepositoryLocation repository;
-	
-	// Static initializer for constants
-	static {
-		String propertiesFile = System.getProperty("eclipse.cvs.properties");
-		if (propertiesFile != null)
-			try {
-				readRepositoryProperties(propertiesFile);
-			} catch (IOException e) {
-				System.out.println("Could not read repository properties file: " + propertiesFile);
-			}
-		REPOSITORY_LOCATION = System.getProperty("eclipse.cvs.repository");
-		INITIALIZE_REPO = (System.getProperty("eclipse.cvs.initrepo")==null)?false:(new Boolean(System.getProperty("eclipse.cvs.initrepo")).booleanValue());
-		DEBUG= (System.getProperty("eclipse.cvs.debug")==null)?false:(new Boolean(System.getProperty("eclipse.cvs.debug")).booleanValue());
-	}
-	/**
-	 * Constructor for CVSTestSetup.
-	 */
-	public CVSTestSetup(Test test) {
-		super(test);
-	}
-
-	/*
-	 * Use rsh to delete any contents of the repository and initialize it again
-	 */
-	private static void initializeRepository(CVSRepositoryLocation repository) {
-		String repositoryHost = repository.getHost();
-		String userName = repository.getUsername();
-		String repoRoot = repository.getRootDirectory();
-		String cmd1 = new String("rsh " + repositoryHost + " -l " + userName + " rm -rf " + repoRoot);
-		String cmd2 = new String("rsh " + repositoryHost + " -l " + userName + " cvs -d " + repoRoot + " init");
-		try {
-			Process p = Runtime.getRuntime().exec(cmd1);
-			p.waitFor();
-			p = Runtime.getRuntime().exec(cmd2);
-		} catch (IOException e) {
-			System.out.println("Unable to initialize remote repository: " + repository.getLocation());
-		} catch (InterruptedException e) {
-			System.out.println("Unable to initialize remote repository: " + repository.getLocation());
-		}
-	}
-	
-	static void readRepositoryProperties(String filename) throws IOException {
-		File file = new File(filename);
-		if (file.isDirectory())
-			file = new File(file, "repository.properties");
-		BufferedReader reader = new BufferedReader(new FileReader(file));
-		String line;
-		while ((line = reader.readLine()) != null) {
-			int sep = line.indexOf("=");
-			String property = line.substring(0, sep).trim();
-			String value = line.substring(sep + 1).trim();
-			System.setProperty("eclipse.cvs." + property, value);
-		}
-		
-	}
-	public void setUp() throws CVSException {
-		if (repository == null)
-			repository = setupRepository(REPOSITORY_LOCATION);
-		if (!DEBUG)
-			CVSProviderPlugin.getProvider().setPrintStream(new PrintStream(new NullOutputStream()));
-	}
-
-	protected CVSRepositoryLocation setupRepository(String location) throws CVSException {
-
-		// Give some info about which repository the tests are running against
-		System.out.println("Connecting to: " + location);
-		
-		// Validate that we can connect
-		CVSRepositoryLocation repository = CVSRepositoryLocation.fromString(location);
-		try {
-			repository.validateConnection(new NullProgressMonitor());
-		} catch (CVSException e) {
-			System.out.println("Unable to connect to remote repository: " + repository.getLocation());
-			throw e;
-		}
-		
-		// Initialize the repo if requested (requires rsh access)
-		if( INITIALIZE_REPO ) {
-			initializeRepository(repository);
-		}
-		
-		return repository;
-	}
-	
-	public void tearDown() throws CVSException {
-		// Nothing to do here
-	}
-
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseTest.java
deleted file mode 100644
index b891115..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseTest.java
+++ /dev/null
@@ -1,548 +0,0 @@
-package org.eclipse.team.tests.ccvs.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.tests.harness.EclipseWorkspaceTest;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSStatus;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.TeamPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSProvider;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Import;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.client.Update;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.connection.CVSServerException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;
-import org.eclipse.team.internal.ccvs.core.resources.LocalResource;
-import org.eclipse.team.internal.ccvs.core.resources.RemoteFile;
-import org.eclipse.team.internal.ccvs.core.resources.RemoteFolder;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-
-public class EclipseTest extends EclipseWorkspaceTest {
-
-	protected static IProgressMonitor DEFAULT_MONITOR = new NullProgressMonitor();
-	protected static final int RANDOM_CONTENT_SIZE = 3876;
-				
-	/**
-	 * Constructor for CVSBlackBoxTest.
-	 */
-	public EclipseTest() {
-		super();
-	}
-	public EclipseTest(String name) {
-		super(name);
-	}
-
-	/*
-	 * Get the resources for the given resource names
-	 */
-	public IResource[] getResources(IContainer container, String[] hierarchy) throws CoreException {
-		IResource[] resources = new IResource[hierarchy.length];
-		for (int i=0;i<resources.length;i++) {
-			resources[i] = container.findMember(hierarchy[i]);
-			if (resources[i] == null) {
-				resources[i] = buildResources(container, new String[] {hierarchy[i]})[0];
-			}
-		}
-		return resources;
-	}
-	
-	/**
-	 * Add the resources to an existing container and upload them to CVS
-	 */
-	public IResource[] addResources(IContainer container, String[] hierarchy, boolean checkin) throws CoreException, TeamException {
-		IResource[] newResources = buildResources(container, hierarchy, false);
-		getProvider(container).add(newResources, IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-		if (checkin)
-			getProvider(container).checkin(newResources, IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-		return newResources;
-	}
-	
-	public void appendText(IResource resource, String text, boolean prepend) throws CoreException, IOException {
-		IFile file = (IFile)resource;
-		InputStream in = file.getContents();
-		ByteArrayOutputStream bos = new ByteArrayOutputStream();
-		try {	
-			if (prepend) {
-				bos.write(text.getBytes());
-			}
-			int i;
-			while ((i = in.read()) != -1) {
-				bos.write(i);
-			}
-			if (!prepend) {
-				bos.write(text.getBytes());
-			}
-		} finally {
-			in.close();
-		}
-		file.setContents(new ByteArrayInputStream(bos.toByteArray()), false, false, DEFAULT_MONITOR);
-	}
-	
-	/**
-	 * Delete the resources from an existing container and the changes to CVS
-	 */
-	public IResource[] changeResources(IContainer container, String[] hierarchy, boolean checkin) throws CoreException, TeamException {
-		List changedResources = new ArrayList(hierarchy.length);
-		for (int i=0;i<hierarchy.length;i++) {
-			IResource resource = container.findMember(hierarchy[i]);
-			if (resource.getType() == IResource.FILE) {
-				changedResources.add(resource);
-				((IFile)resource).setContents(getRandomContents(), false, false, null);
-			}
-		}
-		IResource[] resources = (IResource[])changedResources.toArray(new IResource[changedResources.size()]);
-		if (checkin)
-			getProvider(container).checkin(resources, IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-		return resources;
-	}
-	
-	/**
-	 * Delete the resources from an existing container and the changes to CVS
-	 */
-	public IResource[] deleteResources(IContainer container, String[] hierarchy, boolean checkin) throws CoreException, TeamException {
-		IResource[] resources = getResources(container, hierarchy);
-		getProvider(container).delete(resources, DEFAULT_MONITOR);
-		if (checkin)
-			getProvider(container).checkin(resources, IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-		return resources;
-	}
-	
-	/**
-	 * Unmanage the resources
-	 */
-	public void unmanageResources(IContainer container, String[] hierarchy) throws CoreException, TeamException {
-		IResource[] resources = getResources(container, hierarchy);
-		for (int i=0;i<resources.length;i++) {
-			Session.getManagedResource(resources[i]).unmanage();
-		}
-		CVSProviderPlugin.getSynchronizer().save(container.getLocation().toFile(), DEFAULT_MONITOR);
-	}
-	
-	/**
-	 * Update the resources from an existing container with the changes from the CVS repository
-	 */
-	public IResource[] updateResources(IContainer container, String[] hierarchy, boolean ignoreLocalChanges) throws CoreException, TeamException {
-		IResource[] resources = getResources(container, hierarchy);
-		LocalOption[] options = Command.NO_LOCAL_OPTIONS;
-		if(ignoreLocalChanges) {
-			options = new LocalOption[] {Update.IGNORE_LOCAL_CHANGES};
-		}	
-		getProvider(container).update(resources, options, null, null, DEFAULT_MONITOR);
-		return resources;
-	}
-	
-	public void updateProject(IProject project, CVSTag tag, boolean ignoreLocalChanges) throws TeamException {
-		LocalOption[] options = Command.NO_LOCAL_OPTIONS;
-		if(ignoreLocalChanges) {
-			options = new LocalOption[] {Update.IGNORE_LOCAL_CHANGES};
-		}
-		getProvider(project).update(new IResource[] {project}, options, tag, null, DEFAULT_MONITOR);
-	}
-	
-	public void commitProject(IProject project) throws TeamException {
-		getProvider(project).checkin(new IResource[] {project}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-	}
-	
-	/**
-	 * Commit the resources from an existing container to the CVS repository
-	 */
-	public IResource[] commitResources(IContainer container, String[] hierarchy) throws CoreException, TeamException {
-		IResource[] resources = getResources(container, hierarchy);
-		getProvider(container).checkin(resources, IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-		return resources;
-	}
-	
-	/**
-	 * Return a collection of resources defined by hierarchy. The resources
-	 * are added to the workspace and to the file system. If the manage flag is true, the
-	 * resources are auto-managed, if false, they are left un-managed.
-	 */
-	public IResource[] buildResources(IContainer container, String[] hierarchy, boolean includeContainer) throws CoreException {
-		List resources = new ArrayList(hierarchy.length + 1);
-		resources.addAll(Arrays.asList(buildResources(container, hierarchy)));
-		if (includeContainer)
-			resources.add(container);
-		IResource[] result = (IResource[]) resources.toArray(new IResource[resources.size()]);
-		ensureExistsInWorkspace(result, true);
-		for (int i = 0; i < result.length; i++) {
-			if (result[i].getType() == IResource.FILE)
-				// 3786 bytes is the average size of Eclipse Java files!
-				 ((IFile) result[i]).setContents(getRandomContents(RANDOM_CONTENT_SIZE), true, false, null);
-		}
-		return result;
-	}
-
-	public void checkinResources(IContainer container, boolean deep) throws TeamException {
-		getProvider(container).checkin(new IResource[] {container}, deep?IResource.DEPTH_INFINITE:IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-	}
-	/*
-	 * Checkout a copy of the project into a project with the given postfix
-	 */
-	 protected IProject checkoutCopy(IProject project, String postfix) throws TeamException {
-	 	// Get the provider and remote module so we can get the proper path for the module
-		CVSTeamProvider provider = getProvider(project);
-		
-		// Check the project out under a different name and validate that the results are the same
-		IProject copy = getWorkspace().getRoot().getProject(project.getName() + postfix);
-		CVSProviderPlugin.getProvider().checkout(getRepository(), copy, ((ICVSFolder)Session.getManagedResource(project)).getFolderSyncInfo().getRepository(), null, DEFAULT_MONITOR);
-		return copy;
-	 }
-	 
-	 protected IProject checkoutCopy(IProject project, CVSTag tag) throws TeamException {
-	 	// Get the provider and remote module so we can get the proper path for the module
-		CVSTeamProvider provider = getProvider(project);
-		
-		// Check the project out under a different name and validate that the results are the same
-		IProject copy = getWorkspace().getRoot().getProject(project.getName() + tag.getName());
-		CVSProviderPlugin.getProvider().checkout(getRepository(), copy, ((ICVSFolder)Session.getManagedResource(project)).getFolderSyncInfo().getRepository(), tag, DEFAULT_MONITOR);
-		return copy;
-	 }
-	 
-	 
-	 protected IProject checkoutProject(IProject project, String moduleName, CVSTag tag) throws TeamException {
-	 	if (project == null)
-	 		project = getWorkspace().getRoot().getProject(moduleName);
-		CVSProviderPlugin.getProvider().checkout(getRepository(), project, moduleName, tag, DEFAULT_MONITOR);
-		return project;
-	 }
-	/*
-	 * This method creates a project with the given resources, imports
-	 * it to CVS and checks it out
-	 */
-	protected IProject createProject(String prefix, String[] resources) throws CoreException, TeamException {
-		IProject project = getUniqueTestProject(prefix);
-		IResource[] result = buildResources(project, resources, true);
-		shareProject(project);
-		assertValidCheckout(project);
-		return project;
-	}
-	
-	/*
-	 * Compare two projects by comparing thier providers
-	 */
-	protected void assertEquals(IProject project1, IProject project2) throws CoreException, TeamException, IOException {
-		assertEquals(project1, project2, false, false);
-	}
-	protected void assertEquals(String message, IProject project1, IProject project2) throws CoreException, TeamException, IOException {
-		assertEquals(project1, project2, false, false);
-	}
-	
-	protected void assertEquals(IProject project1, IProject project2, boolean includeTimestamps, boolean includeTags) throws CoreException, TeamException, IOException {
-		assertEquals(getProvider(project1), getProvider(project2), includeTimestamps, includeTags);
-	}
-	
-	/*
-	 * Compare CVS team providers by comparing the cvs resource corresponding to the provider's project
-	 */
-	protected void assertEquals(CVSTeamProvider provider1, CVSTeamProvider provider2, boolean includeTimestamps, boolean includeTags) throws CoreException, TeamException, IOException {
-		assertEquals(Path.EMPTY, (ICVSFolder)Session.getManagedFolder(provider1.getProject().getLocation().toFile()), (ICVSFolder)Session.getManagedFolder(provider2.getProject().getLocation().toFile()), includeTimestamps, includeTags);
-	}
-	
-	/*
-	 * Compare resources by casting them to their prpoer type
-	 */
-	protected void assertEquals(IPath parent, ICVSResource resource1, ICVSResource resource2, boolean includeTimestamps, boolean includeTags) throws CoreException, CVSException, IOException {
-		assertEquals("Resource types do not match for " + parent.append(resource1.getName()), resource1.isFolder(), resource2.isFolder());
-		if (!resource1.isFolder())
-			assertEquals(parent, (ICVSFile)resource1, (ICVSFile)resource2, includeTimestamps, includeTags);
-		else 
-			assertEquals(parent, (ICVSFolder)resource1, (ICVSFolder)resource2, includeTimestamps, includeTags);
-	}
-	
-	/*
-	 * Compare folders by comparing their folder sync info and there children
-	 * 
-	 * XXX What about unmanaged children?
-	 */
-	protected void assertEquals(IPath parent, ICVSFolder container1, ICVSFolder container2, boolean includeTimestamps, boolean includeTags) throws CoreException, CVSException, IOException {
-		IPath path = parent.append(container1.getName());
-		assertEquals(path, container1.getFolderSyncInfo(), container2.getFolderSyncInfo(), includeTags);
-		assertTrue("The numder of folders in " + path.toString() + " differs", container1.getFolders().length == container2.getFolders().length);
-		assertTrue("The numder of files in " + path.toString() + " differs", container1.getFiles().length == container2.getFiles().length);
-		ICVSFolder[] folders = container1.getFolders();
-		for (int i= 0;i <folders.length;i++)
-			assertEquals(path, folders[i], container2.getFolder(folders[i].getName()), includeTimestamps, includeTags);
-		ICVSFile[] files = container1.getFiles();
-		for (int i= 0;i <files.length;i++)
-			assertEquals(path, files[i], container2.getFile(files[i].getName()), includeTimestamps, includeTags);
-	}
-	
-	/*
-	 * Compare the files contents and sync information
-	 */
-	protected void assertEquals(IPath parent, ICVSFile file1, ICVSFile file2, boolean includeTimestamps, boolean includeTags) throws CoreException, CVSException, IOException {
-		// Getting the contents first is important as it will fetch the proper sync info if one of the files is a remote handle
-		assertTrue("Contents of " + parent.append(file1.getName()) + " do not match", compareContent(getContents(file1), getContents(file2)));
-		assertEquals(parent.append(file1.getName()), file1.getSyncInfo(), file2.getSyncInfo(), includeTimestamps, includeTags);
-	}
-	
-	/*
-	 * Compare sync info by comparing the entry line generated by the sync info
-	 */
-	protected void assertEquals(IPath path, ResourceSyncInfo info1, ResourceSyncInfo info2, boolean includeTimestamp, boolean includeTag) throws CoreException, CVSException, IOException {
-		if (info1 == null) {
-			assertTrue("Resource Sync info differs for " + path.toString(), info2 == null);
-			return;
-		}
-		String line1 = info1.getEntryLine(includeTimestamp);
-		String line2 = info2.getEntryLine(includeTimestamp);
-		if (!includeTag) {
-			// Strip everything past the last slash
-			line1 = line1.substring(0, line1.lastIndexOf('/'));
-			line2 = line2.substring(0, line2.lastIndexOf('/'));
-		}
-		assertTrue("Resource Sync info differs for " + path.toString(), line1.equals(line2));
-	}
-	
-	/*
-	 * Use the equals of folder sync info unless the tag is not included in which case we just
-	 * compare the root and repository
-	 */
-	protected void assertEquals(IPath path, FolderSyncInfo info1, FolderSyncInfo info2, boolean includeTag) throws CoreException, CVSException, IOException {
-		if (includeTag) {
-			assertTrue("Folder sync info differs for " + path.toString(), info1.equals(info2));
-		} else {
-			assertTrue("Repository Root differs for " + path.toString(), info1.getRoot().equals(info2.getRoot()));
-			assertTrue("Repository relative path differs for " + path.toString(), info1.getRepository().equals(info2.getRepository()));
-		}
-	}
-	
-	
-	/*
-	 * Compare folders by comparing their folder sync info and there children
-	 * 
-	 * XXX What about unmanaged children?
-	 */
-	protected void assertEquals(IPath parent, RemoteFolder container1, RemoteFolder container2, boolean includeTags) throws CoreException, TeamException, IOException {
-		IPath path = parent.append(container1.getName());
-		assertEquals(path, container1.getFolderSyncInfo(), container2.getFolderSyncInfo(), includeTags);
-		ICVSRemoteResource[] members1 = container1.getMembers(DEFAULT_MONITOR);
-		ICVSRemoteResource[] members2 = container2.getMembers(DEFAULT_MONITOR);
-		assertTrue("Number of members differ for " + path, members1.length == members2.length);
-		Map memberMap2 = new HashMap();
-		for (int i= 0;i <members2.length;i++) {
-			memberMap2.put(members2[i].getName(), members2[i]);
-		}
-		for (int i= 0;i <members1.length;i++) {
-			ICVSRemoteResource member2 = (ICVSRemoteResource)memberMap2.get(members1[i].getName());
-			assertNotNull("Resource does not exist: " + path.append(members1[i].getName()) + member2);
-			assertEquals(path, members1[i], member2, includeTags);
-		}
-	}
-	protected void assertEquals(IPath parent, ICVSRemoteResource resource1, ICVSRemoteResource resource2, boolean includeTags) throws CoreException, TeamException, IOException {
-		assertEquals("Resource types do not match for " + parent.append(resource1.getName()), resource1.isContainer(), resource2.isContainer());
-		if (resource1.isContainer())
-			assertEquals(parent, (RemoteFolder)resource1, (RemoteFolder)resource2, includeTags);
-		else 
-			assertEquals(parent, (ICVSFile)resource1, (ICVSFile)resource2, false, includeTags);
-	}
-	
-	
-	/*
-	 * Compare the local project with the remote state by checking out a copy of the project.
-	 */
-	protected void assertLocalStateEqualsRemote(IProject project) throws TeamException, CoreException, IOException {
-		assertEquals(getProvider(project), getProvider(checkoutCopy(project, "-remote")), false, true);
-	}
-	
-	/*
-	 * Compare the local project with the remote state indicated by the given tag by checking out a copy of the project.
-	 */
-	protected void assertLocalStateEqualsRemote(String message, IProject project, CVSTag tag) throws TeamException, CoreException, IOException {
-		assertEquals(getProvider(project), getProvider(checkoutCopy(project, tag)), true, false);
-	}
-	
-	protected void assertHasNoRemote(String prefix, IResource[] resources) throws TeamException {
-		for (int i=0;i<resources.length;i++) 
-			assertHasNoRemote(prefix, resources[i]);
-	}
-	
-	protected void assertHasNoRemote(String prefix, IResource resource) throws TeamException {
-		assertTrue(prefix + " resource should not have a remote", !getProvider(resource).hasRemote(resource));
-	}
-	
-	protected void assertHasRemote(String prefix, IResource[] resources) throws TeamException {
-		for (int i=0;i<resources.length;i++) 
-			assertHasRemote(prefix, resources[i]);
-	}
-	
-	protected void assertHasRemote(String prefix, IResource resource) throws TeamException {
-		assertTrue(prefix + " resource should have a remote", getProvider(resource).hasRemote(resource));
-	}
-	
-	protected void assertIsModified(String prefix, IResource[] resources) throws TeamException {
-		for (int i=0;i<resources.length;i++) 
-			assertIsModified(prefix, resources[i]);
-	}
-	
-	protected void assertIsModified(String prefix, IResource resource) throws TeamException {
-		// Only check for files as CVS doesn't dirty folders
-		if (resource.getType() == IResource.FILE)
-			assertTrue(prefix + " resource " + resource.getFullPath() + " should be dirty.", ((ICVSFile)getCVSResource(resource)).isModified());
-	}
-	
-	protected void assertNotModified(String prefix, IResource[] resources) throws TeamException {
-		for (int i=0;i<resources.length;i++) 
-			assertNotModified(prefix, resources[i]);
-	}
-	
-	protected void assertNotModified(String prefix, IResource resource) throws TeamException {
-		assertTrue(prefix + " resource should be dirty", !((ICVSFile)getCVSResource(resource)).isModified());
-	}
-	
-	protected void assertValidCheckout(IProject project) {
-		// NOTE: Add code to ensure that the project was checkout out properly
-		CVSTeamProvider provider = (CVSTeamProvider)TeamPlugin.getManager().getProvider(project);
-		assertNotNull(provider);
-	}
-	protected InputStream getContents(ICVSFile file) throws CVSException, IOException {
-		if (file instanceof LocalFile)
-			return new BufferedInputStream(new FileInputStream(getFile(file)));
-		else
-			return ((RemoteFile)file).getContents(DEFAULT_MONITOR);
-	}
-	
-	/*
-	 * Get the CVS Resource for the given resource
-	 */
-	protected ICVSResource getCVSResource(IResource resource) throws CVSException {
-		if (resource.getType() == IResource.FILE)
-			return Session.getManagedFile(resource.getLocation().toFile());
-		else
-			return Session.getManagedFolder(resource.getLocation().toFile());
-	}
-	/*
-	 * Get the IO File for the given CVS resource
-	 */
-	protected File getFile(ICVSResource mResource) {
-		return new File(((LocalResource)mResource).getPath());
-	}
-	
-	protected IProject getNamedTestProject(String name) throws CoreException {
-		IProject target = getWorkspace().getRoot().getProject(name);
-		if (!target.exists()) {
-			target.create(null);
-			target.open(null);		
-		}
-		assertExistsInFileSystem(target);
-		return target;
-	}
-	protected CVSTeamProvider getProvider(IResource resource) throws TeamException {
-		return (CVSTeamProvider)TeamPlugin.getManager().getProvider(resource);
-	}
-	protected static InputStream getRandomContents(int sizeAtLeast) {
-		StringBuffer randomStuff = new StringBuffer(sizeAtLeast + 100);
-		while (randomStuff.length() < sizeAtLeast) {
-			randomStuff.append(getRandomSnippet());
-		}
-		return new ByteArrayInputStream(randomStuff.toString().getBytes());
-	}
-	/**
-	 * Return String with some random text to use
-	 * as contents for a file resource.
-	 */
-	public static String getRandomSnippet() {
-		switch ((int) Math.round(Math.random() * 10)) {
-			case 0 :
-				return "este e' o meu conteudo (portuguese)";
-			case 1 :
-				return "Dann brauchen wir aber auch einen deutschen Satz!";
-			case 2 :
-				return "I'll be back";
-			case 3 :
-				return "don't worry, be happy";
-			case 4 :
-				return "there is no imagination for more sentences";
-			case 5 :
-				return "customize yours";
-			case 6 :
-				return "foo";
-			case 7 :
-				return "bar";
-			case 8 :
-				return "foobar";
-			case 9 :
-				return "case 9";
-			default :
-				return "these are my contents";
-		}
-	}
-	protected IProject getUniqueTestProject(String prefix) throws CoreException {
-		// manage and share with the default stream create by this class
-		return getNamedTestProject(prefix + "-" + Long.toString(System.currentTimeMillis()));
-	}
-	
-	protected CVSRepositoryLocation getRepository() {
-		return CVSTestSetup.repository;
-	}
-	protected void importProject(IProject project) throws TeamException {
-		
-		// Create the root folder for the import operation
-		ICVSFolder root = (ICVSFolder)Session.getManagedResource(project);
-
-		// Perform the import
-		IStatus status;
-		Session s = new Session(getRepository(), root);
-		s.open(DEFAULT_MONITOR);
-		try {
-			status = Command.IMPORT.execute(s,
-				Command.NO_GLOBAL_OPTIONS,
-				new LocalOption[] {Import.makeArgumentOption(Command.MESSAGE_OPTION, "Initial Import")},
-				new String[] { project.getName(), getRepository().getUsername(), "start" },
-				null,
-				DEFAULT_MONITOR);
-		} finally {
-			s.close();
-		}
-
-		if (status.getCode() == CVSStatus.SERVER_ERROR) {
-			throw new CVSServerException(status);
-		}
-	}
-	
-	protected void shareProject(IProject project) throws TeamException {
-		importProject(project);
-		((CVSProvider)CVSProviderPlugin.getProvider()).checkout(getRepository(), project, null, null, DEFAULT_MONITOR);
-		// We need to checking because of the .vcm_meta file
-		getProvider(project).add(new IResource[] {project.getFile(".vcm_meta")}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-		getProvider(project).checkin(new IResource[] {project}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/JUnitTestCase.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/JUnitTestCase.java
deleted file mode 100644
index 070cb0d..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/JUnitTestCase.java
+++ /dev/null
@@ -1,499 +0,0 @@
-package org.eclipse.team.tests.ccvs.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import junit.awtui.TestRunner;
-import junit.framework.TestCase;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSStatus;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.client.Command.GlobalOption;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.connection.CVSServerException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.LocalResource;
-import org.eclipse.team.internal.ccvs.core.util.FileUtil;
-import org.eclipse.team.internal.ccvs.core.util.Util;
-
-/**
- * Base-class to the low level-testcases for the Session.
- * Supplies convinience-methods and default attributes for the testcases.
- * Especally data for a default-connection to the server is stored.
- */
-public abstract class JUnitTestCase extends TestCase {
-	
-	protected static final int RANDOM_CONTENT_SIZE = 10000;
-	protected static final boolean NEWLINE_TEST = false;
-	protected static final String PLATFORM_NEWLINE = System.getProperty("line.separator");
-	protected static final File workspaceRoot = ResourcesPlugin.getWorkspace().getRoot().getLocation().toFile();
-	
-	public static final String[] EMPTY_ARGS = new String[0];
-	
-	// Predefined parameters for calles of the client
-	protected final String[] globalOptions;
-	protected final IProgressMonitor monitor;
-	protected final String[] arguments;
-	protected static final String REPOSITORY_NAME = CVSTestSetup.REPOSITORY_LOCATION;
-
-	static boolean propertiesSet = false;
-
-	private static final HashMap commandPool = new HashMap();
-	static {
-		commandPool.put("update", Command.UPDATE);
-		commandPool.put("co", Command.CHECKOUT);
-		commandPool.put("ci", Command.COMMIT);
-		commandPool.put("import", Command.IMPORT);
-		commandPool.put("add", Command.ADD);
-		commandPool.put("remove", Command.REMOVE);
-		commandPool.put("status", Command.STATUS);
-		commandPool.put("log", Command.LOG);
-		commandPool.put("tag", Command.TAG);
-		commandPool.put("rtag", Command.RTAG);
-		commandPool.put("admin", Command.ADMIN);
-		commandPool.put("diff", Command.DIFF);
-	}
-	
-	/**
-	 * Convinience method for:<br>
-	 * Session.execute(request,globalOptions,localOptions,arguments,Session.getManagedFolder(root),monitor,messageOut)
-	 */	
-	public static void execute(String request, 
-						String[] globalOptions, 
-						String[] localOptions, 
-						String[] arguments,
-						File root,
-						IProgressMonitor monitor, 
-						PrintStream messageOut) 
-						throws CVSException {
-		if (!CVSTestSetup.DEBUG)
-			messageOut = new PrintStream(new NullOutputStream());
-		
-		List globals = new ArrayList();
-		for (int i=0;i<globalOptions.length;i++) {
-			if (globalOptions[i].equals("-d")) {
-				i++;
-				continue;
-			}
-			globals.add(new CustomGlobalOption(globalOptions[i]));
-		}
-		List locals = new ArrayList();
-		for (int i=0;i<localOptions.length;i++) {
-			if ((i < localOptions.length - 1) && (localOptions[i + 1].charAt(0) != '-')) {
-				locals.add(new CustomLocalOption(localOptions[i], localOptions[i + 1]));
-				i++;
-			} else {
-				locals.add(new CustomLocalOption(localOptions[i], null));
-			}
-		}
-		Session s = new Session(getRepository(globalOptions, Session.getManagedFolder(root)), Session.getManagedFolder(root));
-		s.open(monitor);
-		try {
-			IStatus status = ((Command)commandPool.get(request)).execute(s,
-				(GlobalOption[]) globals.toArray(new GlobalOption[globals.size()]),
-				(LocalOption[]) locals.toArray(new LocalOption[locals.size()]),
-				arguments,
-				null,
-				monitor);
-			if (status.getCode() == CVSStatus.SERVER_ERROR) {
-				throw new CVSServerException(status);
-			}
-		} finally {
-			s.close();
-		}
-	}
-	
-	public static class CustomGlobalOption extends GlobalOption {
-		public CustomGlobalOption(String option) {
-			super(option);
-		}
-	}
-	public static class CustomLocalOption extends LocalOption {
-		public CustomLocalOption(String option, String arg) {
-			super(option, arg);
-		}
-	}
-	/**
-	 * This give you a new repo either from the global "-d" option
-	 * or form the root-property in the folder.
-	 * 
-	 * This has to be rewritten in a nicer style.
-	 */
-	private static CVSRepositoryLocation getRepository(String[] globalOptions, 
-										ICVSFolder mFolder) 
-										throws CVSException {
-		
-		String repoName = null;
-		
-		// look if the repo is specified in the global Options
-		// this delets the option as well which is not so beatyful, but
-		// we have got a copy and we do not want this option to appear
-		// any more
-		repoName = Util.getOption(globalOptions, "-d", true);
-		
-		// look if we have got an root-entrie in the root-folder
-		if (repoName == null && mFolder.exists() && mFolder.isCVSFolder()) {
-			repoName = mFolder.getFolderSyncInfo().getRoot();
-		}
-		
-		if (repoName == null) {
-			throw new CVSException("CVSROOT is not specified");
-		}
-		
-		return CVSRepositoryLocation.fromString(repoName);
-	}
-	
-	/**
-	 * Get a File relative to the working directory.
-	 */
-	protected static File getFile(String relativePath) {
-		// We need to get the cononical file in case relativePath contains a dot indicating the root directory
-		try {
-			return new File(workspaceRoot, relativePath).getCanonicalFile();
-		} catch (IOException e) {
-			fail(e.getMessage());
-			return null;
-		}
-	}
-	
-	/**
-	 * Get the IO File for the given CVS resource
-	 */
-	protected static File getFile(ICVSResource mResource) {
-		return new File(((LocalResource)mResource).getPath());
-	}
-	
-	/**
-	 * Get a CVSFolder relative to the working directory.
-	 */
-	protected static ICVSFolder getManagedFolder(String relativePath) {
-		try {
-			return Session.getManagedFolder(getFile(relativePath));
-		} catch (CVSException e) {
-			fail(e.getMessage());
-			return null;
-		}
-	}
-	
-	/**
-	 * Init the options and arguments to standard-values
-	 */
-	public JUnitTestCase(String name) {
-		super(name);
-		
-		monitor = new NullProgressMonitor();
-		globalOptions = new String[]{"-d",REPOSITORY_NAME};
-		arguments = new String[]{"proj1"};
-	}
-
-	/**
-	 * Delete a project/resource form the standard cvs-server
-	 */
-	protected void magicDeleteProject(String project) throws CVSException {
-		CVSRepositoryLocation location = CVSRepositoryLocation.fromString(REPOSITORY_NAME);
-		String host = location.getHost();
-		String repoRoot = location.getRootDirectory();
-		magicDeleteProject(host, repoRoot, project);
-	}
-
-	/**
-	 * Delete a project/resource form the standard cvs-server
-	 */
-	protected static void magicDeleteProject(String host, String repoRoot, String project) throws CVSException {
-		
-		String commandLine;
-		Process process;
-		
-		commandLine = new String("rsh " + host + " rm -rf " + repoRoot + "/" + project);
-
-		try {
-			process = Runtime.getRuntime().exec(commandLine);
-			process.waitFor();
-			
-			if (process.exitValue() != 0) {
-				// throw new CVSException("Return Code of magicDeleteProject :" + process.exitValue());
-			}
-			
-		} catch (IOException e) {
-			throw new CVSException("IOException in magicDeleteProject");
-		} catch (InterruptedException e) {
-			throw new CVSException("InterruptedException in magicDeleteProject");
-		}		
-	}
-
-	/**
-	 * Set the project on the standard cvs-server up so that it contains the resources
-	 * in createResources. The files have random content.
-	 */
-	public void magicSetUpRepo(String project, String[] createResources) throws CVSException {
-		CVSRepositoryLocation location = CVSRepositoryLocation.fromString(REPOSITORY_NAME);
-		String host = location.getHost();
-		String repoRoot = location.getRootDirectory();
-		magicSetUpRepo(workspaceRoot,host,repoRoot,REPOSITORY_NAME,project,createResources);
-	}
-	
-	/**
-	 * Set the project on the standard cvs-server up so that it contains the resources
-	 * in createResources. The files have random content.
-	 * 
-	 * @param root a folder to place files temporaryly
-	 * @param host e.g. dev.eclipse.org:2401
-	 * @param repoRoot e.g. /home/cvs
-	 * @param repoName e.g. :pserver:anonymous@dev.eclipse.org:2401:/home/eclipse
-	 * @param project e.g. org.eclipse.swt
-	 * @param createResources e.g. new String[]{"a.txt","f1/b.txt","f1/c.txt","f2/d.txt"}
-	 */
-	private static void magicSetUpRepo(File root, String host, String repoRoot, String repoName, String project, String[] createResources) throws CVSException {
-		
-		File workFolder;
-		
-		workFolder = new File(root,project + "tmpXXXtmp");
-		
-		createRandomFile(workFolder, createResources);
-		
-		magicDeleteProject(host,repoRoot,project);
-		
-		String[] gOptions = new String[]{"-d",repoName};
-		String[] lOptions = new String[]{"-m","msg"};
-		String[] args = new String[]{project,"a","b"};
-		
-		execute("import",gOptions,lOptions,args,workFolder,new NullProgressMonitor(),System.err);
-		
-		FileUtil.deepDelete(workFolder);
-	}
-	
-	/**
-	 *  Compare Arrays and find the first different element
-	 */
-	protected static void assertEqualsArrays(Object[] obArr1, Object[] obArr2) {
-		
-		assertEquals("Called assertEqualsArrays with null on one side", obArr1 == null,obArr2 == null);
-		if (obArr1 == null) {
-			return;
-		}
-
-		for (int i=0; i<Math.min(obArr1.length,obArr2.length); i++) {
-			assertEquals("At Element " + i + " of the array",obArr1[i],obArr2[i]);
-		}
-		
-		// If the Arrays are different in length, look for the first
-		// not existing element and compare it to the existing in the
-		// other array
-		if (obArr1.length > obArr2.length) {
-			assertEquals("Arrays of different length",obArr1[obArr2.length],null);
-			return;
-		}
-	
-		if (obArr1.length < obArr2.length) {
-			assertEquals("Arrays of different length",obArr2[obArr1.length],null);
-			return;
-		}
-			
-	}
-	
-	protected static void assertSynchronizerEmpty() {
-		assertTrue(CVSProviderPlugin.getSynchronizer().isEmpty());
-	}
-	
-	/**
-	 * Write String[] to file as lines
-	 */
-	protected static void writeToFile(File file, String[] content)
-		throws IOException {
-		
-		BufferedWriter fileWriter;
-		
-		fileWriter = new BufferedWriter(new FileWriter(file));
-		for (int i = 0; i<content.length; i++) {
-			fileWriter.write(content[i]);
-			fileWriter.newLine();
-		}
-		fileWriter.close();
-	}
-	
-	/**
-	 * load file in lines to String[]
-	 */
-	protected static String[] readFromFile(File file)
-		throws IOException {
-
-		BufferedReader fileReader;
-		List fileContentStore = new ArrayList();
-		String line;
-		
-		if (!file.exists()) {
-			return null;
-		}
-		
-		fileReader = new BufferedReader(new FileReader(file));
-		while ((line = fileReader.readLine()) != null) {
-			fileContentStore.add(line);
-		}
-		fileReader.close();
-			
-		return (String[]) fileContentStore.toArray(new String[fileContentStore.size()]);
-	}
-
-	/**
-	 * Append a String to an file (acctally to both of the files, that are going
-	 * to have the same content)
-	 * If the file is empty we create a new file with the content txt.
-	 */
-	protected void appendToFile(File file, String txt) throws IOException {	
-		String[] content;
-		String[] newContent;
-		
-		content = readFromFile(file);
-		
-		if (content == null) {
-			content = new String[0];
-		}
-		
-		newContent = new String[content.length + 1];
-		System.arraycopy(content,0,newContent,0,content.length);
-		newContent[content.length] = txt;
-		
-		writeToFile(file,newContent);
-	}
-	
-	/**
-	 * genertates Random content meand to be written in a File
-	 */
-	protected static String createRandomContent() {
-		
-		StringBuffer content = new StringBuffer();
-		int contentSize;
-		
-		content.append("Random file generated for test" + PLATFORM_NEWLINE);
-		
-		contentSize = (int) Math.round(RANDOM_CONTENT_SIZE * 2 * Math.random());
-		for (int i=0; i<contentSize; i++) {
-			
-			if (Math.random()>0.99) {
-				content.append(PLATFORM_NEWLINE);
-			}
-
-			if (Math.random()>0.99) {
-				content.append("\n");
-			}
-			
-			if (NEWLINE_TEST) {
-				if (Math.random()>0.99) {
-					content.append("\n\r");
-				}
-				if (Math.random()>0.99) {
-					content.append('\r');
-				}
-				if (Math.random()>0.99) {
-					content.append("\r\n");
-				}
-				if (Math.random()>0.99) {
-					content.append("\n");
-				}
-				if (Math.random()>0.99) {
-					content.append("\n\n");
-				}
-				if (Math.random()>0.99) {
-					content.append("\r\r");
-				}
-			}
-			
-			content.append((char)('\u0021' + Math.round(60 * Math.random())));
-		}
-		
-		return content.toString();
-	}
-	
-	/**
-	 * Creates the file with random contend, and all the folders on the
-	 * way to there
-	 */
-	private static void createRandomFile(File file) throws CVSException {
-		try {
-			file.getParentFile().mkdirs();
-			writeToFile(file,new String[]{createRandomContent()});
-		} catch (IOException e) {
-			throw new CVSException(0,0,"IOException in test-setup",e);
-		}		
-	}
-		
-	/**
-	 * Build the given fileStructure, all files are going to have
-	 * sample content, all folders on the way are created
-	 */
-	protected static void createRandomFile(File root, String[] fileNameArray) 
-														throws CVSException {
-		for (int i=0; i<fileNameArray.length; i++) {
-			createRandomFile(new File(root, fileNameArray[i]));
-		}
-	}
-
-	/**
-	 * wait milliseconds to continou the execution
-	 */
-	public static void waitMsec(int msec) {	
-		try {
-			Thread.currentThread().sleep(msec);
-		} catch(InterruptedException e) {
-			fail("wait-problem");
-		}
-	}
-	
-	/**
-	 * Call this method from the main-method of your test-case.
-	 * It initialises some required parameter and runs the testcase.
-	 */
-	protected static void run(Class test) {
-		System.setProperty("eclipse.cvs.standalone","true");
-		TestRunner.run(test);
-	}
-
-	/**
-	 * This delte does a deepDelete for an ICVSResource and deletes all
-	 * the cached information for the resource and all its children as
-	 * well.
-	 * At some point this should be integrated into the LocalResource ...
-	 */
-	public static void delete(ICVSResource resource) throws CVSException {
-		
-		// Deleting a file is an add-on that we need for the same-result
-		// enviorment
-		if (!resource.isFolder()) {
-			resource.delete();
-			CVSProviderPlugin.getSynchronizer().reload(((LocalResource)resource.getParent()).getLocalFile(), new NullProgressMonitor());
-			return;
-		}
-		
-		ICVSFolder folder = (ICVSFolder) resource;
-		
-		if (!folder.isCVSFolder()) {		
-			ICVSFolder[] folders = folder.getFolders();
-			for (int i = 0; i < folders.length; i++) {
-				delete(folders[i]);
-			}
-		}
-		
-		folder.delete();
-		CVSProviderPlugin.getSynchronizer().reload(((LocalResource)folder).getLocalFile(), new NullProgressMonitor());
-	}	
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/NullOutputStream.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/NullOutputStream.java
deleted file mode 100644
index 6419fb0..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/NullOutputStream.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.eclipse.team.tests.ccvs.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * @version 	1.0
- * @author 	${user}
- */
-public class NullOutputStream extends OutputStream {
-
-	/**
-	 * Constructor for NullOutputStream.
-	 */
-	public NullOutputStream() {
-		super();
-	}
-
-	/*
-	 * @see OutputStream#write(int)
-	 */
-	public void write(int arg0) throws IOException {
-	}
-
-}
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/AllTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/AllTests.java
deleted file mode 100644
index f734a31..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/AllTests.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.compatible;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-public class AllTests extends TestSuite {
-			
-	public static Test suite() {	
-		TestSuite suite = new TestSuite();
-		suite.addTest(BasicTest.suite());
-		suite.addTest(ConflictTest.suite());
-		suite.addTest(ModuleTest.suite());
-    	return new CompatibleTestSetup(suite);
-	}	
-	
-	public AllTests(String name) {
-		super(name);
-	}
-
-	public AllTests() {
-		super();
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/BasicTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/BasicTest.java
deleted file mode 100644
index 7e6a159..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/BasicTest.java
+++ /dev/null
@@ -1,488 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.compatible;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.util.Date;
-import java.util.GregorianCalendar;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-public class BasicTest extends JUnitTestCase {
-	
-	SameResultEnv env1;
-	SameResultEnv env2;
-	
-	public BasicTest(String arg) {
-		super(arg);
-		env1 = new SameResultEnv(arg,getFile("checkout1"));
-		env2 = new SameResultEnv(arg,getFile("checkout2"));
-	}
-	
-	public BasicTest() {
-		this("BasicTest");
-	}
-
-	public static void main(String[] args) {	
-		run(BasicTest.class);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(BasicTest.class);
-		return new CompatibleTestSetup(suite);
-		//return new CompatibleTestSetup(new BasicTest("testRTag"));
-	}
-	public void setUp() throws Exception {
-		env1.setUp();
-		env2.setUp();
-
-		// Set the project to the content we need ...
-		env1.magicSetUpRepo("proj2",new String[]{"a.txt","f1/b.txt","f1/c.txt"});
-		env2.deleteFile("proj2");
-	}
-	
-	public void tearDown() throws CVSException {
-		env1.tearDown();
-		env2.tearDown();
-		assertSynchronizerEmpty();
-	}
-	
-	public void testAdd() throws Exception {
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env1.writeToFile("proj2/d.txt",new String[]{"The file to be added","next"});
-		env1.mkdirs("proj2/f2/f3");
-		env1.mkdirs("proj2/f4/f5");
-		env1.writeToFile("proj2/f4/f5/e.txt", new String[]{"Another file to be added","next"});
-		
-		env1.execute("add",EMPTY_ARGS,new String[]{"d.txt"},"proj2");
-		env1.execute("add",EMPTY_ARGS,new String[]{"f2","f2/f3"},"proj2");
-		env1.execute("add",EMPTY_ARGS,new String[]{"f4"},"proj2");
-		env1.execute("add",EMPTY_ARGS,new String[]{"f4/f5"},"proj2");
-		env1.execute("add",EMPTY_ARGS,new String[]{"f4/f5/e.txt"},"proj2");
-		env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"});
-
-		// Check the stuff out somewhere else to acctually check, that
-		// the file has been accepted
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"});		
-	}
-
-	public void testAddUpdate() throws Exception {
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"});		
-
-		env1.writeToFile("proj2/d.txt",new String[]{"The file to be added","next"});
-		env1.mkdirs("proj2/f2/f3");
-		env1.mkdirs("proj2/f4/f5");
-		env1.writeToFile("proj2/f4/f5/e.txt", new String[]{"Another file to be added","next"});
-		
-		env1.execute("add",EMPTY_ARGS,new String[]{"d.txt"},"proj2");
-		env1.execute("add",EMPTY_ARGS,new String[]{"f2","f2/f3"},"proj2");
-		env1.execute("add",EMPTY_ARGS,new String[]{"f4"},"proj2");
-		env1.execute("add",EMPTY_ARGS,new String[]{"f4/f5"},"proj2");
-		env1.execute("add",EMPTY_ARGS,new String[]{"f4/f5/e.txt"},"proj2");
-		env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"});
-
-		env2.execute("update",EMPTY_ARGS,new String[]{"proj2"});		
-
-	}
-
-	public void testRemove() throws Exception {
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env1.deleteFile("proj2/a.txt");
-		env1.deleteFile("proj2/f1/c.txt");
-		
-		env1.execute("remove",EMPTY_ARGS,new String[]{"a.txt"},"proj2");
-		env1.execute("remove",EMPTY_ARGS,new String[]{"f1/c.txt"},"proj2");
-		env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"});
-
-		// Check the stuff out somewhere else to acctually check, that
-		// the file has been accepted
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"});		
-	}
-	
-	public void testRemoveRecusive() throws Exception {
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"});		
-
-		env1.deleteFile("proj2/a.txt");
-		env1.deleteFile("proj2/f1/c.txt");
-		
-		env1.execute("remove",EMPTY_ARGS,new String[0],"proj2");
-		env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"});
-
-		// Check the stuff out somewhere else to acctually check, that
-		// the file has been accepted
-		env2.execute("update",EMPTY_ARGS,new String[]{"proj2"});		
-	}
-	
-	public void testRoundRewrite() throws Exception {
-				
-		// Download content in two locations
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		
-		// change the file "proj1/folder1/c.txt" in env1 check it in
-		// on the server
-		env1.appendToFile("proj2/f1/c.txt","AppendIt");
-		env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
-		
-		// assure that the file is different in env1 and env2
-		// try {
-		//	assertEqualsArrays(env1.readFromFile("proj2/f1/c.txt"),
-		//				   	   env2.readFromFile("proj2/f1/c.txt"));
-		//	throw new IllegalArgumentException("This is a failed Assertion");
-		// } catch (AssertionFailedError e) {}
-		
-		// update env2 and make sure the changes are there
-		env2.execute("update",EMPTY_ARGS,new String[]{"proj2"},"");
-		// assertEqualsArrays(env1.readFromFile("proj2/f1/c.txt"),
-		//				   env2.readFromFile("proj2/f1/c.txt"));
-	}
-	
-	public void testUpdateMinusN() throws Exception {	
-		String[] fileContent1;
-		
-		fileContent1 = new String[]{"RandomNumber", Math.random() + ""};
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		
-		env1.writeToFile("proj1/folder1/c.txt",fileContent1);
-		
-		env1.execute("ci",new String[]{"-n"},new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
-		env2.execute("update",EMPTY_ARGS,new String[]{"proj2"});		
-	}
-	
-	public void testStatus() throws Exception {
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env1.execute("status",EMPTY_ARGS,new String[]{"proj2"});
-		
-		env1.deleteFile("proj2/a.txt");
-		env1.deleteFile("proj2/f1/c.txt");
-		env1.appendToFile("proj2/f1/b.txt","AppendIt");
-
-		env1.execute("status",EMPTY_ARGS,new String[]{"proj2"});
-		env1.execute("status",EMPTY_ARGS,new String[0],"proj2");
-
-		env1.createRandomFile("proj2/d.txt");
-
-		env1.execute("status",EMPTY_ARGS,new String[0],"proj2");
-		env1.execute("status",EMPTY_ARGS,new String[]{"f1/b.txt"},"proj2");
-		// env1.execute("status",localOptions,new String[]{"d.txt"},"proj2");
-	}
-
-	public void testLog() throws Exception {
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env1.execute("log",EMPTY_ARGS,new String[]{"proj2"});
-		
-		env1.deleteFile("proj2/a.txt");
-		env1.deleteFile("proj2/f1/c.txt");
-		env1.appendToFile("proj2/f1/b.txt","AppendIt");
-
-		env1.execute("log",EMPTY_ARGS,new String[]{"proj2"});
-		env1.execute("log",EMPTY_ARGS,new String[0],"proj2");
-
-		env1.createRandomFile("proj2/d.txt");
-
-		env1.execute("log",EMPTY_ARGS,new String[0],"proj2");
-		env1.execute("log",EMPTY_ARGS,new String[]{"f1/b.txt"},"proj2");
-	
-	}	
-	
-	public void testBranchTag() throws Exception {
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env1.execute("tag",new String[]{"-b"},new String[]{"tag1","proj2"});
-		
-		env1.deleteFile("proj2/a.txt");
-		env1.deleteFile("proj2/f1/c.txt");
-		env1.appendToFile("proj2/f1/b.txt","AppendIt");
-
-		env1.execute("tag",new String[]{"-b"},new String[]{"tag2","proj2"});
-
-		env1.createRandomFile("proj2/d.txt");
-		
-		env1.deleteFile("proj2");
-		
-		// Try an commit and an add in the two different streams
-		env1.execute("co",new String[]{"-r","tag1"},new String[]{"proj2"});
-		env1.appendToFile("proj2/f1/b.txt","AppendItTwo");
-		env1.createRandomFile("proj2/d.txt");
-		env1.execute("add",new String[0],new String[]{"d.txt"},"proj2");
-		env1.execute("ci",new String[]{"-m","branch"},new String[]{"proj2"});
-		env1.deleteFile("proj2");
-		env1.execute("co",new String[]{"-r","tag1"},new String[]{"proj2"});
-
-		env2.execute("co",new String[]{"-r","tag2"},new String[]{"proj2"});
-		env2.appendToFile("proj2/f1/b.txt","AppendItThree");
-		env2.createRandomFile("proj2/d.txt");
-		env2.execute("add",new String[0],new String[]{"d.txt"},"proj2");
-		env2.execute("ci",new String[]{"-m","branch"},new String[]{"proj2"});	
-		env2.deleteFile("proj2");
-		env2.execute("co",new String[]{"-r","tag2"},new String[]{"proj2"});
-	}
-		
-	public void testBranchingWithLocalChanges() throws Exception {
-		// Try to branch of a workspace with local changes
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		JUnitTestCase.waitMsec(1500);
-		env1.appendToFile("proj2/f1/b.txt","AppendIt");
-		env1.execute("tag",new String[]{"-b"},new String[]{"branch-with-changes","proj2"});
-		env1.execute("update",new String[]{"-r", "branch-with-changes"},new String[]{"proj2"});
-	}
-
-	public void testTag() throws Exception {
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env1.execute("tag",EMPTY_ARGS,new String[]{"tag1","proj2"});
-		
-		env1.deleteFile("proj2/a.txt");
-		env1.deleteFile("proj2/f1/c.txt");
-		env1.appendToFile("proj2/f1/b.txt","AppendIt");
-
-		env1.execute("tag",EMPTY_ARGS,new String[]{"tag2","proj2"});
-		env1.execute("tag",EMPTY_ARGS,new String[]{"tag2"},"proj2");
-
-		env1.createRandomFile("proj2/d.txt");
-
-		env1.execute("tag",EMPTY_ARGS,new String[]{"tag3"},"proj2");
-		env1.execute("tag",EMPTY_ARGS,new String[]{"tag3","f1/b.txt"},"proj2");
-		
-		env1.deleteFile("proj2");
-		env1.execute("co",new String[]{"-r","tag1"},new String[]{"proj2"});
-		env1.deleteFile("proj2");
-		env1.execute("co",new String[]{"-r","tag2"},new String[]{"proj2"});
-		env1.deleteFile("proj2");
-		env1.execute("co",new String[]{"-r","tag3"},new String[]{"proj2"});
-		
-		// env1.execute("tag",localOptions,new String[]{"d.txt"},"proj2");
-		
-		env1.execute("update", new String[]{"-r","tag1"}, new String[]{"proj2"});
-		env1.execute("update", new String[]{"-r","tag2"}, new String[]{"proj2"});
-		env1.execute("update", new String[]{"-r","tag3"}, new String[]{"proj2"});
-		env1.execute("update", new String[]{"-A"}, new String[]{"proj2"});
-	}
-	
-	public void testRTag() throws Exception {
-		
-		// Checkout and tag the project
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env1.execute("tag",EMPTY_ARGS,new String[]{"tag1","proj2"});
-		env1.deleteFile("proj2");
-		
-		// Use rtag to tag the above tag as both a version and a branch
-		env1.execute("rtag",new String[]{"-r", "tag1"},new String[]{"rtag1","proj2"});
-		env1.execute("rtag",new String[]{"-b", "-r", "tag1"},new String[]{"btag1","proj2"});
-		
-		// Checkout the version and branch
-		env1.deleteFile("proj2");
-		env1.execute("co",new String[]{"-r","rtag1"},new String[]{"proj2"});
-		env1.deleteFile("proj2");
-		env1.execute("co",new String[]{"-r","btag1"},new String[]{"proj2"});
-	}
-	
-	public void testPrune() throws Exception {
-				
-		// Download content in two locations
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		
-		// change the file "proj1/folder1/c.txt" in env1 check it in
-		// on the server
-		env1.deleteFile("proj2/f1/b.txt");
-		env1.deleteFile("proj2/f1/c.txt");
-		env1.execute("remove",EMPTY_ARGS,new String[0],"proj2");
-		
-		env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
-		env1.execute("update",new String[]{"-P"},new String[]{"proj2"},"");
-		
-		// update env2 and make sure the changes are there
-		env2.execute("update",new String[]{"-P"},new String[]{"proj2"},"");
-
-	}
-	
-	public void testPrune2() throws Exception {
-				
-		// Download content in two locations
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		
-		// change the file "proj1/folder1/c.txt" in env1 check it in
-		// on the server
-		env1.deleteFile("proj2/f1/b.txt");
-		env1.deleteFile("proj2/f1/c.txt");
-		env1.execute("remove",EMPTY_ARGS,new String[0],"proj2");
-		
-		env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
-		env1.execute("update",new String[]{"-P"},new String[]{},"proj2");
-		
-		// update env2 and make sure the changes are there
-		env2.execute("update",new String[]{"-P"},new String[]{},"proj2");
-
-	}
-	
-	public void testAdmin() throws Exception {
-				
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		
-		env1.execute("admin",new String[]{"-kb"},new String[]{"proj2/f1/b.txt"},"");
-		env1.execute("update",EMPTY_ARGS,new String[]{"proj2"},"");
-		
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-	}
-
-	public void testDiff() throws Exception {
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"});
-		env1.execute("diff",EMPTY_ARGS,new String[]{"proj2"});
-		
-		env1.setIgnoreExceptions(true);
-		
-		env1.appendToFile("proj2/f1/c.txt","AppendIt2");
-		env1.appendToFile("proj2/f1/b.txt","AppendIt");
-		
-		env1.execute("diff",EMPTY_ARGS,new String[]{"proj2"});
-		env1.execute("diff",EMPTY_ARGS,new String[0],"proj2");
-		
-		env1.createRandomFile("proj2/d.txt");
-
-		env1.execute("diff",EMPTY_ARGS,new String[0],"proj2");
-		env1.execute("diff",EMPTY_ARGS,new String[]{"f1/b.txt"},"proj2");
-		// env1.execute("diff",localOptions,new String[]{"d.txt"},"proj2");
-
-		env1.setIgnoreExceptions(false);
-	}
-
-	public void testReadOnly() throws Exception {			
-		env1.execute("co",new String[]{"-r"},EMPTY_ARGS,new String[]{"proj2"},"");
-		env1.execute("update",new String[0],EMPTY_ARGS,new String[]{"proj2"},"");
-		env1.deleteFile(".");
-		env1.writeToFile("tmp.txt",new String[0]);
-		env1.deleteFile("tmp.txt");	
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-	}
-	
-	public void testQuestionables() throws Exception {			
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		env1.writeToFile("proj2/f2/d.txt", new String[]{"content"});
-		env1.writeToFile("proj2/f3/f4/d.txt", new String[]{"content"});	
-		env1.writeToFile("proj2/f5/f6/f7/d.txt", new String[]{"content"});	
-		env1.execute("add",new String[0],new String[]{"f3"},"proj2");
-		env1.execute("add",new String[0],new String[]{"f3/f4"},"proj2");
-		env1.execute("update",new String[0],new String[]{"."},"proj2");
-	}
-	
-	public void testImportWrappers() throws Exception {
-		// Make the project empty
-		env1.magicSetUpRepo("proj3",new String[]{"NoImportant.txt"});
-		env2.deleteFile("proj3");
-		
-		// Create resouces and import them with the 
-		// special wrapper
-		env1.createRandomFile(new String[]{"a.txt","a.class","a.xxx"},"proj3");
-		env1.execute("import",
-					new String[]{"-W","*.txt -k 'kv'","-W","*.class -k 'b'","-I","*.xxx","-m","msg"},
-					new String[]{"proj3","aTag","bTag"},
-					"proj3");
-		
-		// download the server-version	
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj3"},"");
-	}
-	
-	public void testImportIgnores() throws Exception {
-		// Make the project empty
-		env1.magicSetUpRepo("proj3",new String[]{"NoImportant.txt"});
-		env2.deleteFile("proj3");
-		
-		// Create resouces and import them with the 
-		// special wrapper
-		env1.createRandomFile(new String[]{"a.txt","a.class","a.xxx"},"proj3");
-		env1.execute("import",
-					new String[]{"-I","*.xxx","-m","msg"},
-					new String[]{"proj3","aTag","bTag"},
-					"proj3");
-		
-		// download the server-version	
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj3"},"");
-	}
-	
-	private String toGMTString(Date d) {
-		return d.toGMTString();
-	}
-	
-	public void testDate() throws Exception {
-		
-		// IMPOTANT:
-		// Do not make tests with relative dates, because the times coming back form the server will 
-		// sometimes differ from the reference-client to the eclipse-client due to the time-delay in calling
-
-		Date beforeChange;
-		Date firstChange;
-		Date secondChange;
-		
-		env1.execute("co",new String[0],new String[]{"proj2"});
-		
-		// Change the file "a.txt" and record the times you are doing that at
-		waitMsec(1100); // here we wait for the import to finish
-		beforeChange = GregorianCalendar.getInstance().getTime();
-
-		waitMsec(1100);
-	
-		env1.appendToFile("proj2/a.txt","AppendIt");
-		env1.execute("ci",new String[]{"-m","msg"},new String[]{"proj2"});
-		firstChange = GregorianCalendar.getInstance().getTime();
-
-		waitMsec(1100);
-			
-		env1.appendToFile("proj2/a.txt","AppendIt2");
-		env1.appendToFile("proj2/f1/b.txt","AppendIt2");
-		env1.execute("ci",new String[]{"-m","msg"},new String[]{"proj2"});
-		secondChange = GregorianCalendar.getInstance().getTime();
-
-		waitMsec(1100);		
-
-		env1.deleteFile("proj2");
-		
-		// Now check the project at different times out
-		env1.execute("co",new String[]{"-D",toGMTString(beforeChange)},new String[]{"proj2"});
-		env1.deleteFile("proj2");
-		
-		env1.execute("co",new String[]{"-D",toGMTString(firstChange)},new String[]{"proj2"});
-		env1.deleteFile("proj2");
-		
-		env1.execute("co",new String[]{"-D",toGMTString(secondChange)},new String[]{"proj2"});
-		env1.deleteFile("proj2");
-		
-		// Now do some updates to look if update -D works
-		env1.execute("co",new String[0],new String[]{"proj2"});
-		env1.execute("update",new String[]{"-D",toGMTString(beforeChange)},new String[]{"proj2"});
-		env1.execute("update",new String[]{"-D",toGMTString(firstChange)},new String[]{"proj2"});
-		env1.execute("update",new String[]{"-D",toGMTString(secondChange)},new String[]{"proj2"});
-
-		// We look if the parameter -a is working
-		env1.execute("update",new String[]{"-D",toGMTString(beforeChange),"-A"},new String[]{"proj2"});
-		env1.execute("update",new String[]{"-D",toGMTString(secondChange)},new String[]{"proj2"});
-		env1.deleteFile("proj2");
-		
-		// We get try to merge changes from different dates
-		env1.execute("co",new String[0],new String[]{"proj2"});
-		env1.appendToFile("proj2/a.txt","This is the world ...");
-		env1.execute("update",new String[]{"-D",toGMTString(beforeChange)},new String[]{"proj2"});
-		env1.appendToFile("proj2/a.txt","... witch constantly changes");
-		env1.execute("update",new String[]{"-A"},new String[]{"proj2"});
-		// Change something to be able to commit
-		env1.appendToFile("proj2/a.txt","... and the changes are aproved"); 
-		env1.execute("ci",new String[]{"-m","msg"},new String[]{"proj2"});
-		
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/CompatibleTestSetup.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/CompatibleTestSetup.java
deleted file mode 100644
index d63e804..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/CompatibleTestSetup.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.compatible;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import junit.framework.Test;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
-
-/**
- * @version 	1.0
- * @author 	${user}
- */
-public class CompatibleTestSetup extends CVSTestSetup {
-
-	public static final String REFERENCE_CLIENT_REPOSITORY=System.getProperty("eclipse.cvs.repository1");
-	public static final String ECLIPSE_CLIENT_REPOSITORY=System.getProperty("eclipse.cvs.repository2");
-	
-	public static CVSRepositoryLocation referenceClientRepository;
-	public static CVSRepositoryLocation eclipseClientRepository;
-	
-	/**
-	 * Constructor for CompatibleTestSetup.
-	 */
-	public CompatibleTestSetup(Test test) {
-		super(test);
-	}
-	
-	/**
-	 * For compatibility testing, we need to set up two repositories
-	 */
-	public void setUp() throws CVSException {
-		CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(false);
-		if ((referenceClientRepository != null) && (eclipseClientRepository != null))
-			return;
-		referenceClientRepository = setupRepository(REFERENCE_CLIENT_REPOSITORY);
-		eclipseClientRepository = setupRepository(ECLIPSE_CLIENT_REPOSITORY);
-	}
-	
-	public void tearDown() throws CVSException {
-		CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(true);
-	}
-}
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ConflictTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ConflictTest.java
deleted file mode 100644
index 326af5b..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ConflictTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.compatible;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-public class ConflictTest extends JUnitTestCase {
-
-	SameResultEnv env1;
-	SameResultEnv env2;
-	
-	public ConflictTest() {
-		this(null);
-	}
-	
-	public ConflictTest(String arg) {
-		super(arg);
-		env1 = new SameResultEnv(arg, getFile("checkout1"));
-		env2 = new SameResultEnv(arg, getFile("checkout2"));
-	}
-
-	public static void main(String[] args) {	
-		run(ConflictTest.class);
-	}
-
-	public void setUp() throws Exception {
-		env1.setUp();
-		env2.setUp();
-
-		// Set the project to the content we need ...
-		env1.magicSetUpRepo("proj2",new String[]{"a.txt","f1/b.txt","f1/c.txt"});
-		env2.deleteFile("proj2");
-	}
-	
-	public void tearDown() throws CVSException {
-		env1.tearDown();
-		env2.tearDown();
-	}
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(ConflictTest.class);
-		return new CompatibleTestSetup(suite);
-	}
-	
-	public void testSimpleConflict() throws Exception {
-		// Download content in two locations
-		env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
-		
-		// change the file in both directories in a different way
-		env1.appendToFile("proj2/f1/c.txt","AppendIt This");
-		env2.appendToFile("proj2/f1/c.txt","AppendIt That");
-		
-		// commit changes of the first
-		env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
-		
-		// load the changes into the changed file
-		// and submit the merge
-		env2.execute("update",EMPTY_ARGS,new String[]{"proj2"},"");
-		
-		// Make a change to the file in order to let the cvs-client know
-		// that we solved the confilict
-		env2.appendToFile("proj2/f1/c.txt","That's allright");		
-		
-		env2.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ModuleTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ModuleTest.java
deleted file mode 100644
index feaa6b6..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ModuleTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.compatible;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import junit.awtui.TestRunner;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-public class ModuleTest extends JUnitTestCase {
-	
-	SameResultEnv env1;
-	SameResultEnv env2;
-	
-	public ModuleTest(String arg) {
-		super(arg);
-		env1 = new SameResultEnv(arg,getFile("checkout1"));
-		env2 = new SameResultEnv(arg,getFile("checkout2"));
-	}
-
-	public static void main(String[] args) {	
-		run(ModuleTest.class);
-	}
-
-	public void setUp() throws Exception {
-		env1.setUp();
-		env2.setUp();
-
-		// Set the project to the content we need ...
-		env1.magicDeleteRemote("CVSROOT/modules");
-		env1.magicDeleteRemote("CVSROOT/modules,v");
-		env1.magicSetUpRepo("proj2",new String[]{"a.txt","f1/b.txt","f1/c.txt","f2/d.txt","f2/f3/e.txt"});
-		env2.deleteFile("proj2");
-	}
-	
-	public void tearDown() throws Exception {
-		env1.tearDown();
-		env2.tearDown();
-	}
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(ModuleTest.class);
-		return new CompatibleTestSetup(suite);
-	}	
-	
-	private void setUpModuleFile(String[] change) throws Exception {
-		
-		// Write the modules-file
-		env1.execute("co",EMPTY_ARGS,new String[]{"CVSROOT"});
-		env1.writeToFile("CVSROOT/modules",change);
-		
-		// Send it up to the server
-		env1.execute("add",new String[]{"-m","m"},new String[]{"modules"},"CVSROOT");
-		env1.execute("ci",new String[]{"-m","m"},new String[]{"CVSROOT"});
-		env1.deleteFile("CVSROOT");		
-	}
-	
-	public void testSimpleModule() throws Exception {
-		setUpModuleFile(new String[]{"mod1 proj2"});
-		env1.execute("co",EMPTY_ARGS,new String[]{"mod1"});
-		env1.appendToFile("mod1/a.txt","Append");
-		env1.execute("ci",new String[]{"-m","m"},new String[]{"mod1"});
-		env1.execute("update",EMPTY_ARGS,new String[]{"mod1"});
-	}
-
-	public void testCompositeModule() throws Exception {
-		setUpModuleFile(new String[]{	"mod1-f1 proj2/f1",
-										"mod1-f2 proj2/f2",
-										"mod1f &mod1-f1 &mod1-f2"});
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"mod1f"});
-		env1.appendToFile("mod1f/mod1-f1/b.txt","Append");
-		env1.execute("ci",new String[]{"-m","m"},new String[]{"mod1f"});
-		env1.execute("update",EMPTY_ARGS,new String[]{"mod1f"});
-	}
-
-	public void testCompositeAliasModule() throws Exception {
-		setUpModuleFile(new String[]{"mod1-f1 proj2/f1",
-										"mod1t proj2/f1 b.txt",
-										"mod1-f2 &proj2/f2 &mod1t",
-										"mod1f -a mod1-f1 mod1-f2"});
-		
-		env1.execute("co",EMPTY_ARGS,new String[]{"mod1f"});
-		env1.appendToFile("mod1-f1/b.txt","Append");
-		env1.execute("ci",new String[]{"-m","m"},new String[]{"mod1-f1","mod1-f2"});
-		env1.execute("update",EMPTY_ARGS,new String[]{"mod1-f1","mod1-f2"});
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ReferenceClient.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ReferenceClient.java
deleted file mode 100644
index 8447ab5..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ReferenceClient.java
+++ /dev/null
@@ -1,201 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.compatible;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.util.SyncFileUtil;
-
-/**
- * This class is responsible for executing cvs commands using
- * a reference CVS command line client.
- */
-public class ReferenceClient {
-	
-	public static final String cvsLocation = System.getProperty("eclipse.cvs.command");
-	/**
-	 * Puts opetions into one String seperated by
-	 * space.
-	 * starts and ends with a space.
-	 */
-	private static String flatenOptions(String[] options) {
-		
-		StringBuffer result = new StringBuffer(" ");
-		String quote;
-		
-		for (int i=0; i<options.length; i++) {
-			
-			if (options[i].indexOf(" ")==-1) {
-				quote = "";
-			} else {
-				quote = "\"";
-			}
-			result.append(quote);
-			result.append(options[i]);
-			result.append(quote);
-			result.append(' ');
-		}
-			
-		return result.toString();
-	}
-	
-	public static void execute(String request, 
-						String[] globalOptions, 
-						String[] localOptions, 
-						String[] arguments,
-						File ioRoot,
-						IProgressMonitor monitor, 
-						PrintStream messageOut) 
-						throws CVSException {
-
-		Runtime runtime;
-		Process process;
-		BufferedReader stdIn;
-		BufferedReader errIn;
-		ICVSFolder mRoot;
-		
-		String global;
-		String local;
-		String arg;
-		String commandLine;
-
-		globalOptions = (String[]) globalOptions.clone();
-		mRoot = Session.getManagedFolder(ioRoot);
-		
-		runtime = Runtime.getRuntime();
-		global = flatenOptions(globalOptions);
-		local = flatenOptions(localOptions);
-		arg = flatenOptions(arguments);
-		
-		commandLine = cvsLocation + " ";
-		commandLine = commandLine + global;
-		commandLine = commandLine + request + " ";
-		commandLine = commandLine + local;
-		commandLine = commandLine + arg;
-		
-		// System.out.println(ioRoot.getPath() + "> " + commandLine);
-		
-		try {
-			process = runtime.exec(commandLine, null, ioRoot);
-		} catch (IOException e) {
-			throw new CVSException("IOException while executing ReferenceClient",e);
-		}
-		
-		stdIn = new BufferedReader(new InputStreamReader(process.getInputStream()));
-		new ContiniousPipe(stdIn, messageOut, "M ");
-
-		errIn = new BufferedReader(new InputStreamReader(process.getErrorStream()));
-		new ContiniousPipe(errIn, messageOut, "E ");
-
-		try {
-			process.waitFor();
-		} catch (InterruptedException e) {
-			throw new CVSException("InterruptedException while executing ReferenceClient",e);
-		}
-		
-		if (process.exitValue() != 0) {
-			throw new ReferenceException("Return Code of CVS reference client: " + 
-									process.exitValue() + "\nwhile executing: " + 
-									commandLine);
-		}	
-		
-		SyncFileUtil.mergeEntriesLogFiles(ioRoot);
-		
-	}
-	
-	/**
-	 * 
-	 * returns ":pserver:username@host:/cvs/root"
-	 *         when you insert ":pserver:username:password@host:/cvs/root"
-	 */
-	public static String removePassword(String repoName) {
-		
-		int atPlace = -1;
-		int colonPlace = -1;
-		int colonCount = 0;
-		String currentChar; 
-		
-		for (int i=0; i<repoName.length(); i++) {
-			
-			currentChar = repoName.substring(i,i+1);
-			
-			if (currentChar.equals(":")) {
-				colonCount++;
-				
-				if (colonCount == 3) {
-					colonPlace = i;
-				}
-			}
-			
-			if (currentChar.equals("@")) {
-				if (colonPlace == -1) {
-					
-					// If the @ comes before the third colon, then 
-					// we do not have a password and return with the
-					// same string
-					return repoName;
-				} else {
-					atPlace = i;
-				}
-				
-			}
-		}
-		
-		if (atPlace == -1) {
-			return repoName;
-		}
-		
-		return repoName.substring(0,colonPlace) + repoName.substring(atPlace);
-	}
-}
-
-/**
- * This class does continiously pipe from a bufferdReader
- * to a printStream. It does stop as soon, as the bufferdReader is
- * closed an therefore an IOException is thrown or the pipe returns null.
- * 
- * It does close the BufferedReader on it's own (to be sure that it got
- * everything)
- */
-class ContiniousPipe implements Runnable {
-	
-	BufferedReader in;
-	PrintStream out;
-	String prefix;
-	
-	ContiniousPipe(BufferedReader in, PrintStream out, String prefix) {
-		this.in = in;
-		this.out = out;
-		this.prefix = prefix;
-		(new Thread(this)).start();
-	}
-	
-	public void run() {
-		
-		String line;
-		
-		try {
-			while ((line=in.readLine()) != null) {
-				out.println(prefix + line);
-			}
-		} catch (IOException e) {
-			// Should not happen, as the PrintStream does not throw IOExceptions
-			// at all an in is a stream from a process
-		} finally {
-			
-			try {
-				in.close();
-			} catch (IOException e) {}
-			
-		}
-	}
-}
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ReferenceException.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ReferenceException.java
deleted file mode 100644
index 2f5678b..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ReferenceException.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.compatible;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import org.eclipse.team.internal.ccvs.core.CVSException;
-
-public class ReferenceException extends CVSException {
-	
-	public ReferenceException(String message) {
-		super(message);
-	}
-
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/SameResultEnv.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/SameResultEnv.java
deleted file mode 100644
index a17ffc1..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/SameResultEnv.java
+++ /dev/null
@@ -1,558 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.compatible;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintStream;
-import java.text.ParseException;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.core.connection.CVSServerException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.LocalResource;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.core.util.EntryFileDateFormat;
-import org.eclipse.team.internal.ccvs.core.util.Util;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-import org.eclipse.team.tests.ccvs.core.NullOutputStream;
-
-
-/**
- * This is a TestCase that does provide the possibility
- * to run tests on both the reference reference-client and the
- * client provided by us, and to check on equal results
- * in files and messages to the consol.
- * 
- * No own tests should be placed here, instead you should
- * instanciate this testcase in order to make your test from
- * another suite.
- * The class is final, because you need to be able to open
- * two (or more) different enviorments to test certain things.
- */
-public final class SameResultEnv extends JUnitTestCase {
-	
-	public static final String REFERENCE_CLIENT_WORKSPACE="reference";
-	public static final String ECLIPSE_CLIENT_WORKSPACE="eclipse";
-	
-	private File workspace;
-	private File referenceClientRoot;
-	private File eclipseClientRoot;
-	private boolean ignoreExceptions=false;
-	
-	private CVSRepositoryLocation referenceClientRepository;
-	private CVSRepositoryLocation eclipseClientRepository;
-		
-	public SameResultEnv(String arg, File workspace) {
-		super(arg);
-		this.workspace = workspace;
-		referenceClientRoot = new File(workspace, REFERENCE_CLIENT_WORKSPACE);
-		eclipseClientRoot = new File(workspace, ECLIPSE_CLIENT_WORKSPACE);
-		
-		try {
-			deleteFile(".");
-		} catch (CVSException e) {
-			fail();
-		}
-	}
-	
-	/**
-	 * Always to be called in the setUp of the testCase that wants to 
-	 * use the same-result Enviorment.
-	 */
-	public void setUp() throws CVSException {
-		// By default, exceptions are not ignored.
-		// Specific test cases can choose to ignore exceptions
-		ignoreExceptions = false;
-		mkdirs(".");
-	}
-	
-	/**
-	 * Always to be called in the tearDown of the testCase that wants to 
-	 * use the same-result Enviorment.
-	 */
-	public void tearDown() throws CVSException {
-		deleteFile("");
-	}
-	
-	/**
-	 * Deletes files on the both of the cvs-servers.
-	 */
-	public void magicDeleteRemote(String project) throws CVSException {
-
-		referenceClientRepository = CompatibleTestSetup.referenceClientRepository;
-		eclipseClientRepository = CompatibleTestSetup.eclipseClientRepository;
-		
-		String host1 = referenceClientRepository.getHost();
-		String repoRoot1 = referenceClientRepository.getRootDirectory();
-
-		String host2 = eclipseClientRepository.getHost();
-		String repoRoot2 = eclipseClientRepository.getRootDirectory();
-		
-		magicDeleteProject(host1,repoRoot1,project);
-		magicDeleteProject(host2,repoRoot2,project);		
-	}
-	
-	/**
-	 * Set up both of the repos on the cvs-server(s) with the standard
-	 * file-structure:
-	 * project
-	 *   a.txt
-	 *   f1
-	 *     b.txt
-	 *     c.txt
-	 */
-	public void magicSetUpRepo(String project) throws CVSException {
-		magicSetUpRepo(project,new String[]{"a.txt","f1/b.txt","f1/c.txt"});
-	}
-	
-	/**
-	 * Set up both of the repos on the cvs-server(s) with a filestructre
-	 * resulting for your input in the parameter createResources.
-	 */
-	public void magicSetUpRepo(String project,String[] createResources) throws CVSException {
-		
-		// This will trigger asynchronizer reload
-		// deleteFile(project);
-		magicDeleteRemote(project);
-		
-		createRandomFile(createResources, project);
-		execute("import",new String[]{"-m","msg"},new String[]{project,"a","b"},project);
-		
-		deleteFile(".");
-		mkdirs(".");
-	}
-	
-	/**
-	 * Give null this gives an empty string-array back, otherwise
-	 * the parameter.
-	 */
-	private static String[] notNull(String[] arg) {
-		if (arg == null) {
-			return new String[0];
-		} else {
-			return arg;
-		}
-	}
-
-	/**
-	 * Convienience Method, does the same like:<br>
-	 * execute(request,null,localOptions,arguments,rootExtention) 
-	 */				
-	public void execute(String request, 
-						String[] localOptions, 
-						String[] arguments,
-						String rootExtention) 
-						throws CVSException {
-		
-		execute(request,new String[0],localOptions,arguments,rootExtention);
-	}
-
-	/**
-	 * Convienience Method, does the same like:<br>
-	 * execute(request,null,localOptions,arguments,null) 
-	 */		
-	public void execute(String request, 
-						String[] localOptions, 
-						String[] arguments) 
-						throws CVSException {
-
-		execute(request,new String[0],localOptions,arguments,"");
-	}
-	
-	/**
-	 * Run a command in the two folders of this enviorment. In one folder the
-	 * reference-client runs in the the other the eclipse-client. After that
-	 * the results on disc are compared (the output of the clients is not
-	 * considert for the comparison)
-	 */
-	public void execute(String request, 
-						String[] globalOptions, 
-						String[] localOptions, 
-						String[] arguments,
-						String rootExtention) 
-						throws CVSException {
-		
-		globalOptions = notNull(globalOptions);
-		
-		String[] gOptions1 = new String[globalOptions.length + 2];
-		String[] gOptions2 = new String[globalOptions.length + 2];
-		
-		System.arraycopy(globalOptions,0,gOptions1,0,globalOptions.length);
-		System.arraycopy(globalOptions,0,gOptions2,0,globalOptions.length);
-		
-		gOptions1[globalOptions.length] = gOptions2[globalOptions.length] = "-d";
-		gOptions1[globalOptions.length + 1] = CompatibleTestSetup.REFERENCE_CLIENT_REPOSITORY;
-		gOptions2[globalOptions.length + 1] = CompatibleTestSetup.ECLIPSE_CLIENT_REPOSITORY;
-
-		execute(request,gOptions1,gOptions2,localOptions,arguments,rootExtention);
-	}
-	
-	/**
-	 * Acctally run the command in both folders. See doc above.
-	 */
-	private void execute(String request, 
-						String[] globalOptions1, 
-						String[] globalOptions2, 
-						String[] localOptions, 
-						String[] arguments,
-						String rootExtention) 
-						throws CVSException {
-		
-		assertNotNull(request);
-		assertNotNull(globalOptions1);
-		assertNotNull(globalOptions);
-		
-		localOptions = notNull(localOptions);
-		arguments = notNull(arguments);
-		if (rootExtention == null || rootExtention.equals(".")) {
-			rootExtention = "";
-		}
-		
-		try {
-			ReferenceClient.execute(request, 
-									globalOptions1, 
-									localOptions, 
-									arguments,
-									new File(referenceClientRoot,rootExtention),
-									new NullProgressMonitor(), 
-									new PrintStream(new NullOutputStream()));
-		} catch (ReferenceException e) {
-			if (!ignoreExceptions) {
-				throw e;
-			}
-		}
-		
-		try {
-			execute(request, 
-					globalOptions2, 
-					localOptions, 
-					arguments,
-					new File(eclipseClientRoot,rootExtention),
-					new NullProgressMonitor(), 
-					new PrintStream(new NullOutputStream()));
-		} catch (CVSServerException e) {
-			if (!ignoreExceptions) {
-				throw e;
-			}
-		}
-		assertConsistent();
-	}
-
-	/**
-	 * Checks whether the two directories inside the environment
-	 * are equal and therefore the state valid.
-	 */
-	public void assertConsistent() throws CVSException {
-		ICVSFolder referenceFolder = Session.getManagedFolder(referenceClientRoot);
-		ICVSFolder eclipseFolder = Session.getManagedFolder(eclipseClientRoot);
-		CVSProviderPlugin.getSynchronizer().reload(((LocalResource)referenceFolder).getLocalFile(), new NullProgressMonitor());
-		CVSProviderPlugin.getSynchronizer().reload(((LocalResource)eclipseFolder).getLocalFile(), new NullProgressMonitor());
-		assertEquals(referenceFolder,eclipseFolder);
-	}
-	
-	/**
-	 * Create a file with random-content in both, the reference client and 
-	 * the eclipse-client.
-	 * 
-	 * @param relativeFileName is the relative path as allways in the 
-	           class used for access
-	 */
-	public void createRandomFile(String relativeFileName) throws CVSException {
-		
-		String randomContent;
-		
-		randomContent = createRandomContent();
-		try {
-			writeToFile(relativeFileName,new String[]{randomContent});
-		} catch (IOException e) {
-			throw new CVSException("IOException while creating random content",e);
-		}
-	}
-
-	/**
-	 * Call createRandomFile for every element of the array
-	 * 
-	 * @see SameResultEnv#createRandomFile(String)
-	 */
-	public void createRandomFile(String[] relativeFileNames, String rootExtention) throws CVSException {
-		
-		if (rootExtention == null || rootExtention.equals(".")) {
-			rootExtention = "";
-		}
-		
-		if (!rootExtention.equals("") && !rootExtention.startsWith("/")) {
-			rootExtention = rootExtention + "/";
-		}
-		
-		for (int i=0; i<relativeFileNames.length; i++) {
-			createRandomFile(rootExtention + relativeFileNames[i]);
-		}
-	}
-	
-	/**
-	 * Read from the file (check that we have acctually got the same
-	 * content in both versions
-	 */
-	public String[] readFromFile(String relativeFileName) throws IOException {
-		
-		String[] content1;
-		String[] content2;
-		
-		content1 = super.readFromFile(new File(referenceClientRoot,relativeFileName));
-		content2 = super.readFromFile(new File(eclipseClientRoot,relativeFileName));
-		
-		assertEqualsArrays(content1,content2);
-		
-		return content1;
-	}
-	
-	/**
-	 * Delete files from both of the directories
-	 */
-	public void deleteFile(String relativeFileName) throws CVSException {
-		
-		if (".".equals(relativeFileName)) {
-			relativeFileName = "";
-		}
-		
-		File file1 = new File(referenceClientRoot, relativeFileName);
-		File file2 = new File(eclipseClientRoot, relativeFileName);
-		
-		assertEquals(file1.exists(),file2.exists());
-		
-		if (!file1.exists()) {
-			return;
-		}
-		
-		// Call the "clean-up-delete" that cares about deleting the
-		// cache
-		if (file1.isDirectory()) {
-			delete(Session.getManagedFolder(file1));
-			delete(Session.getManagedFolder(file2));
-		} else {
-			delete(Session.getManagedFile(file1));
-			delete(Session.getManagedFile(file2));
-		}
-	}
-	
-	/**
-	 * Create a folder and all the subfolders 
-	 * in both of the directories
-	 */
-	public void mkdirs(String folderName) {	
-		(new File(referenceClientRoot,folderName)).mkdirs();
-		(new File(eclipseClientRoot,folderName)).mkdirs();
-	}
-	
-	/**
-	 * Append a String to an file (acctally to both of the files, that are going
-	 * to have the same content)
-	 */
-	public void appendToFile(String relativeFileName, String txt) throws IOException {	
-		File file1 = new File(referenceClientRoot,relativeFileName);
-		File file2 = new File(eclipseClientRoot,relativeFileName);
-
-		// Wait a second so that the timestamp will change for sure
-		//waitMsec(1100);
-		
-		appendToFile(file1,txt);
-		appendToFile(file2,txt);
-	}
-	
-	/**
-	 * Write to the file (acctally to both of the files, that are going
-	 * to have the same content)
-	 * Does create the underlying folder if they do not exist (the version
-	 * of JUnitTest does currently not)
-	 */
-	public void writeToFile(String relativeFileName, String[] content) throws IOException {	
-		
-		File file1 = new File(referenceClientRoot,relativeFileName);
-		File file2 = new File(eclipseClientRoot,relativeFileName);
-		
-		file1.getParentFile().mkdirs();
-		file2.getParentFile().mkdirs();
-
-		writeToFile(file1,content);
-		writeToFile(file2,content);
-	}		
-
-	/**
-	 * Deep compare of two ManagedResources (most likly folders).
-	 * Passwords are ignored.
-	 * 
-	 * @param ignoreTimestamp if true timestamps of
-	           files are ignored for the comparison
-	 */
-	public static void assertEquals(ICVSResource mResource1, 
-										ICVSResource mResource2) 
-										throws CVSException {
-		
-		assertEquals(mResource1.isFolder(), mResource2.isFolder());
-		assertEquals(mResource1.isManaged() , mResource2.isManaged());
-		assertEquals(mResource1.exists(), mResource2.exists());
-		
-		if (!mResource1.exists()) {
-			return;
-		}
-		
-		if (mResource1.isFolder()) {
-			assertEquals((ICVSFolder)mResource1,(ICVSFolder)mResource2);
-		} else {
-			assertEquals((ICVSFile)mResource1,(ICVSFile)mResource2);
-		}	
-	}	
-	
-	/**
-	 * Assert that two CVSFile's are equal by comparing the content
-	 * and the metainformation out of the ResourceSync.
-	 */
-	private static void assertEquals(ICVSFile mFile1, ICVSFile mFile2) throws CVSException {
-		
-		// Check the permissions on disk
-		assertEquals(getFile(mFile1).canWrite(), getFile(mFile2).canWrite());
-					
-		// Compare the content of the files
-		try {
-			InputStream in1 = new FileInputStream(getFile(mFile1)); 
-			InputStream in2 = new FileInputStream(getFile(mFile2)); 
-			byte[] buffer1 = new byte[(int)mFile1.getSize()];
-			byte[] buffer2 = new byte[(int)mFile2.getSize()];
-			// This is not the right way to do it, because the Stream
-			// may read less than the whoole file
-			in1.read(buffer1);
-			in2.read(buffer2);
-			in1.close();
-			in2.close();
-			assertEquals(buffer1.length,buffer2.length);
-			assertEquals(new String(buffer1),new String(buffer2));
-		} catch (IOException e) {
-			throw new CVSException("Error in TestCase");
-		}
-
-		// We can not do the ceck, because the reference client does
-		// check out dirty files ?!?
-		// assertEquals(mFile1.isDirty(),mFile2.isDirty());
-		
-		assertEquals(mFile1.getSyncInfo() == null,mFile2.getSyncInfo() == null);
-		if (mFile1.getSyncInfo() == null) {
-			return;
-		}
-		
-		ResourceSyncInfo info1 = mFile1.getSyncInfo();
-		ResourceSyncInfo info2 = mFile2.getSyncInfo();
-		
-		assertEquals(info1.getKeywordMode(), info2.getKeywordMode());
-		assertEquals(info1.getTag(), info2.getTag());
-		assertEquals(info1.getName(), info2.getName());
-		assertEquals(info1.getRevision(), info2.getRevision());
-		
-		// Ensure that timestamps are written in ISO C asctime() format and if timestamp
-		// has a conflict marker then both should have the marker. Also ensure that timestamps
-		// are written using same timezone.
-		assertTimestampEquals(info1.getTimeStamp(), info2.getTimeStamp());
-		
-		// We are not able to check for the permissions, as the reference-client doesn't save them
-	}
-
-	private static void assertTimestampEquals(String timestamp1, String timestamp2) {
-		try {			
-			EntryFileDateFormat timestampFormat = new EntryFileDateFormat();
-			boolean merge1 = timestamp1.indexOf(ResourceSyncInfo.RESULT_OF_MERGE) != -1;
-			boolean merge2 = timestamp2.indexOf(ResourceSyncInfo.RESULT_OF_MERGE) != -1;
-			boolean dummy1 = timestamp1.indexOf(ResourceSyncInfo.DUMMY_TIMESTAMP) != -1;
-			boolean dummy2 = timestamp2.indexOf(ResourceSyncInfo.DUMMY_TIMESTAMP) != -1;
-			assertEquals("both timestamps should show same conflict state", merge1, merge2);
-			assertEquals("both timestamps should show same dummy state", dummy1, dummy2);
-			if(!merge1 && !dummy1) {
-				long time1 = timestampFormat.toDate(timestamp1).getTime();
-				long time2 = timestampFormat.toDate(timestamp2).getTime();
-				/* timestamp tests don't seem to work on some systems.
-				long difference = Math.abs(time1 - time2);
-				assertTrue("timestamps should be in same timezone:" + timestamp1 + ":" + timestamp2, difference < (5*60*1000)); // 5 minutes
-				*/
-			}
-		} catch(ParseException e) {			
-			fail("timestamps in CVS/Entry file are not in ISO C asctime format:" + timestamp1 + ":" + timestamp2);
-		}
-	}
-	
-	/**
-	 * Assert that two CVSFile's are equal. First the 
-	 * metainformation out of the FolderSync for this 
-	 * folder is compared, then the amount of children is 
-	 * checked and finally the recussion is started to
-	 * compare the children of this folder.
-	 */
-	private static void assertEquals(ICVSFolder mFolder1, 
-										ICVSFolder mFolder2) 
-										throws CVSException {
-
-		assertEquals(mFolder1.isCVSFolder(),mFolder2.isCVSFolder());
-		
-		if (mFolder1.isCVSFolder()) {
-			String root1 = Util.removePassword(mFolder1.getFolderSyncInfo().getRoot());
-			String root2 = Util.removePassword(mFolder2.getFolderSyncInfo().getRoot());
-			root1 = root1.substring(0,root1.lastIndexOf("@"));
-			root2 = root2.substring(0,root2.lastIndexOf("@"));
-			assertEquals(root1,root2);
-			
-			assertEquals(mFolder1.getFolderSyncInfo().getRepository(),mFolder2.getFolderSyncInfo().getRepository());
-			assertEquals(mFolder1.getFolderSyncInfo().getIsStatic(),mFolder2.getFolderSyncInfo().getIsStatic());
-			assertEquals(mFolder1.getFolderSyncInfo().getTag(),mFolder2.getFolderSyncInfo().getTag());
-		}
-		
-		ICVSResource[] resourceList1;
-		ICVSResource[] resourceList2;
-		boolean fileFound;
-		
-		resourceList1 = mFolder1.getFiles();
-		resourceList2 = mFolder2.getFiles();
-		assertEquals(resourceList1.length,resourceList2.length);
-		for (int i=0; i<resourceList1.length; i++) {
-			fileFound = false;
-			for (int j=0; j<resourceList2.length; j++) {
-				if (resourceList1[i].getName().equals(resourceList2[j].getName())) {
-					assertEquals(resourceList1[i], resourceList2[j]);
-					fileFound = true;
-					break;
-				}
-			}
-			assertTrue("File " + resourceList1[i].getName() + " not found in the list",fileFound);
-		}
-		
-		resourceList1 = mFolder1.getFolders();
-		resourceList2 = mFolder2.getFolders();
-		assertEquals(resourceList1.length,resourceList2.length);
-		for (int i=0; i<resourceList1.length; i++) {
-			fileFound = false;
-			for (int j=0; j<resourceList2.length; j++) {
-				if (resourceList1[i].getName().equals(resourceList2[j].getName())) {
-					assertEquals(resourceList1[i], resourceList2[j]);
-					fileFound = true;
-					break;
-				}
-			}
-			assertTrue("Folder " + resourceList1[i].getName() + " not found in the list",fileFound);
-		}
-	}
-	
-	/**
-	 * Sets whether Exceptions that are thrown in the execution of both of the clients are
-	 * catched or thrown to the upper level. If the exceptions are catched the result of the 
-	 * reference-client and this client are compared as if the execution succseded.
-	 */
-	public void setIgnoreExceptions(boolean ignoreExceptions) {
-		this.ignoreExceptions = ignoreExceptions;
-	}
-}
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/AllTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/AllTests.java
deleted file mode 100644
index 19c7aca..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/AllTests.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.cvsresources;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import junit.awtui.TestRunner;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-public class AllTests extends TestSuite {
-
-
-	public static void main(String[] args) {
-		
-		TestRunner.run(AllTests.class);
-	}
-	
-	public static Test suite() {	
-		TestSuite suite = new TestSuite();
-		
-		suite.addTest(LocalFileTest.suite());
-		suite.addTest(LocalFolderTest.suite());
-		suite.addTest(ResourceSyncInfoTest.suite());
-		suite.addTest(SynchronizerTest.suite());
-    	return suite; 	
-	}	
-	
-	public AllTests(String name) {
-		super(name);
-	}
-	
-	public AllTests() {
-		super();
-	}
-}
-
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/LocalFileTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/LocalFileTest.java
deleted file mode 100644
index d7fcb0e..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/LocalFileTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.cvsresources;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.io.PipedInputStream;
-import java.io.PipedOutputStream;
-
-import junit.awtui.TestRunner;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.resources.LocalResource;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-
-public class LocalFileTest extends JUnitTestCase {
-	
-	ICVSFile file1;
-	ICVSFile file1a;
-	ICVSFile file2;
-	ICVSFolder folder1;
-	
-	ResourceSyncInfo fileInfo1;
-	
-	File ioFile;
-	
-	
-	public LocalFileTest(String arg) {
-		super(arg);
-	}
-	
-	public static void main(String[] args) {
-		TestRunner.run(LocalFileTest.class);
-	}
-
-
-	public void setUp() throws CVSException {
-		
-		String tmpEntryLine1;
-
-
-		String root = ":server:user:pwd@test:/home";
-		String repo = "repository";		
-		folder1 = getManagedFolder("proj1");
-		folder1.mkdir();
-		folder1.setFolderSyncInfo(new FolderSyncInfo(repo,root,null,false));
-		
-		file1 = folder1.getFile("file1.txt");
-		file1a = folder1.getFile("file1.txt");
-		file2 = folder1.getFile("file2.txt");
-		
-		tmpEntryLine1 = "/.vcm_meta/1.1/Thu Sep 27 18:00:16 2001/-kb/TmyTag";
-		fileInfo1 = new ResourceSyncInfo(tmpEntryLine1,null,null);
-		
-		ioFile = getFile("proj1/file1.txt");
-		
-	}
-	
-	public void tearDown() throws CVSException {
-		folder1.delete();
-		CVSProviderPlugin.getSynchronizer().reload(((LocalResource)folder1).getLocalFile(), new NullProgressMonitor());
-		assertSynchronizerEmpty();			
-		assertTrue(!folder1.exists());
-	}
-
-	public static Test suite() {		
-		TestSuite suite = new TestSuite(LocalFileTest.class);
-    	return suite; 	
-	}
-	
-	public void testFileInfo() throws CVSException {
-		
-		String entryLine1;
-		String entryLine2;
-		String entryLine3;
-		boolean fail=false;
-	
-		entryLine1 = "/.vcm_meta/1.1/27 Sep 2001 18:00:16/-kb/TmyTag";
-		entryLine2 = "/file1.txt/1.1/27 Sep 2001 18:00:16/-kb/TmyTag";
-		entryLine3 = "/file1.txt/1.2/27 Sep 2001 18:00:16/-kb/TmyTag";
-
-		ResourceSyncInfo fileInfo1 = new ResourceSyncInfo(entryLine1,null,null);
-		ResourceSyncInfo fileInfo2 = new ResourceSyncInfo(entryLine2,null,null);
-		ResourceSyncInfo fileInfo3 = new ResourceSyncInfo(entryLine3,null,null);
-
-		file1.setSyncInfo(fileInfo2);
-		
-		assertEquals(file1a.getSyncInfo(),fileInfo2);
-	
-		file1a.setSyncInfo(fileInfo3);
-		
-		assertEquals(file1.getSyncInfo(),fileInfo3);
-	}
-	
-//	public void testSendReceive() throws Exception {
-//		
-//		String sendTxt;
-//		String expectTxt;
-//		InputStream in;
-//
-//		sendTxt = "This is my text";
-//		expectTxt = sendTxt.length() + "\n" + sendTxt;
-//		
-//		byte[] result = new byte[sendTxt.length()];
-//		
-//		PipedInputStream pIn;
-//		PipedOutputStream pOut;
-//		
-//		pIn = new PipedInputStream();
-//		pOut = new PipedOutputStream(pIn);
-//		
-//		in = new BufferedInputStream(pIn,sendTxt.length());
-//		
-//		pOut.write(sendTxt.getBytes());
-//		file1.receiveFrom(in,sendTxt.length(),false,false, new NullProgressMonitor());
-//		in.close();
-//		pOut.close();
-//		
-//		result = new byte[expectTxt.length()];
-//		pIn = new PipedInputStream();
-//		pOut = new PipedOutputStream(pIn);
-//		
-//		in = new BufferedInputStream(pIn,sendTxt.length());
-//		file1.sendTo(pOut,false, new NullProgressMonitor());
-//		in.read(result);
-//		in.close();
-//		pOut.close();
-//		
-//		assertEquals(new String(result),expectTxt);	
-//	}
-	
-	public void testTimestamp() throws Exception {
-		
-		String timeStamp;
-		
-		ioFile.createNewFile();
-		timeStamp = "Tue Oct 30 14:38:16 2001";
-		
-		file1.setTimeStamp(timeStamp);
-		assertEquals(timeStamp, file1a.getTimeStamp());
-		
-	}
-	
-	public void testIsDirty() throws Exception {
-		
-		String timeStamp;
-		String entryLine;
-		ResourceSyncInfo fileInfo;
-		
-		ioFile.createNewFile();
-		timeStamp = "Tue Oct 30 14:38:16 2001";
-		entryLine = "/file1.txt/1.1/Tue Oct 30 14:38:16 2001/-kb/TmyTag";
-		
-		file1.setTimeStamp(timeStamp);
-		timeStamp = file1.getTimeStamp();
-		
-		fileInfo = new ResourceSyncInfo(entryLine,null,timeStamp);
-		
-		file1.setSyncInfo(fileInfo);
-		
-		assertEquals(false, file1.isDirty());
-		
-		// touch the file
-		writeToFile(ioFile,readFromFile(ioFile));
-		
-		assertEquals(true, file1.isDirty());
-
-		file1.setTimeStamp(timeStamp);
-
-		assertEquals(false, file1.isDirty());	
-	}
-		
-	// ---------------- Here the resource-tests start ---------------
-	
-	public void testExists() throws Exception {
-		
-		file1.delete();
-		assertEquals(false, file1.exists());
-		writeToFile(ioFile,new String[0]);
-		assertEquals(true, file1.exists());
-		
-	}
-	
-	public void testGetName() {
-		assertEquals("file1.txt", file1.getName());	
-	}
-	
-	public void testGetParent() {
-		assertEquals(folder1,file1.getParent());	
-	}
-	
-	public void testGetRelativePath() throws CVSException {
-		assertEquals("file1.txt", file1.getRelativePath(folder1));
-	}
-	
-	public void testIsFolder() {
-		assertEquals(false, file1.isFolder());
-	}		
-
-	public void testIsManaged() throws CVSException {
-		
-		ResourceSyncInfo fileInfo2 = new ResourceSyncInfo("/file1.txt/1.1/27 Sep 2001 18:00:16/-kb/TmyTag",null,null);
-		
-		assertEquals(false, file1.isManaged());
-		file1.setSyncInfo(fileInfo2);
-		assertEquals(true, file1.isManaged());
-		
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/LocalFolderTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/LocalFolderTest.java
deleted file mode 100644
index 8c73c97..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/LocalFolderTest.java
+++ /dev/null
@@ -1,473 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.cvsresources;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.io.IOException;
-
-import junit.awtui.TestRunner;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.LocalResource;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-public class LocalFolderTest extends JUnitTestCase {
-
-	ICVSFile file1;
-	ICVSFile file1a;
-	ICVSFile file2;
-
-	ICVSFolder folder1;
-	ICVSFolder folder1a;
-	ICVSFolder folder2;
-	
-	String entryLine1;
-	String entryLine2;
-	String entryLineExtra1;
-	String entryLineExtra2;
-	String entryLineExtra3;
-	
-	String root;
-	String repo;
-	String root2;
-	String repo2;
-	
-	ResourceSyncInfo fileInfo1;
-
-	FolderSyncInfo folderInfo1;
-	FolderSyncInfo folderInfo2;
-	
-	File ioFile1;
-	
-	public LocalFolderTest(String arg) {
-		super(arg);
-	}
-	
-	public static void main(String[] args) {
-		TestRunner.run(LocalFolderTest.class);
-	}
-
-	/**
-	 * Leaves this file-structure:
-	 * 
-	 * test (folder1, folder1a)
-	 *   proj1 (folder2, ioFolder2) *** Does not exist ***
-	 *   file1.txt (file1, file1a)
-	 *   file2.txt (file2) *** Does not exist ***
-	 */
-	public void setUp() throws CVSException, IOException {
-				
-		folder1 = getManagedFolder("test");
-		folder1a = getManagedFolder("test");
-		folder2 = folder1.getFolder("proj1");
-		folder1.mkdir();
-		assertTrue(folder1.exists());
-		
-		file1 = folder1.getFile("file1.txt");
-		file1a = folder1.getFile("file1.txt");
-		file2 = folder1.getFile("file2.txt");
-		
-		root = ":server:user:pwd@test:/home";
-		repo = "repository";
-		root2 = ":method:user:pwd@test2:/home/myFolder/repo";
-		repo2 = "proj1/subdir";
-		
-		folderInfo1 = new FolderSyncInfo(repo,root,null,false);
-		folderInfo2 = new FolderSyncInfo(repo2,root2,null,true);
-		
-		entryLine1 = "/.vcm_meta/1.1/27 Sep 2001 18:00:16/-kb/TmyTag";
-		entryLine2 = "/file3.txt/1.1/27 Sep 2001 18:00:16/-kb/TmyTag";
-		entryLineExtra1 = "/file1.txt/1.1/27 Sep 2001 18:00:16/-kb/TmyTag";
-		entryLineExtra2 = "/file1.txt/1.2/27 Sep 2001 18:00:16/-kb/TmyTag";
-		entryLineExtra3 = "/file2.txt/1.2/27 Sep 2001 18:00:16/-kb/TmyTag";
-		
-		folder1.setFolderSyncInfo(folderInfo1);
-		
-		fileInfo1 = new ResourceSyncInfo(entryLineExtra1,null,null);
-		file1.setSyncInfo(fileInfo1);
-		
-		ioFile1 = getFile("test/file1.txt");
-		ioFile1.createNewFile();
-		
-	}
-	
-	public void tearDown() throws CVSException {
-		folder1.delete();
-		CVSProviderPlugin.getSynchronizer().reload(((LocalResource)folder1).getLocalFile(), new NullProgressMonitor());
-		assertSynchronizerEmpty();
-		assertTrue(!folder1.exists());
-	}
-
-	public static Test suite() {		
-		TestSuite suite = new TestSuite(LocalFolderTest.class);
-    	return suite; 	
-	}
-	
-	public void testGetFolders() throws CVSException {
-		
-		// tests setFolderSyncInfo and getFolderSyncInfo as well
-		
-		boolean fail = false;
-		ICVSFolder folder3;
-		ICVSFolder tmpFolder;
-		ICVSFolder[] resultFolders;
-		
-		folder3 = folder1.getFolder("folder3");
-		folder3.mkdir();
-		
-		resultFolders = folder2.getFolders();
-		assertEquals(0, resultFolders.length);
-		
-		// For the moment we assume, that seting a folderInfo
-		// does not create the folder automatically but you
-		// have to create it with mkdir.
-		try {
-			folder2.setFolderSyncInfo(folderInfo1);
-			fail();
-		} catch (Exception e) {			
-		}		
-				
-		resultFolders = folder1.getFolders();
-		assertEquals(1, resultFolders.length);
-		
-		folder2.mkdir();
-		
-		resultFolders = folder1.getFolders();
-		assertEquals(2, resultFolders.length);
-		
-		folder2.delete();
-
-		resultFolders = folder1.getFolders();
-		assertEquals(1, resultFolders.length);
-		
-		folder2.mkdir();
-		folder2.setFolderSyncInfo(folderInfo1);	
-		
-		resultFolders = folder1.getFolders();
-		assertEquals(2, resultFolders.length);
-		
-		folder2.delete();
-		
-		resultFolders = folder1.getFolders();
-		assertEquals(2, resultFolders.length);
-		
-		tmpFolder = folder1.getFolder("proj1");
-		assertEquals(false,tmpFolder.exists());
-		assertEquals(true,tmpFolder.isManaged());				
-	}
-	
-	public void testGetFiles() throws Exception {
-		// tests setFolderSyncInfo and getFolderSyncInfo as well
-		
-		boolean fail = false;
-		ICVSFile[] resultFiles;
-		ICVSFile file3;
-		File ioFile3;
-		ResourceSyncInfo fileInfo2;
-		
-		file3 = folder1.getFile("file3.txt");
-		ioFile3 = getFile("test/file3.txt");
-		
-		// From here we check if the filelist does include files,
-		// that are added locally but not as entries (and exclude them
-		// again when we delete them)
-		resultFiles = folder1.getFiles();
-		assertEquals(1, resultFiles.length);
-		
-		ioFile3.createNewFile();
-		
-		resultFiles = folder1.getFiles();
-		assertEquals(2, resultFiles.length);
-		
-		ioFile3.delete();
-
-		resultFiles = folder1.getFiles();
-		assertEquals(1, resultFiles.length);
-		
-		// Here is tested if we get files that do not exist locally but 
-		// in the entries
-		
-		// first we try a fileinfo with the wrong name
-		try {
-			file3.setSyncInfo(fileInfo1);
-		} catch (Throwable e) {fail = true;}		
-		assertTrue(fail);
-		fail = false;
-		
-		fileInfo2 = new ResourceSyncInfo(entryLine2,null,null);
-		
-		file3.setSyncInfo(fileInfo2);
-
-		resultFiles = folder1.getFiles();
-		assertEquals(2, resultFiles.length);
-		assertEquals(false,file3.exists());
-		assertEquals(true,file3.isManaged());
-		
-		file3.unmanage();
-		
-		resultFiles = folder1.getFiles();
-		assertEquals(1, resultFiles.length);
-		assertEquals(false,file3.exists());
-		assertEquals(false,file3.isManaged());
-	}
-	
-	public void testGetChild() throws CVSException {
-
-		try {
-			folder1.getChild("proj1");
-			assertTrue(false);
-		} catch (CVSException e) {}		
-		
-		try {
-			folder1.getChild("file2.txt");
-			assertTrue(false);
-		} catch (CVSException e) {}		
-		
-		folder2.mkdir();
-		
-		assertEquals(true, folder1.getChild("proj1").isFolder());
-		assertEquals("proj1", folder1.getChild("proj1").getName());
-		assertEquals(false, folder1.getChild("file1.txt").isFolder());
-		
-	}
-	
-	// ---------------- Here the resource-tests start ---------------
-	
-	public void testExists() throws Exception {
-		assertEquals(false, folder2.exists());
-		folder2.mkdir();
-		assertEquals(true, folder2.exists());
-		folder2.delete();
-		assertEquals(false, folder2.exists());
-	}
-	
-	public void testGetName() throws CVSException {
-		assertEquals("proj1", folder2.getName());	
-		folder2.mkdir();
-		assertEquals("proj1", folder2.getName());	
-	}
-	
-	public void testGetParent() {
-		assertEquals(folder1,folder2.getParent());
-	}
-
-	public void testGetRelativePath() throws CVSException {
-		ICVSFolder subFolder1;
-		ICVSFolder subFolder2;
-		ICVSFolder subFolder3;
-		String sep =  "/";
-		
-		boolean fail = false;
-		
-		subFolder1 = folder1.getFolder("proj1");
-		subFolder2 = subFolder1.getFolder("proj2");
-		subFolder3 = subFolder2.getFolder("proj3");
-
-		assertEquals("proj1", folder2.getRelativePath(folder1));		
-		assertEquals("testGetRelativeLocation.1","proj1", subFolder1.getRelativePath(folder1));
-		assertEquals("testGetRelativeLocation.2","proj1" + sep + "proj2" + sep + "proj3", subFolder3.getRelativePath(folder1));
-		assertEquals("testGetRelativeLocation.3","proj2", subFolder2.getRelativePath(subFolder1));
-		assertEquals("testGetRelativeLocation.3a","", subFolder2.getRelativePath(subFolder2));
-		
-		try {
-			subFolder1.getRelativePath(subFolder2);
-		} catch (CVSException e) {fail = true;}
-		assertTrue("testGetRelativeLocation.4",fail);	
-		fail = false;		
-		
-		subFolder1.delete();
-	}
-
-	public void testIsFolder() {
-		assertEquals(true, folder2.isFolder());
-	}		
-
-	public void testFolderIsManaged() throws CVSException {
-		ICVSFolder folder = getManagedFolder("testIsManaged");
-		folder.mkdir();
-		assertEquals(null, folder.getFolderSyncInfo());
-		
-		FolderSyncInfo info = new FolderSyncInfo("module", ":pserver:user@host:/home", null, false);
-		folder.setFolderSyncInfo(info);
-		assertTrue(folder.isCVSFolder() && !folder.isManaged());
-		assertTrue(folder.getFolderSyncInfo().equals(info));		
-		
-		folder.delete();
-		reload(folder);
-	}
-	
-	public void testFolderInfo() throws CVSException {
-		FolderSyncInfo folderInfo2;
-		FolderSyncInfo folderInfo3;
-		String repo;
-		String root;
-		
-		repo = "proj1/folder1";
-		root = ":pserver:nkram:pwd@fiji:/home/nkrambro/repo";
-		
-		assertEquals(null, folder2.getFolderSyncInfo());
-		assertEquals(false,folder2.isCVSFolder());
-		
-		folder1.setFolderSyncInfo(folderInfo1);
-		folderInfo2 = folder1.getFolderSyncInfo();
-		
-		assertEquals(true,folder1.isCVSFolder());	
-		assertEquals(this.root,folderInfo2.getRoot());
-		assertEquals(this.repo,folderInfo2.getRepository());
-		
-		folder1.unmanage();
-		
-		assertEquals(false,folder1.isCVSFolder());	
-		assertEquals(null,folder1.getFolderSyncInfo());	
-		
-		folderInfo3 = new FolderSyncInfo(repo,root,folderInfo2.getTag(),false);
-
-		folder1.setFolderSyncInfo(folderInfo3);
-		
-		assertEquals(root,folder1.getFolderSyncInfo().getRoot());
-		assertEquals(repo,folder1.getFolderSyncInfo().getRepository());
-		assertEquals("/home/repository",folderInfo2.getRemoteLocation());
-	}
-	
-	public void testsetSyncInfo() throws CVSException {
-		String entry1 = "/file1.txt/a/b/c/";
-		String entry2 = "/file1.txt/b/b/c/";
-		String entry3 = "/file2.txt/b/b/c/";
-		
-		ResourceSyncInfo info1 = new ResourceSyncInfo(entry1,null,null);
-		ResourceSyncInfo info2 = new ResourceSyncInfo(entry2,null,null);
-		ResourceSyncInfo info3 = new ResourceSyncInfo(entry3,null,null);
-
-		ICVSFile file1 = this.file1;
-		ICVSFile file2 = folder1.getFile("file2.txt");
-		
-		assertEquals(1,folder1.getFiles().length);
-		file1.setSyncInfo(info1);
-		assertEquals(1,folder1.getFiles().length);
-		file1.setSyncInfo(info2);
-		assertEquals(1,folder1.getFiles().length);
-		file2.setSyncInfo(info3);
-		assertEquals(2,folder1.getFiles().length);
-		
-		assertEquals(entry2,file1.getSyncInfo().getEntryLine(true));
-		assertEquals(entry3,file2.getSyncInfo().getEntryLine(true));
-		
-		// The two files in the getFiles are acctually the files
-		// we put in there
-		assertTrue( ( folder1.getFiles()[0].equals(file1) ||
-			      folder1.getFiles()[0].equals(file2)) &&
-			    ( folder1.getFiles()[1].equals(file1) ||
-			      folder1.getFiles()[1].equals(file2)));
-	}
-	
-	public void testSimpleGetFiles() throws CVSException {
-		// When a file is added to the entries it should be in the list
-		// of files afterwards ... this should be one of the current problems
-		file2.setSyncInfo(new ResourceSyncInfo(entryLineExtra3,null,null));
-		assertEquals(2,folder1.getFiles().length);
-		file2.unmanage();
-		assertEquals(1,folder1.getFiles().length);
-	}
-	
-	public void testSimpleResourceSyncInfo() throws Exception {
-		
-		assertEquals(file1a.getSyncInfo(), fileInfo1);
-		
-		file1a.setSyncInfo(new ResourceSyncInfo(entryLineExtra2,null,null));
-		
-		assertEquals(file1.getSyncInfo().getEntryLine(true),entryLineExtra2);
-		
-		file1a.setSyncInfo(new ResourceSyncInfo(entryLineExtra1,null,null));
-		
-		assertEquals(file1.getSyncInfo().getEntryLine(true),entryLineExtra1);
-		
-		file1a.setSyncInfo(new ResourceSyncInfo(entryLineExtra2,null,null));
-		
-		assertEquals(file1.getSyncInfo().getEntryLine(true),entryLineExtra2);	
-	}
-	
-	public void testSimpleFolderSyncInfo() throws Exception {
-		folder1.setFolderSyncInfo(folderInfo2);
-		assertEquals(folder1.getFolderSyncInfo().getRepository(),repo2);		
-		assertEquals(folder1.getFolderSyncInfo().getRoot(),root2);		
-		assertEquals(folder1.getFolderSyncInfo().getIsStatic(),true);
-
-		reload(folder1);
-		assertEquals(folder1.getFolderSyncInfo().getRepository(),repo2);		
-		assertEquals(folder1.getFolderSyncInfo().getRoot(),root2);		
-		assertEquals(folder1.getFolderSyncInfo().getIsStatic(),true);	
-
-		folder1.setFolderSyncInfo(folderInfo1);
-		assertEquals(folder1a.getFolderSyncInfo().getRepository(),repo);		
-		assertEquals(folder1a.getFolderSyncInfo().getRoot(),root);	
-		assertEquals(folder1a.getFolderSyncInfo().getIsStatic(),false);		
-	}
-	
-	public void testSyncIsCvsFolder() throws Exception {
-		
-		folder1.delete();
-		reload(folder1);
-		assertEquals(false,folder1.isCVSFolder());
-		
-		folder1.mkdir();
-		assertEquals(false,folder1.isCVSFolder());
-		
-		folder1.setFolderSyncInfo(folderInfo1);
-		assertEquals(true,folder1.isCVSFolder());
-		assertEquals(false,folder1.isManaged());
-		
-		assertEquals(false,folder2.isCVSFolder());
-
-		folder2.mkdir();
-		assertEquals(false,folder2.isCVSFolder());
-		assertEquals(false,folder2.isManaged());
-
-		folder2.setFolderSyncInfo(folderInfo2);
-		assertEquals(true,folder2.isCVSFolder());
-		assertEquals(true,folder2.isManaged());
-	}
-	
-	public void testNotExistingFail() throws Exception {
-		
-		ICVSFolder folder3 = folder2.getFolder("nextFolder");
-		ICVSFile file3 = folder2.getFile("file1.txt");
-
-		try {
-			folder3.setSyncInfo(new ResourceSyncInfo(folder3.getName()));
-			fail();
-		} catch (Exception e) {}
-		
-		// I do not know whether to check for null or for the
-		// file with an extended path
-		folder2.getFile("this");
-		folder2.getFolder("that");
-		
-		try {
-			folder2.getChild("this");
-			fail();
-		} catch (CVSException e) {}
-		
-		try {
-			folder2.setSyncInfo(new ResourceSyncInfo(folder2.getName()+"X"));
-			fail();
-		} catch (Exception e) {
-		}		
-	}		
-	
-	protected void reload(ICVSResource resource) throws CVSException {
-		CVSProviderPlugin.getSynchronizer().reload(((LocalResource)resource).getLocalFile(), new NullProgressMonitor());
-	}
-	
-	protected void save(ICVSResource resource) throws CVSException {
-		CVSProviderPlugin.getSynchronizer().save(((LocalResource)resource).getLocalFile(), new NullProgressMonitor());
-	}
-}
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/ResourceSyncInfoTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/ResourceSyncInfoTest.java
deleted file mode 100644
index fa157f0..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/ResourceSyncInfoTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.cvsresources;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
-import org.eclipse.team.tests.ccvs.core.EclipseTest;
-
-public class ResourceSyncInfoTest extends EclipseTest {
-
-	public ResourceSyncInfoTest() {
-		super();
-	}
-	
-	public ResourceSyncInfoTest(String name) {
-		super(name);
-	}
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(ResourceSyncInfoTest.class);
-		return new CVSTestSetup(suite);
-	}
-		
-	/**
-	 * Testing that the resource sync parses entry lines correctly.
-	 */
-	public void testEntryLineParsing() {
-		String entryLine;
-		
-		// testing malformed entry lines first
-		try {
-			new ResourceSyncInfo("//////", null, null);			
-			fail();
-		} catch(CVSException e) {
-		}
-		try {
-			new ResourceSyncInfo("//1.1///", null, null);			
-			fail();
-		} catch(CVSException e) {
-		}
-		try {
-			new ResourceSyncInfo("/file.txt////", null, null);			
-			fail();
-		} catch(CVSException e) {
-		}
-		try {
-			new ResourceSyncInfo("/file.txt//////////", null, null);			
-			fail();
-		} catch(CVSException e) {
-		}
-	}
-	
-	/**
-	 * Testing that the entry line constructor
-	 */
-	public void testEntryLineConstructor() {		
-		try {
-			ResourceSyncInfo info;
-			info = new ResourceSyncInfo("/file.java/1.1/27 Sep 2001 18:00:16/-k/", null, null);
-			info = new ResourceSyncInfo("/file.java/-1.1/27 Sep 2001 18:00:16/-k/", null, null);
-			assertTrue(info.isDeleted());
-			
-			info = new ResourceSyncInfo("/file.java/0/27 Sep 2001 18:00:16/-k/", null, null);
-			assertTrue(info.isAdded());
-			
-			info = new ResourceSyncInfo("/file.java/1.0/27 Sep 2001 18:00:16/-k/Tv1", null, null);
-			assertTrue(info.getTag() != null);
-			
-			String timestamp = "10 Sep 2000 18:00:16";
-			info = new ResourceSyncInfo("/file.java/1.0/27 Sep 2001 18:00:16/-k/Tv1", null, timestamp);
-			assertTrue(info.getTimeStamp().equals(timestamp));
-			
-			info = new ResourceSyncInfo("/file.java/0/27 Sep 2001 18:00:16/-k/", null, timestamp);
-			assertTrue(info.getTimeStamp().equals(ResourceSyncInfo.DUMMY_TIMESTAMP));
-			
-			String permissions = "u=rwx,g=rwx,o=rwx";
-			info = new ResourceSyncInfo("/file.java/2.0/27 Sep 2001 18:00:16/-k/Tv1", permissions, null);
-			assertTrue(info.getPermissions().equals(permissions));
-			
-			info = new ResourceSyncInfo("D/file.java////", null, null);
-			assertTrue(info.isDirectory());
-			
-		} catch(CVSException e) {
-			fail("end");
-		}
-	}
-	
-	/**
-	 * Testing the parameter constructor
-	 */
-	public void testConstructor() {
-		ResourceSyncInfo info;
-		
-		info = new ResourceSyncInfo("folder");
-		assertTrue(info.isDirectory());
-		
-		info = new ResourceSyncInfo("file.txt", "-2.34", "27 Sep 2001 18:00:16", "", null, "");
-		assertTrue(info.isDeleted());
-		assertTrue(info.getRevision().equals("2.34"));
-		
-		info = new ResourceSyncInfo("file.txt", "0", "27 Sep 2001 18:00:16", "", null, "");
-		assertTrue(info.isAdded());
-		
-		CVSTag tag = new CVSTag("v1", CVSTag.VERSION);
-		info = new ResourceSyncInfo("file.txt", "1.1", "27 Sep 2001 18:00:16", "", tag, "");
-		CVSTag newTag = info.getTag();
-		assertTrue(newTag.getName().equals(tag.getName()) && newTag.getType() == tag.getType());
-		assertTrue(info.getRevision().equals("1.1"));
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/SynchronizerTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/SynchronizerTest.java
deleted file mode 100644
index f639f63..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/SynchronizerTest.java
+++ /dev/null
@@ -1,253 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.cvsresources;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFile;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFile;
-import org.eclipse.team.internal.ccvs.core.resources.LocalFolder;
-import org.eclipse.team.internal.ccvs.core.resources.LocalResource;
-import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
-import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
-import org.eclipse.team.internal.ccvs.core.util.SyncFileUtil;
-import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
-import org.eclipse.team.tests.ccvs.core.EclipseTest;
-
-public class SynchronizerTest extends EclipseTest {
-
-	public SynchronizerTest() {
-		super();
-	}
-	
-	public SynchronizerTest(String name) {
-		super(name);
-	}
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(SynchronizerTest.class);
-		return new CVSTestSetup(suite);
-	}
-	
-	protected File getSyncFile(File parent, String syncFileName) {
-		return new File(SyncFileUtil.getCVSSubdirectory(parent), syncFileName);
-	}
-	
-	protected void appendLineToFile(File file, String line) throws IOException {
-
-		BufferedReader fileReader;
-		List fileContentStore = new ArrayList();
-		
-		if (!file.exists()) {
-			return;
-		}
-		
-		String l;
-		fileReader = new BufferedReader(new FileReader(file));
-		while ((l = fileReader.readLine()) != null) {
-			fileContentStore.add(l);
-		}
-		fileReader.close();			
-
-		String[] content = (String[]) fileContentStore.toArray(new String[fileContentStore.size()]);
-		String[] newContent;
-		
-		newContent = new String[content.length + 1];
-		System.arraycopy(content,0,newContent,0,content.length);
-		newContent[content.length] = line;
-		
-		file.delete();
-				
-		BufferedWriter fileWriter;
-		
-		fileWriter = new BufferedWriter(new FileWriter(file));
-		for (int i = 0; i<newContent.length; i++) {
-			fileWriter.write(newContent[i]);
-			fileWriter.newLine();
-		}
-		fileWriter.close();
-	}
-	
-	public void testFolderSync() throws CoreException, CVSException  {
-		IProject project = getUniqueTestProject("testFolderSync");
-		IResource[] resources = buildResources(project, new String[] {"a.txt", "folder1/", "folder1/b.txt", "folder2/", "folder2/c.txt"}, true);
-		ensureExistsInFileSystem(resources);
-		IFolder folder1 = project.getFolder("folder1");
-		IFolder folder2 = project.getFolder("folder2");
-		File folder1File = folder1.getLocation().toFile();
-		File folder2File = folder2.getLocation().toFile();
-		File projectFile = project.getLocation().toFile();
-		ICVSResource cvsProject = new LocalFolder(projectFile);
-		
-		// 1.
-				
-		try {
-			CVSProviderPlugin.getSynchronizer().setFolderSync(new File("dummy"), new FolderSyncInfo("repo", "root", null, false));
-			fail();
-		} catch(Exception e) {
-		}
-		
-		// 2. 
-		
-		FolderSyncInfo info = new FolderSyncInfo("repo", "root", null, false);
-		CVSProviderPlugin.getSynchronizer().setFolderSync(projectFile, info);
-		assertTrue(CVSProviderPlugin.getSynchronizer().getFolderSync(projectFile).equals(info));
-		assertTrue(CVSProviderPlugin.getSynchronizer().members(projectFile).length == 0);
-		
-		// 3.
-		
-		info = new FolderSyncInfo("repo", "root", new CVSTag("v1", CVSTag.BRANCH), true);
-		CVSProviderPlugin.getSynchronizer().setFolderSync(folder1File, info);
-		assertTrue(CVSProviderPlugin.getSynchronizer().getFolderSync(folder1File).equals(info));
-		assertTrue(CVSProviderPlugin.getSynchronizer().members(projectFile).length == 1);
-						
-		// 4. 
-		
-		CVSProviderPlugin.getSynchronizer().setFolderSync(folder2File, info);
-		assertTrue(CVSProviderPlugin.getSynchronizer().getFolderSync(folder2File).equals(info));
-		assertTrue(CVSProviderPlugin.getSynchronizer().members(projectFile).length == 2);
-	}
-
-	public void testDeleteListener() throws CoreException, CVSException, TeamException {
-		IProject project = createProject("testDeleteListener", new String[] {"a.txt", "folder1/", "folder1/b.txt"});
-		IFolder folder1 = project.getFolder("folder1");
-		IFile file1 = folder1.getFile("b.txt");
-		ICVSFolder cvsFolder = new LocalFolder(folder1.getLocation().toFile());
-		ICVSFolder cvsProject = new LocalFolder(project.getLocation().toFile());
-		ICVSFile cvsfile  = new LocalFile(file1.getLocation().toFile());
-		
-		// 1. delete of a folder deletes sync info deep
-		
-		FolderSyncInfo info = cvsFolder.getFolderSyncInfo();
-		assertTrue(info!=null);
-		
-		folder1.delete(true, new NullProgressMonitor());
-		
-		assertTrue(cvsFolder.getFolderSyncInfo()==null);
-		assertTrue(cvsfile.getSyncInfo()==null);				
-		
-		// 2. rename of a project deletes cached sync info of source project
-		
-		project.move(new Path("movedProject"), true, new NullProgressMonitor());
-		
-		assertTrue(cvsProject.getFolderSyncInfo()==null);
-	}
-	
-	public void testResourceSync() throws CVSException, CoreException, TeamException {
-		IProject project = createProject("testResourceSync", new String[] {"a.txt", "folder1/", "folder1/b.txt"});
-		IFolder folder1 = project.getFolder("folder1");
-		IFile file1 = project.getFile("a.txt");
-		IFile newFile = folder1.getFile("c.txt");
-		IFolder newFolder = project.getFolder("folder2");
-		ICVSFolder cvsFolder = new LocalFolder(folder1.getLocation().toFile());
-		ICVSFolder cvsNewFolder = new LocalFolder(newFolder.getLocation().toFile());
-		ICVSFile cvsFile = new LocalFile(file1.getLocation().toFile());
-		ICVSFile cvsNewFile = new LocalFile(newFile.getLocation().toFile());
-		ICVSFolder cvsProject = new LocalFolder(project.getLocation().toFile());
-		
-		// 1.
-		
-		assertTrue(!cvsProject.isManaged());
-		assertTrue(cvsProject.isCVSFolder());
-		assertTrue(cvsFile.getSyncInfo()!=null);
-		assertTrue(cvsFolder.getSyncInfo()!=null);		
-		
-		assertTrue(cvsNewFile.getSyncInfo()==null);
-		assertTrue(cvsNewFolder.getSyncInfo()==null);
-				
-		// 2.
-		
-		ResourceSyncInfo folderInfo = new ResourceSyncInfo(cvsNewFolder.getName());
-		ResourceSyncInfo fileInfo = new ResourceSyncInfo(cvsNewFile.getName(), "1.1", "timestamp", "-kb", null, null);
-		
-		cvsNewFile.setSyncInfo(fileInfo);
-		cvsNewFolder.setSyncInfo(folderInfo);
-		
-		assertTrue(cvsNewFile.getSyncInfo().equals(fileInfo));
-		assertTrue(cvsNewFolder.getSyncInfo().equals(folderInfo));
-		
-		save(cvsProject);
-		
-		assertTrue(cvsNewFile.getSyncInfo().equals(fileInfo));
-		assertTrue(cvsNewFolder.getSyncInfo().equals(folderInfo));
-	}	
-	
-	public void testReload() throws CVSException, CoreException, TeamException, IOException {
-		IProject project = createProject("testReload", new String[] {"a.txt", "folder1/", "folder1/b.txt", "folder2/", "folder2/folder2a/", "folder2/folder2a/b.txt", "folder3/b.txt"});
-		
-		File projectFile = project.getLocation().toFile();
-		IFile newFile = project.getFile("b.txt");
-		newFile.create(getRandomContents(), true, null);
-		IFolder folder1 = project.getFolder("folder1");
-		IFolder newFolder = project.getFolder("newFolder");
-		newFolder.create(true, true, null);
-		ICVSFolder cvsProject = new LocalFolder(project.getLocation().toFile());
-		ICVSFile cvsNewFile = new LocalFile(newFile.getLocation().toFile());
-		ICVSFolder cvsNewFolder = new LocalFolder(newFolder.getLocation().toFile());
-		ICVSFolder cvsFolder = new LocalFolder(folder1.getLocation().toFile());
-
-		// 1. update entry from outside of synchronizer then reload
-		assertTrue(cvsNewFile.getSyncInfo()==null);
-		assertTrue(cvsNewFolder.getSyncInfo()==null);
-		assertTrue(cvsFolder.getFolderSyncInfo()!=null);
-		
-		ResourceSyncInfo fileInfo = new ResourceSyncInfo("/b.txt/1.1/Thu Aug 30 15:31:40 2001/-kb/", null, null);
-		ResourceSyncInfo folderInfo = new ResourceSyncInfo("newFolder");
-
-		folder1.delete(true, true, null);
-
-		appendLineToFile(getSyncFile(project.getLocation().toFile(), SyncFileUtil.ENTRIES), fileInfo.getEntryLine(true));
-		appendLineToFile(getSyncFile(project.getLocation().toFile(), SyncFileUtil.ENTRIES), folderInfo.getEntryLine(true));
-		
-		reload(cvsProject);
-		
-		assertTrue(cvsNewFile.getSyncInfo().equals(fileInfo));
-		assertTrue(cvsNewFolder.getSyncInfo().equals(folderInfo));		
-		assertTrue(cvsFolder.getFolderSyncInfo()==null);		
-		assertTrue(new LocalFile(new File(folder1.getLocation().toFile(), "b.txt")).getSyncInfo()==null);
-		
-		// 2. delete multiple directory hierarchy and reload should delete everything from cache
-		IFolder folder2 = project.getFolder("folder2");
-		IFolder folder2a = folder2.getFolder("folder2a");
-		ICVSFolder folder2aFile = new LocalFolder(folder2a.getLocation().toFile());
-		ICVSFolder folder2File = new LocalFolder(folder2.getLocation().toFile());
-		
-		folder2File.unmanage();
-		assertTrue(folder2File.exists());
-		assertTrue(folder2File.getSyncInfo()==null);
-		assertTrue(folder2aFile.getSyncInfo()==null);
-		assertTrue(folder2File.getFolderSyncInfo()==null);
-		assertTrue(folder2File.getFolderSyncInfo()==null);
-	}
-	
-	protected void reload(ICVSResource resource) throws CVSException {
-		CVSProviderPlugin.getSynchronizer().reload(((LocalResource)resource).getLocalFile(), new NullProgressMonitor());
-	}
-	
-	protected void save(ICVSResource resource) throws CVSException {
-		CVSProviderPlugin.getSynchronizer().save(((LocalResource)resource).getLocalFile(), new NullProgressMonitor());
-	}
-}
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTests.java
deleted file mode 100644
index c8dbe67..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTests.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.provider;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
-import org.eclipse.team.tests.ccvs.core.EclipseTest;
-
-/**
- * @version 	1.0
- * @author 	${user}
- */
-public class AllTests extends EclipseTest {
-
-	/**
-	 * Constructor for AllTests.
-	 */
-	public AllTests() {
-		super();
-	}
-
-	/**
-	 * Constructor for AllTests.
-	 * @param name
-	 */
-	public AllTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite();
-		//suite.addTestSuite(ModuleTest.class);
-		suite.addTest(ImportTest.suite());
-		suite.addTest(CVSProviderTest.suite());
-		suite.addTest(RemoteResourceTest.suite());
-		suite.addTest(SyncElementTest.suite());
-		return new CVSTestSetup(suite);
-	}
-}
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProviderTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProviderTest.java
deleted file mode 100644
index a8c672c..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProviderTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.provider;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.IOException;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
-import org.eclipse.team.tests.ccvs.core.EclipseTest;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-/*
- * This class tests both the CVSProvider and the CVSTeamProvider
- */
-public class CVSProviderTest extends EclipseTest {
-
-	/**
-	 * Constructor for CVSProviderTest
-	 */
-	public CVSProviderTest() {
-		super();
-	}
-
-	/**
-	 * Constructor for CVSProviderTest
-	 */
-	public CVSProviderTest(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(CVSProviderTest.class);
-		return new CVSTestSetup(suite);
-		//return new CVSTestSetup(new CVSProviderTest("testPruning"));
-	}
-	
-	public void testAddAndDelete() throws TeamException, CoreException {
-		// Not supported yet
-	}
-	
-	public void testCheckin() throws TeamException, CoreException, IOException {
-		IProject project = createProject("testCheckin", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" });
-		
-		// Perform some operations on the project
-		IResource[] newResources = buildResources(project, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false);
-		IFile file = project.getFile("changed.txt");
-		JUnitTestCase.waitMsec(1500);
-		file.setContents(getRandomContents(), false, false, null);
-		getProvider(project).add(newResources, IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-		getProvider(project).delete(new IResource[] {project.getFile("deleted.txt")}, DEFAULT_MONITOR);
-		assertIsModified("testDeepCheckin: ", newResources);
-		assertIsModified("testDeepCheckin: ", new IResource[] {project.getFile("deleted.txt"), project.getFile("changed.txt")});
-		getProvider(project).checkin(new IResource[] {project}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-		assertLocalStateEqualsRemote(project);
-	}
-	
-	public void testMoved() throws TeamException, CoreException {
-		// Not supported yet
-	}
-	
-	public void testUpdate() throws TeamException, CoreException, IOException {
-		// Create a test project, import it into cvs and check it out
-		IProject project = createProject("testUpdate", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" });
-
-		// Check the project out under a different name
-		IProject copy = checkoutCopy(project, "-copy");
-		
-		// Perform some operations on the copy
-		addResources(copy, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false);
-		IFile file = copy.getFile("changed.txt");
-		file.setContents(getRandomContents(), false, false, null);
-		getProvider(copy).delete(new IResource[] {copy.getFile("deleted.txt")}, DEFAULT_MONITOR);
-		
-		// Commit the copy and update the project
-		getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-		getProvider(project).update(new IResource[] {project}, Command.NO_LOCAL_OPTIONS, null, null, DEFAULT_MONITOR);
-		assertEquals(project, copy);
-	}
-	
-	public void testVersionTag() throws TeamException, CoreException, IOException {
-		
-		// Create a test project, import it into cvs and check it out
-		IProject project = createProject("testTag", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" });
-		
-		// Perform some operations on the copy and commit
-		IProject copy = checkoutCopy(project, "-copy");
-		addResources(copy, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false);
-		changeResources(copy, new String[] {"changed.txt"}, false);
-		deleteResources(copy, new String[] {"deleted.txt"}, false);
-		checkinResources(copy, true);
-		
-		// Tag the original, checkout the tag and compare with original
-		CVSTag v1Tag = new CVSTag("v1", CVSTag.VERSION);
-		getProvider(project).tag(new IResource[] {project}, IResource.DEPTH_INFINITE, v1Tag, DEFAULT_MONITOR);
-		IProject v1 = checkoutCopy(project, v1Tag);
-		assertEquals(project, v1);
-		
-		// Update original to HEAD and compare with copy including tags
-		updateProject(project, null, false);
-		assertEquals(project, copy, false, true);
-		
-		// Update copy to v1 and compare with the copy (including tag)
-		updateProject(copy, v1Tag, false);
-		assertEquals(copy, v1, false, true);
-		
-		// Update copy back to HEAD and compare with project (including tag)
-		updateProject(copy, CVSTag.DEFAULT, false);
-		assertEquals(project, copy, false, true);
-	}
-	
-	public void testBranchTag() throws TeamException, CoreException, IOException {
-	}
-	 
-	public void testPruning() throws TeamException, CoreException, IOException {
-		// Create a project with empty folders
-		CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(false);
-		IProject project = createProject("testPruning", new String[] { "file.txt", "folder1/", "folder2/folder3/" });
-
-		// Disable pruning, checkout a copy and ensure original and copy are the same
-		IProject copy = checkoutCopy(project, "-copy");
-		assertEquals(project, copy); 
-
-		// Enable pruning, update copy and ensure emtpy folders are gone
-		CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(true);
-		updateProject(copy, null, false);
-		assertDoesNotExistInFileSystem(new IResource[] {copy.getFolder("folder1"), copy.getFolder("folder2"), copy.getFolder("folder2/folder3")});
-		
-		// Checkout another copy and ensure that the two copies are the same (with pruning enabled)
-		IProject copy2 = checkoutCopy(project, "-copy2");
-		assertEquals(copy, copy2); 
-		
-		// Disable pruning, update copy and ensure directories come back
-		CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(false);
-		updateProject(copy, null, false);
-		assertEquals(project, copy);
-		
-		// Enable pruning again since it's the default
-		CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(true);
-	}
-
-	public void testGet() throws TeamException, CoreException, IOException {
-		
-		// Create a project
-		IProject project = createProject("testGet", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" });
-		
-		// Checkout a copy and modify locally
-		IProject copy = checkoutCopy(project, "-copy");
-		addResources(copy, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false);
-		deleteResources(copy, new String[] {"deleted.txt"}, false);
-		IFile file = copy.getFile("changed.txt");
-		file.setContents(getRandomContents(), false, false, null);
-
-		// get the remote conetns
-		getProvider(copy).get(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-		assertEquals(project, copy);
-	}
-
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CommandsTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CommandsTest.java
deleted file mode 100644
index 23b2fc7..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CommandsTest.java
+++ /dev/null
@@ -1,513 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.provider;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.util.FileUtil;
-import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-/**
- * This class tests the basic functionality of the Eclipse CVS client
- * and can be used to test basic sanity.
- * 
- * It does not run against another cvs client.
- */
-public class CommandsTest extends JUnitTestCase {
-
-
-	static final String PLATFORM_NEWLINE = System.getProperty("line.separator");
-		
-	private File ioFolder1;
-	private File ioFolder2;
-	private File ioFolder3;
-	private File ioFolder4;
-	
-	private String[] arguments;
-	
-	private boolean isSetUp = false;
-	
-	public static void main(String[] args) {	
-		run(CommandsTest.class);
-	}
-	
-	public void setUp() throws Exception {
-		if (!isSetUp) {
-			try {
-				magicSetUpRepo("proj1", new String[] { "folder1/c.txt", "folder1/d.txt", "folder2/test.flag"});
-			} catch (Exception e) {
-				System.err.println("Could not setup repository");
-			}
-			isSetUp = true;
-		}
-		ioFolder1 = getFile("test1");
-		ioFolder2 = getFile("test2");
-		ioFolder3 = getFile("test2/proj1");
-		ioFolder4 = getFile("test2/proj1/folder1");
-		
-		FileUtil.deepDelete(ioFolder1);
-		FileUtil.deepDelete(ioFolder2);
-		ioFolder1.mkdir();
-		ioFolder2.mkdir();
-		
-	}
-	
-	public void tearDown() throws CVSException {
-		FileUtil.deepDelete(ioFolder1);
-		FileUtil.deepDelete(ioFolder2);
-	}
-	
-	public CommandsTest() {
-		super("CommandsTest");
-		arguments = new String[]{"proj1"};
-	}
-	
-	public CommandsTest(String name) {
-		super(name);
-		arguments = new String[]{"proj1"};
-	}
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(CommandsTest.class);
-		return new CVSTestSetup(suite);
-	}
-	
-	/**
-	 * This should somehow create the following file-structure:
-	 * 
-	 * temp
-	 *   test1
-	 *     proj1
-	 *       CVS
-	 *       folder1
-	 *         CVS
-	 *         c.txt
-	 *         d.txt
-	 *       folder2
-	 *         CVS
-	 *         test.flag
-	 *   test2
-	 *     proj1
-	 *       CVS
-	 *       folder1
-	 *         CVS
-	 *         c.txt
-	 *         d.txt
-	 *       folder2
-	 *         CVS
-	 *         test.flag
-	 * 
-	 * where the cvs-folder contains the appropiate files including
-	 * the appropiated Entries-files
-	 */
-	public void subTestCeckout() throws CVSException {
-
-		execute("co",globalOptions, 
-							EMPTY_ARGS, 
-							arguments, 
-							ioFolder1, 
-							monitor,
-							System.err);
-
-		execute("co",globalOptions, 
-							EMPTY_ARGS, 
-							arguments, 
-							ioFolder2, 
-							monitor,
-							System.err);
-	}
-	
-	public void testCommitFiles() throws Exception {
-		subTestCeckout();
-		subTestCommitUpdate();
-	}
-	
-	/**
-	 * Made for checking the ability of the client to cope with 
-	 * multible folders and files as arguments
-	 */
-	public void testDoubleRound() throws Exception {
-		
-		File folder1;
-		File folder2;
-		
-		File file1a;
-		File file2a;
-		File file3a;
-		File file4a;
-
-		File file1b;
-		File file2b;
-		File file3b;
-		File file4b;
-
-		folder1 = ioFolder1;
-		folder2 = ioFolder2;
-		
-		file1a = new File(folder1,"coProject1/a.txt");
-		file2a = new File(folder1,"coProject2/a.txt");
-		file3a = new File(folder2,"coProject1/a.txt");
-		file4a = new File(folder2,"coProject2/a.txt");
-
-		file1b = new File(folder1,"coProject1/f1/b.txt");
-		file2b = new File(folder1,"coProject2/f1/b.txt");
-		file3b = new File(folder2,"coProject1/f1/b.txt");
-		file4b = new File(folder2,"coProject2/f1/b.txt");
-		
-		
-		// Do the setup ...
-		magicSetUpRepo("coProject1",new String[]{"a.txt","f1/b.txt","f1/c.txt","f2/d.txt"});
-		magicSetUpRepo("coProject2",new String[]{"a.txt","f1/b.txt","f1/c.txt","f2/d.txt"});
-		
-		execute("co",
-							globalOptions,
-							EMPTY_ARGS,
-							new String[]{"coProject1","coProject2"},
-							folder1,
-							monitor,
-							System.err);
-		
-		execute("co",
-							globalOptions,
-							EMPTY_ARGS,
-							new String[]{"coProject1","coProject2"},
-							folder2,
-							monitor,
-							System.err);
-		
-		// Change the two projects
-		appendToFile(file1a,"AppendIt The first");
-		appendToFile(file2a,"AppendIt The second");
-		
-		appendToFile(file1b,"AppendIt The first");
-		appendToFile(file2b,"AppendIt The second");
-		
-		// Send the two projects to the server
-		execute("ci",
-							globalOptions,
-							new String[]{"-m","msg" + PLATFORM_NEWLINE + "second Line"},
-							new String[]{"coProject1","coProject2"},
-							folder1,
-							monitor,
-							System.err);
-		
-		execute("update",
-							globalOptions,
-							EMPTY_ARGS,
-							new String[]{"coProject1","coProject2"},
-							folder2,
-							monitor,
-							System.err);
-		
-		// Look if all the changes have been done allright
-		assertEqualsArrays(readFromFile(file1a),readFromFile(file3a));
-		assertEqualsArrays(readFromFile(file2a),readFromFile(file4a));
-		
-		assertEqualsArrays(readFromFile(file1b),readFromFile(file3b));
-		assertEqualsArrays(readFromFile(file2b),readFromFile(file4b));
-		
-		
-		// Now check if the programm works with single files
-		appendToFile(file1a,"AppendIt The EXTRA");
-		appendToFile(file1b,"AppendIt The EXTRA");
-		execute("ci",
-							globalOptions,
-							new String[]{"-m","msg"},
-							new String[]{"coProject1/a.txt"},
-							folder1,
-							monitor,
-							System.err);
-		
-		execute("update",
-							globalOptions,
-							EMPTY_ARGS,
-							new String[]{"coProject1/a.txt"},
-							folder2,
-							monitor,
-							System.err);
-		
-		// It should have the 1a file updated but not the 1b file
-		// because we did not upload and commit it
-		assertEqualsArrays(readFromFile(file1a),readFromFile(file3a));
-		try {
-			assertEqualsArrays(readFromFile(file1b),readFromFile(file3b));
-			throw new IllegalArgumentException("Fail-Statment");
-		} catch (AssertionFailedError e) {}
-	}
-	
-	/**
-	 * This TestCase should maybe become simpler.
-	 * 
-	 * Anyway, it is about Up and downloading changes
-	 * without conflicts
-	 */
-	public void subTestCommitUpdate() throws Exception {
-		
-		File file1;
-		File file2;
-		String[] fileContent1;
-		// String[] fileContent2;
-		boolean fail = false;
-		GregorianCalendar calender;
-		
-		calender = new GregorianCalendar();
-		
-		fileContent1 = new String[]{"This is a ", "two-liner", calender.get(Calendar.MILLISECOND) + ""};
-		// fileContent2 = new String[]{"This is a one-liner", calender.get(Calendar.MILLISECOND) + 10 + ""};
-		
-		file1 = getFile("test1/proj1/folder1/c.txt");
-		file2 = getFile("test2/proj1/folder1/c.txt");
-				
-		// change something and commit the canges
-		// in client1
-		// writeToFile("test1/...", contents)
-		writeToFile(file1,fileContent1);
-		
-		execute("ci",globalOptions, 
-							new String[]{"-m","TestMessage"}, 
-							arguments, 
-							ioFolder1, 
-							monitor,
-							System.err);
-		
-		// test that files in client1 and client2 are unequal before
-		try {
-			assertEqualsArrays(readFromFile(file1),readFromFile(file2));
-		} catch (Throwable e) {
-			fail = true;
-		}
-		
-		assertTrue("subTestCommitUpdate.0a (This could happen by coincedence, try again) ",fail);
-		fail = false;
-
-		execute("update",globalOptions, 
-							EMPTY_ARGS, 
-							arguments, 
-							ioFolder2, 
-							monitor,
-							System.err);
-			
-		assertEqualsArrays(fileContent1,readFromFile(file2));
-				
-	}
-
-	public void testDifferentFolders() throws Exception {
-		
-		File file1;
-		File file2;
-		String[] fileContent1;
-		String[] fileContent2;
-		boolean fail = false;
-		GregorianCalendar calender;
-		
-		calender = new GregorianCalendar();
-		
-		// Init the field
-		subTestCeckout();
-
-		file1 = getFile("test1/proj1/folder1/c.txt");		
-		file2 = getFile("test2/proj1/folder1/c.txt");
-		fileContent1 = new String[]{"This is a ", "two-liner", calender.get(Calendar.MILLISECOND) + ""};
-		fileContent2 = new String[]{"This is a one-liner", calender.get(Calendar.MILLISECOND) + 10 + ""};
-		
-		// First run
-		writeToFile(file1,fileContent1);
-		
-
-		execute("ci",globalOptions, 
-							new String[]{"-m","TestMessage"}, 
-							arguments, 
-							ioFolder1, 
-							monitor,
-							System.err);
-
-		try {
-			assertEqualsArrays(readFromFile(file1),readFromFile(file2));
-		} catch (Throwable e) {
-			fail = true;
-		}
-		
-		assertTrue("testDifferentFolders.1 (This could happen by coincedence, try again) ",fail);
-		fail = false;
-		
-		// Should be able to set globalOptions to new String[0]
-		execute("update",new String[0], 
-							EMPTY_ARGS, 
-							new String[0], 
-							ioFolder4, 
-							monitor,
-							System.err);
-		
-		assertEqualsArrays(fileContent1,readFromFile(file2));
-
-		// Seconde run
-		// 
-		// wait a second to get a new timestamp and
-		// check that the resource has acctually a new timestamp
-		waitMsec(4000);
-		writeToFile(file2,fileContent2);
-		assertEquals(true, Session.getManagedFolder(ioFolder4).getFile("c.txt").isModified());
-		
-		// Should be able to set globalOptions to new String[0]
-		execute("ci",new String[0], 
-							new String[]{"-m","TestMessage"}, 
-							new String[0], 
-							ioFolder4, 
-							monitor,
-							System.err);
-
-		try {
-			assertEqualsArrays(readFromFile(file1),readFromFile(file2));
-		} catch (Throwable e) {
-			fail = true;
-		}
-		
-		assertTrue("testDifferentFolders.3 (This could happen by coincedence, try again) ",fail);
-		fail = false;
-
-		execute("update",globalOptions, 
-							EMPTY_ARGS, 
-							arguments, 
-							ioFolder1, 
-							monitor,
-							System.err);
-		
-		assertEqualsArrays(fileContent2,readFromFile(file1));
-
-	}
-	
-	public void testCommit() throws Exception {
-		
-		File ioFolder = ioFolder1;
-
-		execute("co",globalOptions, 
-							EMPTY_ARGS, 
-							arguments, 
-							ioFolder, 
-							monitor,
-							System.err);
-							
-		GregorianCalendar calender;
-		
-		
-		calender = new GregorianCalendar();
-				
-		writeToFile(getFile("test1\\proj1\\folder1\\c.txt"), new String[]{"This is my","Test",calender.get(Calendar.MILLISECOND) +""});
-		
-		execute("ci",globalOptions, 
-							new String[]{"-m","TestMessage"}, 
-							arguments, 
-							ioFolder, 
-							monitor,
-							System.err);
-	}
-	
-	public void testConnection() throws CVSException {
-
-		File ioFolder = ioFolder1;
-		
-		execute("co",globalOptions, 
-							EMPTY_ARGS, 
-							new String[]{"proj1"}, 
-							ioFolder, 
-							monitor,
-							System.err);
-		try {
-			execute("co",globalOptions, 
-							EMPTY_ARGS, 
-							new String[]{"proj1XXX"}, 
-							ioFolder, 
-							monitor,
-							System.err);
-			fail();
-		} catch (CVSException e) {}
-	}
-	
-	public void testDoubleCheckout() throws Exception {
-		
-		magicSetUpRepo("coProject1",new String[]{"a.txt","f1/b.txt","f1/c.txt","f2/d.txt"});
-		magicSetUpRepo("coProject2",new String[]{"a.txt","f1/b.txt","f1/c.txt","f2/d.txt"});
-		execute("co",
-							globalOptions,
-							EMPTY_ARGS,
-							new String[]{"coProject1","coProject2"},
-							workspaceRoot,
-							monitor,
-							System.err);
-		
-		assertTrue(getFile("coProject1/a.txt").exists());
-		assertTrue(getFile("coProject1/f1/b.txt").exists());
-		assertTrue(getFile("coProject2/a.txt").exists());
-		assertTrue(getFile("coProject2/f1/b.txt").exists());
-		
-		FileUtil.deepDelete(getFile("coProject1"));
-		FileUtil.deepDelete(getFile("coProject2"));
-				
-	}
-	
-	public void testImport() throws Exception {
-		File ioFolder = ioFolder1;
-		ICVSFolder mFolder = Session.getManagedFolder(ioFolder);
-		
-		String[] fileStructure = new String[]{"im/a.txt","im/f1/a.txt","im/f1/b.txt"};
-		createRandomFile(ioFolder,fileStructure);
-		
-		magicDeleteProject("im");
-		
-		execute("import",globalOptions,
-					   new String[]{"-m","Initial Release"},
-					   new String[]{"im","r1","r2"},
-					   getFile(mFolder.getFolder("im")),
-					   new NullProgressMonitor(),
-					   System.err);
-					   
-		execute("co",globalOptions,
-					   EMPTY_ARGS,
-					   new String[]{"im"},
-					   getFile(mFolder),
-					   new NullProgressMonitor(),
-					   System.err);
-	}
-
-	public void testUpdate() throws CVSException {
-
-		File ioFolder = ioFolder1;
-		
-		execute("co",globalOptions, 
-							EMPTY_ARGS, 
-							arguments, 
-							ioFolder, 
-							monitor,
-							System.err);
-							
-		try {
-			execute("update",globalOptions, 
-							EMPTY_ARGS, 
-							new String[0], 
-							ioFolder, 
-							monitor,
-							System.err);
-			fail();
-		} catch (CVSException e) {}
-
-		execute("update",globalOptions, 
-							EMPTY_ARGS, 
-							arguments, 
-							ioFolder, 
-							monitor,
-							System.err);
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ImportTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ImportTest.java
deleted file mode 100644
index 9ee539e..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ImportTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.provider;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.team.ccvs.core.CVSProviderPlugin;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.tests.ccvs.core.EclipseTest;
-
-/**
- * @version 	1.0
- * @author 	${user}
- */
-public class ImportTest extends EclipseTest {
-
-	/**
-	 * Constructor for ImportTest.
-	 */
-	public ImportTest() {
-		super();
-	}
-
-	/**
-	 * Constructor for ImportTest.
-	 * @param name
-	 */
-	public ImportTest(String name) {
-		super(name);
-	}
-
-	// Assert that the two containers have equal contents
-	protected void assertEquals(IContainer container1, IContainer container2) throws CoreException {
-		assertEquals(container1.getName(), container2.getName());
-		List members1 = new ArrayList();
-		members1.addAll(Arrays.asList(container1.members()));
-		members1.remove(container1.findMember("CVS"));
-		
-		List members2 = new ArrayList();
-		members2.addAll(Arrays.asList(container2.members()));
-		members2.remove(container2.findMember("CVS"));
-		
-		assertTrue(members1.size() == members2.size());
-		for (int i=0;i<members1.size();i++) {
-			IResource member1 = (IResource)members1.get(i);
-			IResource member2 = container2.findMember(member1.getName());
-			assertNotNull(member2);
-			assertEquals(member1, member2);
-		}
-	}
-	
-	// Assert that the two files have equal contents
-	protected void assertEquals(IFile file1, IFile file2) throws CoreException {
-		assertEquals(file1.getName(), file2.getName());
-		assertTrue(compareContent(file1.getContents(), file2.getContents()));
-	}
-	
-	// Assert that the two projects have equal contents ignoreing the project name
-	// and the .vcm_meta file
-	protected void assertEquals(IProject container1, IProject container2) throws CoreException {
-		List members1 = new ArrayList();
-		members1.addAll(Arrays.asList(container1.members()));
-		members1.remove(container1.findMember(".vcm_meta"));
-		members1.remove(container1.findMember("CVS"));
-		
-		List members2 = new ArrayList();
-		members2.addAll(Arrays.asList(container2.members()));
-		members2.remove(container2.findMember(".vcm_meta"));
-		members2.remove(container2.findMember("CVS"));
-		
-		assertTrue("Number of children differs for " + container1.getFullPath(), members1.size() == members2.size());
-		for (int i=0;i<members1.size();i++) {
-			IResource member1 = (IResource)members1.get(i);
-			IResource member2 = container2.findMember(member1.getName());
-			assertNotNull(member2);
-			assertEquals(member1, member2);
-		}
-	}
-	protected void assertEquals(IResource resource1, IResource resource2) throws CoreException {
-		assertEquals(resource1.getType(), resource2.getType());
-		if (resource1.getType() == IResource.FILE)
-			assertEquals((IFile)resource1, (IFile)resource2);
-		else 
-			assertEquals((IContainer)resource1, (IContainer)resource2);
-	}
-	
-	public void testImportAndCheckout() throws TeamException, CoreException {
-		// Create a test project and import it into cvs
-		IProject project = getUniqueTestProject("testImport");
-		IResource[] result = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/a.txt" }, true);
-		importProject(project);
-		
-		// Check it out under a different name and validate that the results are the same
-		IProject copy = getWorkspace().getRoot().getProject(project.getName() + "Copy");
-		CVSProviderPlugin.getProvider().checkout(getRepository(), copy, project.getName(), null, DEFAULT_MONITOR);
-		assertValidCheckout(copy);
-		assertEquals(project, copy);
-	}
-}
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ModuleTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ModuleTest.java
deleted file mode 100644
index 6b21dac..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ModuleTest.java
+++ /dev/null
@@ -1,273 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.provider;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.internal.plugins.PluginDescriptor;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSFolder;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.RemoteFolder;
-import org.eclipse.team.internal.ccvs.core.resources.RemoteModule;
-import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
-import org.eclipse.team.tests.ccvs.core.EclipseTest;
-
-/**
- * This class tests the Command framework using simple CVS commands
- */
-public class ModuleTest extends EclipseTest {
-	
-	public static final String RESOURCE_PATH = "resources/CommandTest/";
-	
-	public ModuleTest() {
-		super(null);
-	}
-	
-	public ModuleTest(String name) {
-		super(name);
-	}
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(ModuleTest.class);
-		//return new CVSTestSetup(suite);
-		return new CVSTestSetup(new ModuleTest("testSimpleAlias"));
-	}
-	
-	private static boolean isSetUp = false;
-	
-	private static RemoteModule[] remoteModules;
-	
-	public void setUp() throws TeamException, CoreException, IOException {
-		if (isSetUp) return;
-		
-		// upload the modules definitions file
-		PluginDescriptor testPlugin = (PluginDescriptor)Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.team.tests.cvs.core");
-		String filePath = testPlugin.getLocation().concat(RESOURCE_PATH + "CVSROOT/modules");
-		URL url = null;
-		try {
-			url = new URL (filePath);
-		} catch (java.net.MalformedURLException e) {
-			assertTrue("Bad URL for " + filePath, true);
-		}
-
-		waitMsec(1000);
-
-		IProject cvsroot = checkoutProject(null, "CVSROOT", null);
-		InputStream in = url.openStream();
-		try {
-			cvsroot.getFile("modules").setContents(in, false, false, DEFAULT_MONITOR);
-		} finally {
-			in.close();
-		}
-		commitProject(cvsroot);
-		
-		uploadProject("common");
-		
-		remoteModules = RemoteModule.getRemoteModules(getRepository(), null, DEFAULT_MONITOR);
-		
-		isSetUp = true;
-	}
-	
-	protected void uploadProject(String projectName) throws TeamException, IOException {
-		// upload the modules definitions file
-		PluginDescriptor testPlugin = (PluginDescriptor)Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.team.tests.cvs.core");
-		String filePath = testPlugin.getLocation().concat(RESOURCE_PATH + projectName);
-		URL url = null;
-		try {
-			url = new URL (filePath);
-		} catch (java.net.MalformedURLException e) {
-			assertTrue("Bad URL for " + filePath, true);
-		}
-		
-		// Import the project into CVS
-		Session s = new Session(getRepository(), Session.getManagedFolder(new File(url.getPath())));
-		s.open(DEFAULT_MONITOR);
-		try {
-			Command.IMPORT.execute(s, Command.NO_GLOBAL_OPTIONS, 
-				new LocalOption[] {Command.makeArgumentOption(Command.MESSAGE_OPTION, "")},
-				new String[] { projectName, "start", "vendor"},
-				null,
-				DEFAULT_MONITOR);
-		} finally {
-			s.close();
-		}
-	}
-	
-	// XXX Temporary method of checkout (i.e. with vcm_meta
-	protected IProject checkoutProject(String projectName, CVSTag tag) throws TeamException {
-		IProject project = super.checkoutProject(getWorkspace().getRoot().getProject(projectName), null, tag);
-		ICVSFolder parent = (ICVSFolder)Session.getManagedResource(project);
-		ICVSResource vcmmeta = Session.getManagedResource(project.getFile(".vcm_meta"));
-		if ( ! vcmmeta.isManaged() && ! parent.getFolderSyncInfo().getIsStatic()) {
-			getProvider(project).add(new IResource[] {project.getFile(".vcm_meta")}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-			waitMsec(1000);
-			commitProject(project);
-		}
-		return project;
-	}
-	
-	/**
-	 * wait milliseconds to continou the execution
-	 */
-	protected static void waitMsec(int msec) {	
-		try {
-			Thread.currentThread().sleep(msec);
-		} catch(InterruptedException e) {
-			fail("wait-problem");
-		}
-	}
-
-	/*
-	 * Test the following definition
-	 * 
-	 *   # self referencing modules
-	 *   project1 project1
-	 */
-	public void testSelfReferencingModule() throws TeamException, CoreException, IOException {
-		uploadProject("project1");
-		IProject project1 = checkoutProject("project1", null);
-		IRemoteSyncElement tree = getProvider(project1).getRemoteSyncTree(project1, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertEquals(Path.EMPTY, Session.getManagedResource(project1), (ICVSResource)tree.getRemote(), false, false);
-		RemoteModule module = getRemoteModule("project1");
-		assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false);
-	}
-	
-	/*
-	 * Test the following definition
-	 * 
-	 * # checkout docs in flattened structure
-	 * docs		-d docs common/docs
-	 * macros common/macros
-	 */
-	public void testFlattenedStructure() throws TeamException, CoreException, IOException {
-		
-		IProject docs = checkoutProject("docs", null);
-		IRemoteSyncElement tree = getProvider(docs).getRemoteSyncTree(docs, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertEquals(Path.EMPTY, Session.getManagedResource(docs), (ICVSResource)tree.getRemote(), false, false);
-		RemoteModule module = getRemoteModule("docs");
-		assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false);
-		
-		IProject macros = checkoutProject("macros", null);
-		tree = getProvider(macros).getRemoteSyncTree(macros, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertEquals(Path.EMPTY, Session.getManagedResource(macros), (ICVSResource)tree.getRemote(), false, false);
-		module = getRemoteModule("macros");
-		assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false);
-
-	}
-	
-	/*
-	 * Test the following definition
-	 * 
-	 * # include docs with project
-	 * project2		project2 &docs
-	 * # only project2
-	 * project2-only project2
-	 */
-	public void testIncludeAndExcludeDocs() throws TeamException, CoreException, IOException {
-		uploadProject("project2");
-		IProject project2 = checkoutProject("project2", null);
-		IRemoteSyncElement tree = getProvider(project2).getRemoteSyncTree(project2, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertEquals(Path.EMPTY, Session.getManagedResource(project2), (ICVSResource)tree.getRemote(), false, false);
-
-		RemoteModule module = getRemoteModule("project2");
-		assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false);
-
-		project2 = checkoutProject("project2-only", null);
-		tree = getProvider(project2).getRemoteSyncTree(project2, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertEquals(Path.EMPTY, Session.getManagedResource(project2), (ICVSResource)tree.getRemote(), false, false);
-
-		module = getRemoteModule("project2-only");
-		assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false);
-
-	}
-	
-	/*
-	 * Test the following definition
-	 * 
-	 * # a use of alias
-	 * project3-src  project3/src
-	 * project3-src_file -a project3-src/file.c mc-src/file.h
-	 * project3-sub  project3/sub &project3-src_file
-	 */
-	public void testAliasForFiles() throws TeamException, CoreException, IOException {
-		uploadProject("project3");
-		IProject project3 = checkoutProject("project3-sub", null);
-		IRemoteSyncElement tree = getProvider(project3).getRemoteSyncTree(project3, CVSTag.DEFAULT, DEFAULT_MONITOR);
-//		assertEquals("Local does not match remote", Session.getManagedResource(project3), (ICVSResource)tree.getRemote(), false, false);
-
-		project3 = checkoutProject("project3-src", null);
-		tree = getProvider(project3).getRemoteSyncTree(project3, CVSTag.DEFAULT, DEFAULT_MONITOR);
-//		assertEquals("Local does not match remote", Session.getManagedResource(project3), (ICVSResource)tree.getRemote(), false, false);
-
-		project3 = checkoutProject("project3-src_file", null);
-		tree = getProvider(project3).getRemoteSyncTree(project3, CVSTag.DEFAULT, DEFAULT_MONITOR);
-//		assertEquals("Local does not match remote", Session.getManagedResource(project3), (ICVSResource)tree.getRemote(), false, false);
-	}
-	
-	/*
-	 * Test the following definition
-	 * 
-	 * # using aliases to provide packaging
-	 * project7-common -a project7/common
-	 * project7-pc -a project7-common project7/pc
-	 * project7-linux -a project7-common project7/linux
-	 */
-	public void testAliases() throws TeamException, CoreException, IOException {
-		uploadProject("project7");
-		IProject project7 = checkoutProject("project7-common", null);
-		IRemoteSyncElement tree = getProvider(project7).getRemoteSyncTree(project7, CVSTag.DEFAULT, DEFAULT_MONITOR);
-//		assertEquals("Local does not match remote", Session.getManagedResource(project7), (ICVSResource)tree.getRemote(), false, false);
-
-		project7 = checkoutProject("project7-pc", null);
-		tree = getProvider(project7).getRemoteSyncTree(project7, CVSTag.DEFAULT, DEFAULT_MONITOR);
-//		assertEquals("Local does not match remote", Session.getManagedResource(project7), (ICVSResource)tree.getRemote(), false, false);
-
-		project7 = checkoutProject("project7-linux", null);
-		tree = getProvider(project7).getRemoteSyncTree(project7, CVSTag.DEFAULT, DEFAULT_MONITOR);
-//		assertEquals("Local does not match remote", Session.getManagedResource(project7), (ICVSResource)tree.getRemote(), false, false);
-	}
-	
-
-	/*
-	 * Test the following definition
-	 * 
-	 * # simple use of module alias
-	 * project8-alias -a project8 common
-	 */
-	public void testSimpleAlias() throws TeamException, CoreException, IOException {
-		uploadProject("project8");
-		
-		// XXX Module checkout will not work yet
-		// IProject project8 = checkoutProject("project8-alias", null);
-		
-		RemoteModule module = getRemoteModule("project8-alias");
-	}
-	
-	public RemoteModule getRemoteModule(String moduleName) {
-		for (int i = 0; i < remoteModules.length; i++) {
-			RemoteModule module = remoteModules[i];
-			// XXX shouldn't be getName
-			if (module.getName().equals(moduleName))
-				return module;
-		}
-		return null;
-	}
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/RemoteResourceTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/RemoteResourceTest.java
deleted file mode 100644
index 662fc33..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/RemoteResourceTest.java
+++ /dev/null
@@ -1,269 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.provider;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.ccvs.core.CVSTeamProvider;
-import org.eclipse.team.ccvs.core.ICVSRemoteFile;
-import org.eclipse.team.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.ccvs.core.ILogEntry;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.IRemoteResource;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.internal.ccvs.core.resources.RemoteFolder;
-import org.eclipse.team.internal.ccvs.core.resources.RemoteFolderTree;
-import org.eclipse.team.internal.ccvs.core.util.RemoteFolderTreeBuilder;
-import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
-import org.eclipse.team.tests.ccvs.core.EclipseTest;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-public class RemoteResourceTest extends EclipseTest {
-
-	public RemoteResourceTest() {
-		super();
-	}
-	
-	public RemoteResourceTest(String name) {
-		super(name);
-	}
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(RemoteResourceTest.class);
-		return new CVSTestSetup(suite);
-		//return new CVSTestSetup(new RemoteResourceTest("testVersionTag"));
-	}
-	
-	protected void assertRemoteMatchesLocal(String message, RemoteFolder remote, IContainer container) throws CVSException, IOException, CoreException {
-		assertEquals(Path.EMPTY, (ICVSResource)remote, Session.getManagedFolder(container.getLocation().toFile()), false, false);
-	}
-	
-	protected void getMembers(ICVSRemoteFolder folder, boolean deep) throws TeamException {
-		IRemoteResource[] children = folder.members(DEFAULT_MONITOR);
-		if (deep) {
-			for (int i=0;i<children.length;i++) {
-				if (children[i].isContainer())
-					getMembers((ICVSRemoteFolder)children[i], deep);
-			}
-		}
-	}
-	
-	/**
-	 * RemoteFolderTreeBuilder test
-	 * 
-	 * Perform some remote additions, changes and deletions 
-	 */
-	public void testSimpleChanges() throws TeamException, CoreException, IOException {
-		
-		// Create a test project and a copy of it
-		IProject project = createProject("testRemoteTreeBuilder", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" });
-		IProject copy = checkoutCopy(project, "-copy");
-		
-		// Make some changes to the copy and commit
-		IResource[] newResources = buildResources(copy, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false);
-		IFile file = copy.getFile("changed.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null);
-		CVSTeamProvider provider = getProvider(copy);
-		provider.add(newResources, IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-		provider.delete(new IResource[] {copy.getFile("deleted.txt")}, DEFAULT_MONITOR);
-		provider.checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-		
-		// Build the remote tree from the original and ensure it matches the copy
-		RemoteFolderTree tree = RemoteFolderTreeBuilder.buildRemoteTree(getRepository(), project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertRemoteMatchesLocal("testSimpleChanges", tree, copy);
-	}
-	
-	/**
-	 * RemoteFolderTreeBuilder test
-	 * 
-	 * Create a remote tree from a local workspace with no remote changes.
-	 */
-	public void testNoRemoteChanges() throws TeamException, CoreException, IOException {
-		IProject project = createProject("testNoRemoteChanges", new String[] { "file1.txt", "file2.txt", "folder1/a.txt", "folder2/folder3/b.txt"});
-		RemoteFolderTree tree = RemoteFolderTreeBuilder.buildRemoteTree(getRepository(), project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertRemoteMatchesLocal("testNoRemoteChanges", tree, project);
-	}
-	
-	/**
-	 * RemoteFolderTreeBuilder test
-	 * 
-	 * Create a base remote tree from a local workspace with no remote changes.
-	 */
-	public void testGetBase() throws TeamException, CoreException, IOException {
-		IProject project = createProject("testGetBase", new String[] { "file1.txt", "file2.txt", "folder1/a.txt", "folder2/folder3/b.txt"});
-		RemoteFolderTree tree = RemoteFolderTreeBuilder.buildBaseTree(getRepository(), Session.getManagedFolder(project.getLocation().toFile()), CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertRemoteMatchesLocal("testGetBase", tree, project);
-	}
-	
-	/**
-	 * RemoteFolderTreeBuilder test
-	 * 
-	 * Add a nested folder structure remotely and build the remote tree
-	 * from the root.
-	 */
-	public void testFolderAddition() throws TeamException, CoreException, IOException {
-		
-		// Create a test project
-		IProject project = createProject("testFolderAddition", new String[] { "file1.txt", "file2.txt", "folder1/", "folder1/a.txt"});
-		
-		// Checkout and modify a copy
-		IProject copy = checkoutCopy(project, "-copy");
-		addResources(copy, new String[] { "folder2/folder3/b.txt" }, false);
-		getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-
-		// Build the remote tree from the project
-		RemoteFolderTree tree = RemoteFolderTreeBuilder.buildRemoteTree(getRepository(), project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertRemoteMatchesLocal("testFolderAddition", tree, copy);
-	}
-	
-	/**
-	 * RemoteFolderTreeBuilder test
-	 * 
-	 * Add a nested folder structure remotely and build the remote tree
-	 * from a child
-	 */
-	public void testNonRootBuild() throws CoreException, TeamException, IOException {
-		
-		// Create a test project
-		IProject project = createProject("testNonRootBuild", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/a.txt", "folder2/folder3/", "folder2/folder3/b.txt", "folder2/folder3/c.txt"});
-
-		// Checkout and modify a copy
-		IProject copy = checkoutCopy(project, "-copy");
-		IFile file = copy.getFile("folder2/folder3/c.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null);
-		addResources(copy, new String[] { "folder2/folder3/add.txt" }, false);
-		getProvider(copy).delete(new IResource[] {copy.getFile("folder2/folder3/b.txt")}, DEFAULT_MONITOR);
-		getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-
-		// Build the remote tree from the project
-		RemoteFolderTree tree = RemoteFolderTreeBuilder.buildRemoteTree(getRepository(), project.getFolder("folder2"), CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertRemoteMatchesLocal("testNonRootBuild", tree, copy.getFolder("folder2"));
-	}
-	
-	/**
-	 * RemoteResource test
-	 * 
-	 */
-	public void testGetRemoteResource() throws CoreException, TeamException, IOException {
-		IProject project = createProject("testGetRemoteResource", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/a.txt", "folder2/folder3/", "folder2/folder3/b.txt", "folder2/folder3/c.txt"});
-		ICVSRemoteResource file = getProvider(project).getRemoteResource(project.getFile("folder1/a.txt"));
-		assertTrue("File should exist remotely", file.exists());
-		assertEquals(Path.EMPTY, (ICVSResource)file, (ICVSResource)Session.getManagedFile(project.getFile("folder1/a.txt").getLocation().toFile()), false, false);
-		ICVSRemoteResource folder = getProvider(project).getRemoteResource(project.getFolder("folder2/folder3/"));
-		getMembers((ICVSRemoteFolder)folder, true);
-		assertTrue("Folder should exist remotely", folder.exists());
-		// XXX this didn't work right. I'll need to check into it later
-//		assertEquals("Remote folder should match local folder", (ICVSResource)folder, (ICVSResource)Client.getManagedFolder(project.getFolder("folder2/folder3/").getLocation().toFile()));
-	}
-	
-	/*
-	 * Test that the fetch of a tagged tree matches what is checked out for that tag
-	 */
-	public void testVersionTag() throws TeamException, CoreException, IOException {
-		// Create a test project and version it
-		CVSTag v1Tag = new CVSTag("v1", CVSTag.VERSION);
-		IProject project = createProject("testVersionTag", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-		getProvider(project).tag(new IResource[] {project}, IResource.DEPTH_INFINITE, v1Tag, DEFAULT_MONITOR);
-
-		// Make some changes, additions (including folders) and deletions and commit
-		IFile file = project.getFile("folder1/a.txt");
-		file.setContents(getRandomContents(), false, false, null);
-		addResources(project, new String[] { "folder2/folder3/add.txt" }, false);
-		deleteResources(project, new String[] {"folder1/b.txt"}, false);
-		getProvider(project).checkin(new IResource[] {project}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-		
-		// Fetch the remote tree for the version
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, v1Tag, DEFAULT_MONITOR);
-
-		// Check out the project version
-		project = checkoutCopy(project, v1Tag);
-		
-		// Compare the two
-		assertEquals(Path.EMPTY, (ICVSResource)tree.getRemote(), (ICVSResource)Session.getManagedResource(project), false, false);
-	}
-	
-	/*
-	 * Test the fetching of the contents of an empty file
-	 */
-	public void testEmptyFile() throws TeamException, CoreException, IOException {
-	 	
-	 	// Create a project with an empty file
-		IProject project = createProject("testEmptyFile", new String[] { "file.txt"});
-		IFile file = project.getFile("file.txt");
-		JUnitTestCase.waitMsec(1500);
-		file.setContents(new ByteArrayInputStream(new byte[0]), false, false, DEFAULT_MONITOR);
-		commitResources(project, new String[] {"file.txt"});
-		
-		ICVSRemoteResource remote = getProvider(project).getRemoteResource(file);
-		InputStream in = remote.getContents(DEFAULT_MONITOR);
-		int count = 0;
-		while(in.read() != -1) {
-			count++;
-		}
-		assertTrue("Remote file should be empty", count==0);
-	 }
-	 
-	 /*
-	  * Test the fetching of the contents from multiple remote revisions of a file
-	  */
-	 public void testFileRevisions() throws TeamException, CoreException, IOException {
-	 	
-	 	// Create a project with an empty file
-		IProject project = createProject("testEmptyFile", new String[] { "file.txt"});
-		IFile file = project.getFile("file.txt");
-		JUnitTestCase.waitMsec(1500);
-		file.setContents(new ByteArrayInputStream("hi there".getBytes()), false, false, DEFAULT_MONITOR);
-		commitResources(project, new String[] {"file.txt"});
-		JUnitTestCase.waitMsec(1500);
-		file.setContents(new ByteArrayInputStream("bye there".getBytes()), false, false, DEFAULT_MONITOR);
-		commitResources(project, new String[] {"file.txt"});
-
-		ICVSRemoteFile remote = (ICVSRemoteFile)getProvider(project).getRemoteResource(file);
-		ILogEntry[] entries = remote.getLogEntries(DEFAULT_MONITOR);
-		for (int i=0;i<entries.length;i++) {
-			InputStream in = entries[i].getRemoteFile().getContents(DEFAULT_MONITOR);
-			
-			if (entries[i].getRevision().equals("1.2")) {
-				int count = 0;
-				byte[] buffer = new byte[1024];
-				int c;
-				while((c = in.read()) != -1) {
-					buffer[count] = (byte)c;
-					count++;
-				}
-				String contents = new String(buffer, 0, count);
-				assertEquals("the contents of revision 1.2 are not equal", contents, "hi there");
-			} else if (entries[i].getRevision().equals("1.3")) {
-				int count = 0;
-				byte[] buffer = new byte[1024];
-				int c;
-				while((c = in.read()) != -1) {
-					buffer[count] = (byte)c;
-					count++;
-				}
-				String contents = new String(buffer, 0, count);
-				assertEquals("the contents of revision 1.3 are not equal", contents, "bye there");
-			}
-		}
-		
-	 }
-}
-
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/SyncElementTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/SyncElementTest.java
deleted file mode 100644
index 11feb1c..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/SyncElementTest.java
+++ /dev/null
@@ -1,780 +0,0 @@
-package org.eclipse.team.tests.ccvs.core.provider;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.team.ccvs.core.CVSTag;
-import org.eclipse.team.core.TeamException;
-import org.eclipse.team.core.sync.ILocalSyncElement;
-import org.eclipse.team.core.sync.IRemoteResource;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.core.client.Command;
-import org.eclipse.team.internal.ccvs.core.client.Session;
-import org.eclipse.team.internal.ccvs.core.client.Update;
-import org.eclipse.team.internal.ccvs.core.resources.CVSRemoteSyncElement;
-import org.eclipse.team.internal.ccvs.core.resources.ICVSResource;
-import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
-import org.eclipse.team.tests.ccvs.core.EclipseTest;
-import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
-
-/**
- * @version 	1.0
- * @author 	${user}
- */
-public class SyncElementTest extends EclipseTest {
-
-	/**
-	 * Constructor for SyncElementTest.
-	 */
-	public SyncElementTest() {
-		super();
-	}
-
-	/**
-	 * Constructor for SyncElementTest.
-	 * @param name
-	 */
-	public SyncElementTest(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(SyncElementTest.class);
-		return new CVSTestSetup(suite);
-		//return new CVSTestSetup(new SyncElementTest("testDeletionConflicts"));
-	}
-	
-	/*
-	 * Get the child in the sync tree
-	 */
-	protected ILocalSyncElement getChild(ILocalSyncElement tree, IPath path) throws TeamException {
-		if (path.segmentCount() == 0)
-			return tree;
-		ILocalSyncElement[] children = tree.members(DEFAULT_MONITOR);
-		for (int i=0;i<children.length;i++) {
-			if (children[i].getName().equals(path.segment(0)))
-				return getChild(children[i], path.removeFirstSegments(1));
-		}
-		assertTrue("Child " + path.toString() + " does not exist", false);
-		return null;
-	}
-	
-	/*
-	 * Assert that the specified resources in the tree have the specified sync kind
-	 * Ignore conflict types if they are not specified in the assert statement
-	 */
-	public void assertSyncEquals(String message, ILocalSyncElement tree, String[] resources, int[] syncKinds, int granularity) throws TeamException {
-		assertTrue(resources.length == syncKinds.length);
-		for (int i=0;i<resources.length;i++) {
-			int conflictTypeMask = 0x1F; // ignore manual and auto merge sync types for now.
-			int kind = getChild(tree, new Path(resources[i])).getSyncKind(granularity, DEFAULT_MONITOR) & conflictTypeMask;
-			int kindOther = syncKinds[i] & conflictTypeMask;
-			assertTrue(message + ": improper sync state for " + resources[i], kind == kindOther);
-		}
-	}
-
-	public void assertSyncEquals(String message, ILocalSyncElement tree, String[] resources, int[] syncKinds) throws TeamException {
-		assertSyncEquals(message, tree, resources, syncKinds, ILocalSyncElement.GRANULARITY_TIMESTAMP);
-	}
-	
-	/*
-	 * Update the sync info of the resources so they can be committed
-	 */
-	public void makeOutgoing(IRemoteSyncElement tree, String[] hierarchy) throws CoreException, TeamException {
-		for (int i=0;i<hierarchy.length;i++) {
-			((CVSRemoteSyncElement)getChild(tree, new Path(hierarchy[i]))).makeOutgoing(DEFAULT_MONITOR);
-		}
-	}
-	
-	public void makeIncoming(IRemoteSyncElement tree, String[] hierarchy) throws CoreException, TeamException {
-		for (int i=0;i<hierarchy.length;i++) {
-			((CVSRemoteSyncElement)getChild(tree, new Path(hierarchy[i]))).makeIncoming(DEFAULT_MONITOR);
-		}
-	}
-	
-	public void makeInSync(IRemoteSyncElement tree, String[] hierarchy) throws CoreException, TeamException {
-		for (int i=0;i<hierarchy.length;i++) {
-			((CVSRemoteSyncElement)getChild(tree, new Path(hierarchy[i]))).makeInSync(DEFAULT_MONITOR);
-		}
-	}
-	/* 
-	 * Assert that the named resources have no local resource or sync info
-	 */
-	public void assertDeleted(String message, IRemoteSyncElement tree, String[] resources) throws CoreException, TeamException {
-		for (int i=0;i<resources.length;i++) {
-			try {
-				getChild(tree, new Path(resources[i]));
-				assertTrue(message + ": resource " + resources[i] + " still exists in some form", false);
-			} catch (AssertionFailedError e) {
-				// The getChild should assert because the child doesn't exists
-			}
-		}
-	}
-	
-	/*
-	 * Perform a simple test that checks for the different types of incoming changes
-	 */
-	public void testIncomingChanges() throws TeamException, CoreException, IOException {
-		// Create a test project
-		IProject project = createProject("testIncomingChanges", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-		
-		// Checkout and modify a copy
-		IProject copy = checkoutCopy(project, "-copy");
-		IFile file = copy.getFile("folder1/a.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null);
-		addResources(copy, new String[] { "folder2/folder3/add.txt" }, false);
-		deleteResources(copy, new String[] {"folder1/b.txt"}, false);
-		getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testIncomingChanges", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.DELETION,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION});
-				
-		// Catch up to the incoming changes
-		// XXX SPECIAL CASE: Update must be run on a resource whose parent is managed at the time of the update.
-		makeInSync(tree, new String[] {"folder2/", "folder2/folder3/"});
-		updateResources(project, new String[] {"folder1/a.txt", "folder1/b.txt", /* "folder2/", "folder2/folder3/", */ "folder2/folder3/add.txt"}, false);
-		
-		// Verify that we are in sync (except for "folder1/b.txt", which was deleted)
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testIncomingChanges", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC});
-		
-		// Ensure "folder1/b.txt" was deleted
-		assertDeleted("testIncomingChanges", tree, new String[] {"folder1/b.txt"});
-				
-		// Verify that the copy equals the original
-		assertEquals(project, copy);
-	}
-	
-	/*
-	 * Perform a simple test that checks for the different types of outgoing changes
-	 */
-	public void testOutgoingChanges() throws TeamException, CoreException {
-		// Create a test project (which commits it as well)
-		IProject project = createProject("testIncomingChanges", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-		
-		// Make some modifications
-		IFile file = project.getFile("folder1/a.txt");
-		file.setContents(getRandomContents(), false, false, null);
-		addResources(project, new String[] { "folder2/folder3/add.txt" }, false);
-		deleteResources(project, new String[] {"folder1/b.txt"}, false);
-
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testOutgoingChanges", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.DELETION,
-				IRemoteSyncElement.IN_SYNC, /* adding a folder creates it remotely */
-				IRemoteSyncElement.IN_SYNC, /* adding a folder creates it remotely */
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION});
-				
-		// Commit the changes
-		commitResources(project, new String[] {"folder1/a.txt", "folder1/b.txt", "folder2/folder3/add.txt"});
-		
-		// Ensure we're in sync
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testOutgoingChanges", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC});
-				
-		// Ensure deleted resource "folder1/b.txt" no longer exists
-		assertDeleted("testOutgoingChanges", tree, new String[] {"folder1/b.txt"});
-	}
-	
-	/*
-	 * Perform a test that checks for outgoing changes that are CVS questionables (no add or remove)
-	 */
-	public void testOutgoingQuestionables() throws TeamException, CoreException {
-		// Create a test project (which commits it as well)
-		IProject project = createProject("testIncomingChanges", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-		
-		// Make some modifications
-		buildResources(project, new String[] {"folder2/folder3/add.txt"}, false);
-		IFile file = project.getFile("folder1/b.txt");
-		file.delete(true, DEFAULT_MONITOR);
-
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testOutgoingQuestionables", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.DELETION,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION});
-				
-		// Update the resource sync info so the resources can be commited
-		// Merge won't work for folders so we'll add them explicilty!!!
-		addResources(project, new String[] {"folder2/", "folder2/folder3/"}, false);
-		makeOutgoing(tree, new String[] {"folder1/b.txt", "folder2/folder3/add.txt"});
-		commitResources(project, new String[] {"folder1/b.txt", "folder2/folder3/add.txt"});
-		
-		// Ensure we are in sync
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testOutgoingQuestionables", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC});
-				
-		// Ensure "folder1/b.txt" was deleted
-		assertDeleted("testOutgoingQuestionables", tree, new String[] {"folder1/b.txt"});
-	}
-	
-	/*
-	 * Test simple file conflicts
-	 */
-	public void testFileConflict() throws TeamException, CoreException, IOException {
-		// Create a test project (which commits it as well)
-		IProject project = createProject("testFileConflict", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-		
-		// Checkout a copy and make some modifications
-		IProject copy = checkoutCopy(project, "-copy");
-		IFile file = copy.getFile("file1.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		appendText(file, "prefix\n", true);
-		file = copy.getFile("folder1/a.txt");
-		file.setContents(getRandomContents(), false, false, null);
-		getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-
-		// Make the same modifications to the original (We need to test both M and C!!!)
-		file = project.getFile("file1.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		appendText(file, "\npostfix", false); // This will test merges (M)
-		file = project.getFile("folder1/a.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null); // This will test conflicts (C)
-
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testFileConflict", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, 
-			new int[] {
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE });
-		
-		// Catch up to the file1.txt conflict using UPDATE with ignoreLocalChanges
-		getProvider(project).update(new IResource[] {project.getFile("file1.txt")}, 
-												 new Command.LocalOption[] {Update.IGNORE_LOCAL_CHANGES, Command.DO_NOT_RECURSE}, 
-												 null, null, DEFAULT_MONITOR);
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testFileConflict", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE });
-				
-		// Release the folder1/a.txt conflict by merging and then committing
-		makeOutgoing(tree, new String[] {"folder1/a.txt"});
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testFileConflict", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE });
-		getProvider(project).checkin(new IResource[] {project.getFile("folder1/a.txt")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testFileConflict", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC });
-	}
-	
-	/*
-	 * Test conflicts involving additions
-	 */
-	public void testAdditionConflicts() throws TeamException, CoreException {
-		
-		// CASE 1: The user adds (using CVS add) a remotely added file
-		//     (a) catchup is simply get?
-		//     (b) release must do a merge
-		// CASE 2: The user adds (but not using cvs add) a remotely added file
-		//     (a) catchup is simply get?
-		//     (b) release must do a merge
-		// CASE 3: The user adds a remotely added then deleted file
-		//     catchup is not applicable
-		//     release is normal
-		
-		// Create a test project (which commits it as well) and add an uncommited resource
-		IProject project = createProject("testAdditionConflicts", new String[] { "file.txt"});
-		addResources(project, new String[] { "add1a.txt", "add1b.txt" }, false);
-		addResources(project, new String[] { "add3.txt" }, false);
-		buildResources(project, new String[] {"add2a.txt", "add2b.txt"}, false);
-		
-		// Checkout a copy, add the same resource and commit
-		IProject copy = checkoutCopy(project, "-copy");
-		addResources(copy, new String[] { "add1a.txt", "add1b.txt", "add2a.txt", "add2b.txt", "add3.txt"}, true);
-		deleteResources(copy, new String[] { "add3.txt"}, true);
-
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testAdditionConflicts", tree, 
-			new String[] { "file.txt", "add1a.txt", "add1b.txt", "add2a.txt", "add2b.txt", "add3.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION });
-				
-		// Release the conflict cases (MERGE is not required for add3.txt but we do it anyway to ensure it doesn't cause problems)
-		makeOutgoing(tree, new String[]{"add1b.txt", "add2b.txt", "add3.txt"});
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testAdditionConflicts", tree, 
-			new String[] { "file.txt", "add1b.txt", "add2b.txt", "add3.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION });
-		getProvider(project).checkin(new IResource[] {project.getFile("add1b.txt"), project.getFile("add2b.txt"), project.getFile("add3.txt")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR);
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testAdditionConflicts", tree, 
-			new String[] { "file.txt", "add1b.txt", "add2b.txt", "add3.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC });
-				
-		// Catch-up to conflicting cases using UPDATE
-		// XXX SPECIAL CASE: We need to unmanage the resources before getting the remote
-		makeIncoming(tree, new String[] {"add1a.txt"});
-		getProvider(project).update(new IResource[] {project.getFile("add1a.txt"), project.getFile("add2a.txt")}, 
-												 new Command.LocalOption[] {Command.DO_NOT_RECURSE}, 
-												 null, null, DEFAULT_MONITOR);
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testAdditionConflicts", tree, 
-			new String[] { "add1a.txt", "add2a.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC });
-	}
-	
-	/*
-	 * Test conflicts involving deletions
-	 */
-	public void testDeletionConflicts() throws TeamException, CoreException {
-		
-		// CASE 1: The user deletes a remotely modified file
-		//    (a) catchup must do an update
-		//    (b) release must do a merge
-		// CASE 2: The user deletes (and removes) a remotely modified file	
-		//    (a) catchup must do an unmanage and update
-		//    (b) release must do a merge
-		// CASE 3: The user modified a remotely deleted file
-		//    (a) catchup must do an unmanage and local delete
-		//    (b) release must do a merge
-		// CASE 4: The user deletes a remotely deleted file
-		//    (a) catchup can update (or unmanage?)
-		//    (b) release must unmanage
-		// CASE 5: The user deletes (and removes) a remotely deleted file
-		//    (a) catchup can update (or unmanage?)
-		//    (b) release must unmanage
-		
-		// Perform the test case for case A first
-		
-		// Create a test project (which commits it as well) and delete the resource without committing
-		IProject project = createProject("testDeletionConflictsA", new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"});
-		IFile file = project.getFile("delete1.txt");
-		file.delete(false, DEFAULT_MONITOR);
-		deleteResources(project, new String[] {"delete2.txt"}, false);
-		file = project.getFile("delete3.txt");
-		file.setContents(getRandomContents(), false, false, null);
-		file = project.getFile("delete4.txt");
-		file.delete(false, DEFAULT_MONITOR);
-		deleteResources(project, new String[] {"delete5.txt"}, false);
-		
-		// Checkout a copy and commit the deletion
-		IProject copy = checkoutCopy(project, "-copy");
-		file = copy.getFile("delete1.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null);
-		file = copy.getFile("delete2.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null);
-		deleteResources(copy, new String[] {"delete3.txt", "delete4.txt", "delete5.txt"}, false);
-		getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-
-		
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testDeletionConflictsA", tree, 
-			new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"}, 
-			new int[] {
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.DELETION | IRemoteSyncElement.PSEUDO_CONFLICT,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.DELETION | IRemoteSyncElement.PSEUDO_CONFLICT });
-				
-		// Catch up to remote changes.
-		// XXX SPECIAL CASE: delete2.txt must be unmanaged before the catch-up
-		makeIncoming(tree, new String[] {"delete2.txt"});
-		// XXX SPECIAL CASE: delete3.txt must ignore local changes (and -C doesn't work so we'll unmanage and delete the local resource)
-		makeIncoming(tree, new String[] {"delete3.txt"});
-		project.getFile("delete3.txt").delete(false, DEFAULT_MONITOR);
-		updateResources(project, new String[] {"delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"}, true);
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testDeletionConflictsA", tree, 
-			new String[] { "delete1.txt", "delete2.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC });
-		assertDeleted("testDeletionConflictsA", tree, new String[] {"delete3.txt", "delete4.txt", "delete5.txt"});
-		
-		// Now redo the test case for case B
-		
-		// Create a test project (which commits it as well) and delete the resource without committing
-		project = createProject("testDeletionConflictsB", new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"});
-		file = project.getFile("delete1.txt");
-		file.delete(false, DEFAULT_MONITOR);
-		deleteResources(project, new String[] {"delete2.txt"}, false);
-		file = project.getFile("delete3.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null);
-		file = project.getFile("delete4.txt");
-		file.delete(false, DEFAULT_MONITOR);
-		deleteResources(project, new String[] {"delete5.txt"}, false);
-		
-		// Checkout a copy and commit the deletion
-		copy = checkoutCopy(project, "-copy");
-		file = copy.getFile("delete1.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null);
-		file = copy.getFile("delete2.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null);
-		deleteResources(copy, new String[] {"delete3.txt", "delete4.txt", "delete5.txt"}, false);
-		getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-
-		
-		// Get the sync tree for the project
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testDeletionConflictsB", tree, 
-			new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"}, 
-			new int[] {
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.DELETION | IRemoteSyncElement.PSEUDO_CONFLICT,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.DELETION | IRemoteSyncElement.PSEUDO_CONFLICT });
-
-		// Release the resources
-		// XXX SPECIAL CASE: "delete1.txt", "delete2.txt" and "delete3.txt" must be merged
-		makeOutgoing(tree, new String[]{"delete1.txt", "delete2.txt", "delete3.txt"});
-		// XXX SPECIAL CASE: "delete4.txt" and "delete5.txt" must be unmanaged
-		unmanageResources(project, new String[]{"delete4.txt", "delete5.txt"});
-		commitResources(project, new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"});
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testDeletionConflictsB", tree, 
-			new String[] { "delete3.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC });
-		assertDeleted("testDeletionConflictsB", tree, new String[] {"delete1.txt", "delete2.txt", "delete4.txt", "delete5.txt"});
-	}
-	
-	/*
-	 * Test the creation and sync of an empty local project that has remote contents
-	 */
-	public void testSyncOnEmptyProject() throws TeamException {
-	}
-	
-	/*
-	 * Test syncing on a folder that has been deleted from the server
-	 */
-	public void testSyncOnDeletedFolder() throws TeamException {
-	}
-	
-	/*
-	 * Test syncing on a folder that is empty on the server and has been pruned, then added locally
-	 */
-	public void testSyncOnPrunedFolder() throws TeamException {
-	}
-	
-	/*
-	 * Test sync involving pruned directories
-	 */
-	public void testSyncWithPruning() throws TeamException {
-	}
-	
-	/*
-	 * Test a conflict with an incomming foler addition and an unmanaqged lcoal folder
-	 */
-	public void testFolderConflict()  throws TeamException, CoreException {
-		
-		// Create a test project (which commits it as well) and delete the resource without committing
-		IProject project = createProject("testFolderConflict", new String[] { "file.txt"});
-		
-		// Checkout a copy and add some folders
-		IProject copy = checkoutCopy(project, "-copy");
-		addResources(copy, new String[] {"folder1/file.txt", "folder2/file.txt"}, true);
-		
-		// Add a folder to the original project (but not using cvs)
-		IResource[] resources = buildResources(project, new String[] {"folder1/"});
-		((IFolder)resources[0]).create(false, true, DEFAULT_MONITOR);
-		
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testFolderConflict", tree, 
-			new String[] { "file.txt", "folder1/", "folder1/file.txt", "folder2/", "folder2/file.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION});
-				
-		makeInSync(tree, new String[] {"folder1/"});
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testFolderConflict", tree, 
-			new String[] { "file.txt", "folder1/", "folder1/file.txt", "folder2/", "folder2/file.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION});
-	}
-	 
-	/*
-	 * Test that a deleted file can still be deleted through the team provider
-	 */
-	public void testOutgoingDeletion() throws TeamException, CoreException {
-		
-		// Create a test project (which commits it as well)
-		IProject project = createProject("testOutgoingDeletion", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-		
-		// Delete a file
-		IFile file = project.getFile("folder1/b.txt");
-		file.delete(true, DEFAULT_MONITOR);
-
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testOutgoingDeletion", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.OUTGOING | IRemoteSyncElement.DELETION});
-				
-		// Catch up to the deletion by updating
-		getProvider(file).update(new IResource[] {file}, new Command.LocalOption[] {Command.DO_NOT_RECURSE}, null, null, DEFAULT_MONITOR);
-		
-		// Get the sync tree again for the project and ensure others aren't effected
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testOutgoingDeletion", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC});
-				
-		// Assert that deletion no longer appears in remote tree
-		assertDeleted("testOutgoingDeletion", tree, new String[] {"folder1/b.txt"});
-	}
-	
-	/*
-	 * Test catching up to an incoming addition
-	 */
-	public void testIncomingAddition() throws TeamException, CoreException {
-		// Create a test project
-		IProject project = createProject("testIncomingAddition", new String[] { "file1.txt", "folder1/", "folder1/a.txt"});
-		
-		// Checkout and modify a copy
-		IProject copy = checkoutCopy(project, "-copy");
-		addResources(copy, new String[] { "folder1/add.txt" }, true);
-
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testIncomingAddition", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/add.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION});
-		
-		// Get the resource from the tree
-		ILocalSyncElement element = getChild(tree, new Path("folder1/add.txt"));
-		
-		// Catch up to the addition by updating
-		getProvider(project).update(new IResource[] {element.getLocal()}, new Command.LocalOption[] {Command.DO_NOT_RECURSE}, 
-												 null, null, DEFAULT_MONITOR);
-		
-		// Get the sync tree again for the project and ensure the added resource is in sync
-		tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testIncomingAddition", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/add.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC});
-	}
-	
-	/* 
-	 * Test changes using a granularity of contents
-	 */
-	 public void testGranularityContents() throws TeamException, CoreException, IOException {
-	 	// Create a test project (which commits it as well)
-		IProject project = createProject("testGranularityContents", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-		
-		// Checkout a copy and make some modifications
-		IProject copy = checkoutCopy(project, "-copy");
-		IFile file = copy.getFile("file1.txt");
-		appendText(file, "", true);
-		file = copy.getFile("folder1/a.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(getRandomContents(), false, false, null);
-		getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-
-		// Make the same modifications to the original
-		file = project.getFile("file1.txt");
-		appendText(file, "", false);
-		file = project.getFile("folder1/a.txt");
-		JUnitTestCase.waitMsec(1500); // Wait so that timestamp of modified file differs from original
-		file.setContents(new ByteArrayInputStream("unique text".getBytes()), false, false, null);
-
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertSyncEquals("testGranularityContents", tree, 
-			new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, 
-			new int[] {
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.IN_SYNC,
-				IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE },
-			IRemoteSyncElement.GRANULARITY_CONTENTS);
-	 }
-	 
-	 public void testGetBase() throws TeamException, CoreException, IOException {
-		// Create a test project (which commits it as well)
-		IProject project = createProject("testIncomingChanges", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-		
-		// Checkout and modify a copy
-		IProject copy = checkoutCopy(project, "-copy");
-		
-		// Make some modifications
-		IFile file = project.getFile("folder1/a.txt");
-		file.setContents(getRandomContents(), false, false, null);
-		addResources(project, new String[] { "folder1/add.txt" }, false);
-		deleteResources(project, new String[] {"folder1/b.txt"}, false);
-		
-		// Get the sync tree for the project
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR);
-		assertEquals(Path.EMPTY, (ICVSResource)tree.getBase(), Session.getManagedResource(copy), false, false);
-
-	 }
-	 
-	 public void testSimpleMerge() throws TeamException, CoreException, IOException {
-		// Create a test project (which commits it as well)
-		IProject project = createProject("testSimpleMerge", new String[] { "file1.txt", "file2.txt", "file3.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-	
-		// Checkout and modify a copy
-		IProject copy = checkoutCopy(project, "-copy");
-		copy.refreshLocal(IResource.DEPTH_INFINITE, DEFAULT_MONITOR);
-		
-		getProvider(project).tag(new IResource[] {project}, IResource.DEPTH_INFINITE, new CVSTag("v1", CVSTag.VERSION), DEFAULT_MONITOR);
-		getProvider(project).tag(new IResource[] {project}, IResource.DEPTH_INFINITE, new CVSTag("branch1", CVSTag.BRANCH), DEFAULT_MONITOR);
-		
-		getProvider(copy).update(new IResource[] {copy}, Command.NO_LOCAL_OPTIONS, new CVSTag("branch1", CVSTag.BRANCH), null, DEFAULT_MONITOR);
-		
-		// make changes on the branch		
-		addResources(copy, new String[] {"addition.txt", "folderAddition/", "folderAddition/new.txt"}, true);
-		deleteResources(copy, new String[] {"folder1/b.txt"}, true);
-		changeResources(copy, new String[] {"file1.txt", "file2.txt"}, true);
-		
-		// make change to workspace working on HEAD
-		changeResources(project, new String[] {"file2.txt"}, false);
-		changeResources(project, new String[] {"file3.txt"}, true);
-		
-		IRemoteResource base = getProvider(project).getRemoteTree(project, new CVSTag("v1", CVSTag.VERSION), DEFAULT_MONITOR);
-		IRemoteResource remote = getProvider(project).getRemoteTree(project, new CVSTag("branch1", CVSTag.BRANCH), DEFAULT_MONITOR);
-		IRemoteSyncElement tree = new CVSRemoteSyncElement(false, project, base, remote);
-		
-		// watch for empty directories and the prune option!!!
-		assertSyncEquals("testSimpleMerge sync check", tree,
-						 new String[] { "addition.txt", "folderAddition/", "folderAddition/new.txt", 
-						 				 "folder1/b.txt", "file1.txt", "file2.txt", "file3.txt"},
-						 new int[] { IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION,
-						 			  IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION,
-						 			  IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION,
-						 			  IRemoteSyncElement.INCOMING | IRemoteSyncElement.DELETION,
-						 			  IRemoteSyncElement.INCOMING | IRemoteSyncElement.CHANGE,
-						 			  IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE,
-						 			  IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE });				 			  					 			  
-	 }
-	 
-	 public void testSyncOnBranch() throws TeamException, CoreException, IOException {
-	 	
-	 	// Create a test project and a branch
-		IProject project = createProject("testSyncOnBranch", new String[] { "file1.txt", "file2.txt", "file3.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"});
-		CVSTag branch = new CVSTag("branch1", CVSTag.BRANCH);
-		getProvider(project).tag(new IResource[] {project}, IResource.DEPTH_INFINITE, branch, DEFAULT_MONITOR);
-		getProvider(project).update(new IResource[] {project}, Command.NO_LOCAL_OPTIONS, branch, null, DEFAULT_MONITOR);
-
-		// Checkout and modify a copy
-		IProject copy = checkoutCopy(project, branch);
-		addResources(copy, new String[] {"addition.txt", "folderAddition/", "folderAddition/new.txt"}, true);
-		deleteResources(copy, new String[] {"folder1/b.txt"}, true);
-		changeResources(copy, new String[] {"file1.txt", "file2.txt"}, true);
-		
-		// Sync on the original and assert the result equals the copy
-		IRemoteSyncElement tree = getProvider(project).getRemoteSyncTree(project, null, DEFAULT_MONITOR);
-		assertEquals(Path.EMPTY, (ICVSResource)tree.getRemote(), Session.getManagedResource(copy), false, false);
-	 }
-}
\ No newline at end of file
diff --git a/tests/org.eclipse.team.tests.cvs.core/test.xml b/tests/org.eclipse.team.tests.cvs.core/test.xml
deleted file mode 100644
index fa33bba..0000000
--- a/tests/org.eclipse.team.tests.cvs.core/test.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="CVS Automated Tests" default="run" basedir=".">
-
-  <!-- The property ${eclipse-home} should be passed into this script -->
-  
-  <!-- sets the properties eclipse-home, and library-file -->
-  <property name="eclipse-home" value="${basedir}/../../"/>
-  <property name="library-file" value="${eclipse-home}/fragments/org.eclipse.test/library.xml"/>
-
-  <!-- get the repository.properties which identify the cvs test repository -->
-  <property name="team-home" value="${eclipse-home}/plugins/org.eclipse.team.tests.cvs.core"/>
-  <property file="${team-home}/repository.properties"/>
-
-  <!-- This target holds all initialization code that needs to be done for -->
-  <!-- all tests that are to be run. Initialization for individual tests -->
-  <!-- should be done within the body of the suite target. -->
-  <target name="init">
-    <tstamp/>
-  </target>
-
-  <!-- This target defines the tests that need to be run. -->
-  <target name="suite">
-    <property name="location" value="${eclipse-home}/cvs_sniff_folder"/>
-    <delete dir="${location}" quiet="true"/>
-
-    <!-- Session Test ** CVS Provider ** -->
-    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="vmargs" value="-Declipse.cvs.properties=${team-home}/repository.properties"/>
-      <property name="data-dir" value="${location}"/>
-      <property name="plugin-name" value="org.eclipse.team.tests.cvs.core"/>
-      <property name="classname" value="org.eclipse.team.tests.ccvs.core.provider.AllTests"/>
-    </ant>
-    
-    <!-- Session Test ** CVS Resources ** -->
-    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="vmargs" value="-Declipse.cvs.properties=${team-home}/repository.properties"/>
-      <property name="data-dir" value="${location}"/>
-      <property name="plugin-name" value="org.eclipse.team.tests.cvs.core"/>
-      <property name="classname" value="org.eclipse.team.tests.ccvs.core.cvsresources.AllTests"/>
-    </ant>
-
-  </target>
-  
-  <!-- This target holds code to cleanup the testing environment after the tests -->
-  <!-- have been run. You can use this to delete temporary files that are created. -->
-  <target name="cleanup">
-  </target>
-
-  <!-- This target runs the test suite. Any actions that need to happen after all -->
-  <!-- the tests have been run should go here. -->
-  <target name="run" depends="init,suite,cleanup">
-    <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="includes" value="org*.xml"/>
-      <property name="output-file" value="cvs-tests-summary.xml"/>
-    </ant>
-  </target>
-
-</project>